python - 《flask web 开发》一书,数据库中多对多关系的实现问题?
ringa_lee
ringa_lee 2017-04-18 10:24:21
0
2
583

问题原型是,现在要实现用户之间的互相能够关注的功能,反应到数据库中是一个多对多的关系,书里引入了第三个关联表,模型是这么定义的(用户表是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.如果不定义成主键会有什么不同?(是不能用了还是性能下降还是什么别的?)

ringa_lee
ringa_lee

ringa_lee

모든 응답(2)
黄舟

열을 사용하여 열을 정의합니다. 클래스 이름은 할당한 변수의 이름입니다. 테이블에서 다른 이름을 사용하려면 원하는 열 이름의 문자열을 선택적 첫 번째 인수로 제공할 수 있습니다. 기본 키는 Primary_key=Ture로 표시됩니다. 여러 키를 기본 키로 표시할 수 있으며, 이 경우 복합 기본 키 역할을 합니다.

SQLAlchemy 문서에서 보았는데 여기서 사용법은 복합 기본 키여야 합니다.

阿神

테이블에는 기본 키가 하나만 있으며, 여러 개의 기본 키를 동시에 설정할 수 없습니다.
Follower_id와 Follow_id는 고유 키, 즉 고유 키로 설정해야 합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!