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. SQL Server 2012テーブルがある場合、1つのテーブルが空の場合は何も返しません。
- 2. 3つのテーブルと1対多の関係で結合する
- 3. 1つのテーブルにキーがある場合は2つのテーブルをマージし、もう1つのテーブルにキーの範囲しかない場合
- 4. テーブル2の列が1である場合、テーブル1からのMySql SELECT
- 5. 1つのテーブルに大量のデータがあり、他のテーブルに大量のデータがある場合にSQL Serverで2つのテーブルに結合する
- 6. テーブルにプライマリキーが1つしかない場合、データベースはデフォルトで2NFですか?
- 7. 1対1の関係の場合、いくつのフィールドに参加する必要がありますか?
- 8. 2つのエイリアスのうち1つで注文する(同じテーブルの関係の場合)
- 9. sqlの別の2つのテーブルと1つのテーブルを結合するには?
- 10. エンティティに多対1の関係がある場合のDTOへのエンティティのマッピング
- 11. IDが別のテーブルに存在する場合、MYSQL select count(*)が1つのテーブルにあります
- 12. 1つのテーブルが製品の数である場合にテーブルを関連付ける方法
- 13. T-SQLは、結合されたテーブルと1対1で一致する場合のみ更新します
- 14. JPAの1対1関係エンティティが存在しない場合
- 15. 同じオブジェクトが正しく構築されていない場合、1対1と多対多の関係
- 16. テーブル1にテーブル2に一致する2行がある場合
- 17. 複数のテーブルを1対1の関係でレールに結合する方法
- 18. テーブルの並べ替えで、列がある場合とない場合の両方の行がある場合
- 19. チェックは、データベース内のテーブルがある場合 - 常に0
- 20. SQLAlchemy、同じテーブルの1対1の関係
- 21. SQL - 私はテーブルを持っている場合は1行
- 22. 「親」表に複合PKがある場合、JPAで1対1の関係をモデル化する方法はありますか?
- 23. 1つの表にNULL値がある場合のデータ結合
- 24. SQL - テーブルに挿入する場合はsys.databasesにあります
- 25. 同じモデル間に2対1の関係があります
- 26. アクションとオブジェクトが1対1でない場合にFacebookのオープングラフレイアウト
- 27. SQL - 2つの列に同じデータがある場合、テーブルから結果を除外する方法
- 28. 私は1対1の関係にある2つのテーブル持って一対一relationslip laravelに
- 29. テーブルに多数のカラムがある場合のSQLサーバのパフォーマンス
- 30. テーブルが1列のみの場合
テーブルからのすべてのヌルカラムが別々のテーブルのOUTER JOINになっていても嫌な気持ちはありませんが。 – philipxy
実際の一般的なルールはありません。それは個人的な感情の問題です。一般に、私が使用する経験則(厳密ではない)は、必要な副次列の頻度です。しばらくの間そこにいるのは、別のテーブルにあるはずです。常にそこにあるものは同じテーブルにあるべきです。 「しばらくの間」と「しばしば十分な」間の線を描くところは、個人的な好みであり、@philipxy状態のように、どれだけあなたがヌルをサポートするかによっても異なります。 – theblitz