ユーザーとグループを持つ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
クラスには、彼が属するすべてのグループを含むリストのような属性がありますが、これにより結合テーブルが完全に隠され、私はそうしませんフィールドへのアクセス方法がわかりません。groups
UserGroups
UserNumber
これは私には少しぼやけています。SQLAlchemy でそのようなことを行う方法について、良い例や説明はありますか?