我正在编写一个 Flask/SQLAlchemy 应用程序,其中有用户和组。
用户可以属于多个组,并且他们在每个组中都有一个唯一的编号。在询问如何为数据库建模时,我被建议对多对多关系使用以下表结构:
TABLE UserGroups
GroupID
UserID
UserNumber
PRIMARY KEY (GroupID, UserID)
UNIQUE (GroupID, UserNumber)
FOREIGN KEY (GroupID)
REFERENCES Groups (GroupID)
FOREIGN KEY (UserID)
REFERENCES Users (UserID)
现在我知道如何使用 SQLAlchemy 创建常规的多对多关系,但我不知道如何用附加字段表示UNIQUE
约束。UserNumber
我在数据库设计、ORM 和 SQLAlchemy 方面没有太多经验,所以这可能很明显,但我找不到表达它的方法。
我没有得到的事情是:使用常规的多对多关系,我的User
班级有一个类似列表的属性groups
,其中包含他所属的所有组,但这完全隐藏了UserGroups
连接表,我没有不知道如何访问该UserNumber
字段。
这对我来说有点模糊。关于如何使用 SQLAlchemy 做这样的事情,你有什么好的例子或解释吗?