我想知道在这个场景中两个数据库结构之间的区别是什么:
管理员可以编辑、删除、添加Manufacturers
。用户(Company
)可以选择那些Manufacturers
,以便将它们列在其company
帐户下
使用SQLAlchemy时,A关系(两次一对多)和B关系(多对多)之间有什么区别:
在B方案中,多对多是这样添加的:
CompMan = db.Table('CompMan',
db.Column('companyid', db.Integer, db.ForeignKey('company.id'), primary_key=True),
db.Column('manufacturerid', db.Integer, db.ForeignKey('manufacturer.id'), primary_key=True)
)
所以中间表会自动出现
与SQLAlchemy的关联表(版本B)相比,创建自己的链接表(版本A)的优势在于,使用前者,您可以向链接表中添加与链接本身有关的其他列。对于关联表,只有两者之间的关系,没有其他关系。您将无法使用关联表获取该链接ID
要构建多对多关系,您必须有一个中间关系,例如CompMan
在示例B中,您没有实现多对多关系,因为没有存储公司和制造商之间关系的表
为了澄清问题,问问你自己:假设你持有任何公司的id,如何找到相关的制造商,反之亦然
相关问题 更多 >
编程相关推荐