2016-12-16 2 views
-1

データベース設計について質問があります。データベースの設計について

どちらが比較的大きなデータベースシステムに適していますか。二番目と私は快適な私の意見では

デザイン1 enter image description here

Design2 enter image description here

が、最初のものは、私が推測する二つ以上の伝統です。

あなたの考えは?

+0

質問を編集して、2番目の図の読み方を説明してください。 – philipxy

+0

@philipxy私は図が非常に明確だと思います。最初は学生の電話番号を別のテーブルに保存し、2番目のテーブルには学生用の電話番号を同じテーブルにXMLで保存します。 –

答えて

3

どちらもありません。 2人の学生が寮に住んでいて、同じ電話番号(寮の電話番号)を持っている(共有している)場合、または家に居る兄弟がいる場合はどうなりますか?電話番号テーブルは複合プライマリキーとしてphonenumber,およびstudentIdの複合キーである必要があります。これは、多対多と呼ばれるもの、またはXMLで簡単に表現できない連想関係を反映しています。

以下のスキーマは、各生徒がその回線を使用する電話機の「タイプ」を判断することを前提としています。電話機の種類が電話機のみで決まる場合は、studentIdを付けずに、電話番号と電話機タイプの別のテーブルを追加し、関連付けテーブルのphoneNumberフィールドをその新しい電話機の外部キー(FK)にしますテーブル

enter image description here

+0

あなたの答えをありがとう、私はあなたの訂正を助けるでしょう。 しかし、これは私が探している答えではなく、「どちらのアプローチがより有用なのか、関係やXMLなのか」ということを学びたいと思っています。 もう一度ありがとうございます。 –

+0

ああ、興味があるのであれば、リレーショナルは答えです。 XMLで多対多の関係を簡単に行うことはできません。 –

0

私はデザイン1で行くが、変更を加えたと思います。ただし、電話番号表にはStudent IDが主キーとして含まれています。この方法で、複数の生徒に同じ電話を使用させることができます。これは私にとっては全く正常なシナリオです。

+0

あなたの答えをありがとう、私はあなたの警告を考慮します。 –

+0

電話番号表に「studentId」が主キーとして含まれている場合、1人の学生につき1つのレコードしか存在できません。いいえ、 'studentId'と' phoneNumber'には複合主キーが必要です。 –

0

電話番号を潜在的に無限のリストに正規化することで、これを考えることはありません。

生徒に本当に必要な電話番号の数はいくつですか?たとえば、ファックス番号が必要ですか? あなたは期間と非期間の時間が必要ですか?

1つのプライマリ番号と代替番号が必要になる可能性は非常に高いようですが、それらを学生テーブル自体に格納することができます。

+0

あなたの答えよりも。しかし、私は皆さんが私の小さな学生の例に夢中になっていることに気づいたので、私はこのデータベースを単に例として設計しました。私が本当に学びたいのは、XMLを使うことはデータベースを設計する上での悪い習慣です。 –

+0

@OnurEryilmaz私たちはあなたが聞いた質問に答えることができ、「執拗」であることを助けるために時間を費やした人を特徴付けることはかなり失礼です。あなたは「XMLをデータベースの設計に悪い習慣を使っているのですか?」と尋ねたはずです。あるいは、そのトピックの既存の質問を参照することをお勧めします。 –

+0

私の言葉は残念ですが、私は "執拗"とは思っていませんでした。しかし、私は私の質問で "どのデッシング"が良いと尋ねる。私は "私の最初のダイアグラムは間違っていますか?"と尋ねなかった。しかし、再び私はごめんなさい。 –