ユーザーとグループを持つ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 の経験があまりないので、これは明らかかもしれませんが、それを表現する方法が見つかりません。
私が得られないことの1つは、通常の多対多の関係を使用して、私のUserクラスには、彼が属するすべてのグループを含むリストのような属性がありますが、これにより結合テーブルが完全に隠され、私はそうしませんフィールドへのアクセス方法がわかりません。groupsUserGroupsUserNumber
これは私には少しぼやけています。SQLAlchemy でそのようなことを行う方法について、良い例や説明はありますか?