今日は私の個人的なプロジェクトのためのデータベースを設計していました。私はよりよい選択肢が決まることができなかったので、私は先生のデータベースに尋ねました。残念ながら、2つの選択肢のどちらが他の選択肢より優れているのか、その理由を教えてくれませんでした。データベースデザイン、複数のM-Mテーブル、または1つだけ?
私はダミーデータジェネレータのためのデータベースを設計しました。多言語データを生成したいので、私はこれらのテーブルを考えました。 (しかし、そのテーブルの単純化)。
(最初と最後)名:ID、名前
街:ID、名前
言語:ID、名前
各names.nameとstreets.name言語に由来します時々、名前は複数の起源を持つことができます(例:Nickは英語名としてオランダ語です)。
各言語には複数の名前と通りがあります。
これらの2つのルールは、多対多の関係になります。現時点で私は2つのテーブルしか持っていませんが、私はこの種のテーブルのうち10と20の間に入るでしょう。
これを行う通常の方法は、10対20の多対多関係表を作成することです。
私が思いついたもう一つのアイデアは、IDと関連するテーブルを指定する3列目の多対多テーブルでした。
現時点では他のPCにデザインがあるので、夕食(2時間程度)後に私のアイデアを視覚化して更新します。
どのアイデアが優れているのですか?その理由は何ですか?
プロジェクトのアイデアビットより明確にするには、次の
常にプロジェクトのために良いと十分なリアルな作業データを作成するために面倒です。このアプリケーションでは、このデータが生成され、必要なSQLが返され、クエリを実行するだけで済みます。
ユーザーがサイトにアクセスしてデータを取得します。彼はテーブル名、自分れる列を述べ、その後、彼は、データの種類にれる列名をリンクと考えることができます:
*ファーストネーム
*姓
*メールアドレス(ランダムに人の名前から生成されます)
*住所の詳細(通り、住宅番号、郵便番号、場所、国)
*もっと多く
次に、ユーザーが作成したい行の数を設定することができます。アプリケーションは、ランダムに国を選択し、彼らが住んでいる国に応じて現実的な見た目のデータを生成します。
おそらく私は何かが不足していますが、私はあなたの問題を見ません。 m-nの関係は、名前と言語の間にあるように見えます。通りには、名前に関連する名前があります。名前の言語が必要な場合は、既存のm-n関係を使用します。したがって、Citiesテーブル(名前はもちろん)を作成した場合、その名前はNamesテーブルなどにも関連付けられます。名前と言語には1つの関係があります。名前を使用するすべてのエンティティは、その関係を使用することができ、独自のものは必要ありません。 – TommCatt
名前(firstnamesとlastnames)テーブルとstreetnamesテーブルの間には関係がありません。私はその質問をより明確にするべきだった。 – StefanJanssen
それは意味をなさない。姓と名は人(顧客、従業員、クライアントなど)の属性であり、別のテーブルには入っていません。独自のテーブルに名前を付ける唯一の時間は、名前に関する他のデータ(原点など)を提供することです。 Streetsに別の属性の言語を指定する属性がある場合は、正規化に問題があります。クロステーブルを介してこの関係を指定すると、名前エンティティの名前テーブルを作成し、各名前/言語関係を一度定義して実行することができます。 – TommCatt