私は、次の関係と制約を持つユーザー、アカウント、およびプロジェクトを処理するデータベースを設計しています。
- アカウントには多くのユーザーがいます
- ユーザーは多くのアカウントに属しています
- アカウントには多くのプロジェクトがあります
- プロジェクトは1つのアカウントにのみ属します
- ユーザーは多くのプロジェクトで共同作業を行います(冗長な注意:各プロジェクトは独自のアカウントに属しています)。
つまり、ユーザーは同じアカウントの多くのプロジェクトで共同作業を行うことができます。ただし、ユーザーは複数のアカウントに属することができるため、ユーザーは複数のアカウントの多くのプロジェクトで共同作業を行うことができます。これは私を三元の協力関係に導きます:
三項関係を二項関係に変換することについてのいくつかの論文を読んだ後、私は次の同等の関係を思いついた:
ここで2つの質問が発生します。
この変換は正しいですか?挿入を処理するには、アプリケーションレベルでチェックを追加する必要があることがわかりました。たとえば、新しい
(User,Project)
ものを追加する前に、ユーザーがプロジェクトと同じアカウントに属していることを確認する必要があります。との関係を確立することは本当に必要
Account
ですUser
か?User
との関係Project
が追加されたら、プロジェクトにアクセスして、ユーザーが属しているアカウントを知ることができませんでしたか?
ありがとう!!