Rumah  >  Soal Jawab  >  teks badan

《flask web 开发》一书,数据库中多对多关系的实现问题?

问题原型是,现在要实现用户之间的互相能够关注的功能,反应到数据库中是一个多对多的关系,书里引入了第三个关联表,模型是这么定义的(用户表是users,主键定义为id):

class Follow(db.Model):
    __tablename__ = 'follows'
    follower_id = db.Column(db.Integer, db.ForeignKey('users.id'),
                            primary_key=True)
    followed_id = db.Column(db.Integer, db.ForeignKey('users.id'),
                            primary_key=True)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)

Follow表中的每条记录代表着一个user关注另一个user,那么不论是follower_id列还是followed_id列都必然会出现重复。那么:
1.在这种情况下为何还能定义成主键呢?
2.如果不定义成主键会有什么不同?(是不能用了还是性能下降还是什么别的?)


phpcn_u699phpcn_u6992783 hari yang lalu1022

membalas semua(2)saya akan balas

  • 数据分析师

    数据分析师2017-10-01 00:44:08

    Buku "Flask Web Development", masalah pelaksanaan perhubungan banyak-ke-banyak dalam pangkalan data? -Tapak web PHP Cina Soalan&Jawapan-Buku "pembangunan web Flask", masalah pelaksanaan perhubungan banyak-ke-banyak dalam pangkalan data? -Soal Jawab laman web PHP Cina

    Sila tonton dan pelajari.

    balas
    0
  • 巴扎黑

    巴扎黑2017-03-07 10:17:18

    用 Column 来定义一个列。类名就是你把赋给的那个变量的 名字。如果你想要在表中使用不同的名字,你可以提供一个想要的列名的字符串作为 可选第一个参数。主键用 primary_key=Ture 标记。可以把多个键标记为主键, 此时它们作为复合主键。

    在SQLAlchemy的文档里看见的,所以这里的用法应当是复合主键。


    balas
    0
  • Batalbalas