SQLデータベースの場合、同じテーブルに一対一の関係を維持する方が良い場合があります。代わりに別のテーブルに格納する方が理にかなっていますか?SQLデータベースでは、1対1の関係が同じテーブルにある場合と、別のテーブルにある場合はいつですか?
0
A
答えて
1
他のエンティティへの外部キーとして機能できなければならない複数のエンティティがあり、複数のエンティティに共通のプロパティと固有のプロパティの両方があり、ユニークなプロパティにNOT NULL制約が必要な場合(あまり重要でないものは、他のエンティティには適用されないユニークなプロパティのNULL値を必要としません)。一意の/共通のプロパティを持たず、NULL値を気にしなくても、それぞれのサブパイプ・テーブルとスーパータイプ・テーブルに個別の外部制約が必要な場合は、依然としてそうすることができます。この戦略は、スーパータイプ/サブタイプのモデリングと呼ばれます。
例を挙げておきます。
人々
- ID(PK)
- 名
- 年齢
教師
- ID(PK、FKとpeople.idする)
- years_teaching 、NOT NULL NOT NULL
- どんなNOT NULL
学生
- ID(PK、FKとpeople.idする)
- グレード
- ものは何でも、NOT NULL
ご覧のように、教師と生徒はいくつかのプロパティの共通テーブルを1つ持つことができます。 NOT NULL独自のプロパティを所有しています。さらに、他のテーブルに人、教師、生徒を参加させ、参照整合性を保つことができます。
もう1つのアプリケーションは、それぞれのレコードに対して別々のデータベースがあり、あるプロパティといくつかのプロパティが別々のデータベースであったとしても、私は決してこれを実行しませんでした。
関連する問題
- 1. 1つのテーブルにキーがある場合は2つのテーブルをマージし、もう1つのテーブルにキーの範囲しかない場合
- 2. テーブル2の列が1である場合、テーブル1からのMySql SELECT
- 3. 1つのテーブルに大量のデータがあり、他のテーブルに大量のデータがある場合にSQL Serverで2つのテーブルに結合する
- 4. テーブルにプライマリキーが1つしかない場合、データベースはデフォルトで2NFですか?
- 5. 1対1の関係の場合、いくつのフィールドに参加する必要がありますか?
- 6. 2つのエイリアスのうち1つで注文する(同じテーブルの関係の場合)
- 7. 1つのテーブルが製品の数である場合にテーブルを関連付ける方法
- 8. 同じオブジェクトが正しく構築されていない場合、1対1と多対多の関係
- 9. T-SQLは、結合されたテーブルと1対1で一致する場合のみ更新します
- 10. JPAの1対1関係エンティティが存在しない場合
- 11. 複数のテーブルを1対1の関係でレールに結合する方法
- 12. SQLAlchemy、同じテーブルの1対1の関係
- 13. テーブルの並べ替えで、列がある場合とない場合の両方の行がある場合
- 14. SQL - 私はテーブルを持っている場合は1行
- 15. 「親」表に複合PKがある場合、JPAで1対1の関係をモデル化する方法はありますか?
- 16. 1つの表にNULL値がある場合のデータ結合
- 17. 同じモデル間に2対1の関係があります
- 18. アクションとオブジェクトが1対1でない場合にFacebookのオープングラフレイアウト
- 19. SQL - 2つの列に同じデータがある場合、テーブルから結果を除外する方法
- 20. 私は1対1の関係にある2つのテーブル持って一対一relationslip laravelに
- 21. テーブルが1列のみの場合
- 22. 1対多の関係を持つテーブルをデータステージに結合する
- 23. SQLで多対多の関係を持つ2つのテーブルに結合する
- 24. IE 7とIE 8は2つの結果のdivをfloatでレンダリングしません:DIVの1つにテーブルがある場合、同じ行に残ります
- 25. 1つのキー値をテーブルに入れるべきか、またはテーブルに入れるべきでない場合に、3つのテーブルを結合するか?
- 26. 同じテーブルの複数のクエリを1つのSQL文に結合する
- 27. テーブルの1つがより多くの結果を持つ可能性がある場合のSqlクエリ
- 28. EF:1対1の関係にある外部キーですか?
- 29. \エンティティをテーブルにマップできません。別のエンティティがテーブルと同じ名前を持っている場合
- 30. テーブルの1つに対応するレコードが1つもない場合でも、2つのテーブルの値を表示するLinqクエリ
テーブルからのすべてのヌルカラムが別々のテーブルのOUTER JOINになっていても嫌な気持ちはありませんが。 – philipxy
実際の一般的なルールはありません。それは個人的な感情の問題です。一般に、私が使用する経験則(厳密ではない)は、必要な副次列の頻度です。しばらくの間そこにいるのは、別のテーブルにあるはずです。常にそこにあるものは同じテーブルにあるべきです。 「しばらくの間」と「しばしば十分な」間の線を描くところは、個人的な好みであり、@philipxy状態のように、どれだけあなたがヌルをサポートするかによっても異なります。 – theblitz