タグ付けされた質問 「many-to-many」

1
複数の多対多の関係を持つビデオゲームビジネスドメイン用のデータベースの設計
私はデータベース設計が比較的新しいので、練習用に独自の仮想データベースを作成することにしました。ただし、多くの多対多(M:N)の関係があると考えているため、モデリングと正規化に問題があります。 一般的なシナリオの説明 このデータベースは、ゼルダシリーズで働いたさまざまな人々に関するデータを保持することを目的としています。私はのトラック維持したいコンソール(S)というゲームがで再生することができ、従業員に参加を持っていたゲーム開発をジョブズ従業員は、(多くの持っていた従業員が異なる上で働いていたジョブズ複数にわたるゲームなど、) ビジネスルール 複数の従業員が複数のゲームで作業できます。 同じコンソール上に複数のゲームを配置できます。 複数のコンソールを同じゲームのプラットフォームにすることができます。 複数の従業員が同じジョブを持つことができます。 アン従業員は複数持つことができますジョブを。 A ゲームは複数持つことができる従業員を。 ゲームは、複数の種類持つことができるジョブのそれの発展に 複数のゲームに同じタイプのジョブを添付できます。 A コンソールは複数持つことができます人々はそれに取り組んで。 A 人は複数で作業することができますコンソール。 属性名とサンプル値 FirstとLastに分割できる従業員名(「John」と「Doe」など) ゲームのタイトル(たとえば、「Ocarina of Time」) 役職(たとえば、「レベル設計」、「ディレクター」、「構成」、「レベル設計者」、「プログラマー」、「ローカリゼーション」など)。 コンソール名(「Game Boy Advance」など) 問題 これまでのところ、データの冗長性と、関心のあるエンティティタイプ間のM:N関係が至る所にあるように設計されているようです。しかし、データベース設計者は常にこの種の問題に遭遇しなければならないので、解決策が必要だと感じています。 注:テーブルを満たすデータを見つけることはできますが、問題は、正規化された形式のテーブルを持つデータベースにデータを整理することです。

3
各音楽アーティストがグループまたはソロパフォーマーであるシナリオのモデリング
以下で詳しく説明するように、音楽アーティストの描写を含むビジネスコンテキストのエンティティ関係図(ERD)を設計する必要があります。 シナリオの説明 アンアーティストが持っている名前を、とでなければならないのいずれかのグループ やソロパフォーマー(両方ではありません)。 A グループは、一人の以上で構成されソロパフォーマーと有するメンバーの数(数から計算されるべきであるソロ出演構成するグループ)。 A ソロパフォーマーは、かもしれ加盟多くの団体、あるいは全くのグループと1つの以上プレイしてもよい楽器を。 質問 このようなシナリオを表すERDを構築する方法は?「または」の部分と混同しています。

3
SQL Serverで多対多の結合を示唆する方法は?
1組の列(両方int)で結合する3つの「大きな」テーブルがあります。 Table1には2億行まで Table2には約150万行あります Table3には約600万行あります 各テーブルには、上のクラスタ化インデックスを持っているKey1、Key2して、1つの以上の列。Key1カーディナリティが低く、非常にゆがんでいます。これは常にWHERE句で参照されます。条項でKey2言及されていないWHERE。各結合は多対多です。 問題は、カーディナリティの推定にあります。各結合の出力見積もりは、大きくなるのではなく小さくなります。これにより、実際の結果が数百万に相当する場合、最終的な推定値は数百になります。 CEを手掛かりにしてより良い推定を行う方法はありますか? SELECT 1 FROM Table1 t1 JOIN Table2 t2 ON t1.Key1 = t2.Key1 AND t1.Key2 = t2.Key2 JOIN Table3 t3 ON t1.Key1 = t3.Key1 AND t1.Key2 = t3.Key2 WHERE t1.Key1 = 1; 私が試したソリューション: 上の複数列の統計情報を作成しKey1、Key2 大量のフィルターされた統計を作成するKey1(これはかなり役に立ちますが、ユーザーが作成した何千もの統計がデータベースに残ることになります。) マスクされた実行計画(悪いマスキングのため申し訳ありません) 私が見ている場合、結果には900万行があります。新しいCEは180行を推定します。従来のCEでは6100行と推定されています。 これは再現可能な例です: DROP TABLE IF EXISTS #Table1, #Table2, …

5
相互に排他的な多対多の関係
私はテーブル持っているcontainersいくつかのテーブルに多対多の関係を持つことができる、のは、それらがあるとしましょうplants、animalsとbacteria。各容器は、任意の数の植物、動物、または細菌を含むことができ、各植物、動物、または細菌は、任意の数の容器に入れることができる。 これまでのところ、これは非常に簡単ですが、私が問題を抱えているのは、各コンテナには同じタイプの要素のみを含める必要があるということです。たとえば、植物と動物の両方を含む混合コンテナは、データベースの制約違反になります。 これの私の元のスキーマは次のとおりでした: containers ---------- id ... ... containers_plants ----------------- container_id plant_id containers_animals ------------------ container_id animal_id containers_bacteria ------------------- container_id bacterium_id しかし、このスキーマでは、コンテナーを均一にする必要があるという制約を実装する方法を思いつきません。 これを参照整合性で実装し、データベースレベルでコンテナが同種であることを保証する方法はありますか? これにはPostgres 9.6を使用しています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.