抽象クラス "候補"に継承される抽象クラス "Person"があります。後者には、保持された候補(インタビュー用)、認められた候補者...どのようにデータベースでそれを表現できますか?
ありがとうございますrelationnalデータベースで階層的継承を持つクラスを表現する方法
答えて
多くのデータ項目がない場合は、タイプフィールドを持つ単一のテーブルを作成してください。多数の列またはバリエーションがある場合は、バリアントのテーブルを作成し、それらをマスターテーブルにリンクします。
階層レベルが1つしかない場合(つまり、Personから継承された候補が残っている場合など)、階層レベルが2段階になっていますが、これを行う方法がわかりません – hereForLearing
これは誤った継承の使用です。人は候補者の役割を果たすかもしれませんが、必ずしも常に候補者になるとは限りません。組成物を使用する。人は多くの役割を果たしますが、そのうちの1つは候補になることができます。彼らは後で従業員になることができます。また、そのステータスもサブタイプであってはなりません。それには「ステータス」列を使用します。このような
何か:
create table people (
person_id int primary key,
name text,
...
);
create table person_roles (
person_id int references people(person_id),
type text check (type in ('Candidate', '...')),
candidate_status text check (candidate_status in ('Retained','Admitted')),
primary key (person_id, type)
);
継承の正しい使い方は人がAbstractLegalPartyを拡張するだろう。組織または会社もAbstractLegalPartyを拡張します。
なぜあなたが含まれているのですか主キーを入力しますか?私はUMLクラス図で例を挙げましたが、私は以下の構造を持っています:Person(抽象クラス)は、候補者、スタッフ、管理者に継承され、候補は2つのサブクラスを持っています:認められ、保持された候補者は、これは正しいですか? – hereForLearing
@saywowは、複数の役割を持つことができますが、与えられたタイプの役割は1つだけです –
私はUMLの中で、候補者、スタッフ、管理者が継承するPerson(抽象クラス)を表します。私があなたが言ったようにデータベースでそれを表現したいとき、それは正しいのですか?人、メンバー、候補者が同じ階層レベルを持っているかのようには見えません。 – hereForLearing
- 1. 階層的継承
- 2. SQLAlchemyのクラス継承階層をサブクラス化
- 3. C++階層クラス継承のデザイン
- 4. 継承階層を持つイベントを渡すためのC++システム
- 5. Javaで多重継承を持たないクラス階層を設計する
- 6. 春MVC - 継承階層
- 7. Neo4j javadocs継承階層
- 8. 複数の継承階層
- 9. 継承と継承階層をキャストする
- 10. API /ライブラリの並列継承階層を回避する方法
- 11. 継承階層にクラスを挿入する(objective-c)
- 12. 深いクラスの継承階層 - 悪い考えですか?
- 13. UIPopoverController他のViewControllerでの階層/継承
- 14. 階層継承によるクエリ
- 15. クラス階層の設計 - Javaでの多重継承
- 16. 継承する方法Pythonでシングルトンを持つ基底クラス
- 17. 継承のような親子子コンテナ階層の継承
- 18. 各階層の個々のシングルトン継承
- 19. DBデザイン:テーブルの継承と階層
- 20. チェス片階層設計:タイプフィールド対継承
- 21. 階層ごとのEntity Frameworkテーブル継承
- 22. テンプレート引数からの継承階層
- 23. ジャンゴ:継承階層内のフィールド
- 24. ダガー2:依存関係継承階層
- 25. 継承状態階層で宣言クラスが見つかりません:UserAccount
- 26. ジェネリック、ワイルドカードやスーパー/ Iは、次のJPAエンティティの継承階層を持つインターフェース
- 27. ジェネリックタイプを継承階層で2回実装する
- 28. Coqでの継承の表現方法
- 29. Javaでマルチレベル階層を表現する方法
- 30. 階層構造のデータベースをツリービューで表示する方法は?
これは誤った継承の使用です。人は候補者の役割を果たすかもしれませんが、必ずしも常に候補者になるとは限りません。組成物を使用する。人は多くの役割を果たしますが、そのうちの1つは候補になることができます。また、そのステータスもサブタイプであってはなりません。そのための "ステータス"の列を使用 –
あなたの答えをありがとう、あなたは構成によってどういう意味ですか – hereForLearing
私は、継承を使用しないことを意味します:)あなたはPersonとPersonRolesの間にone2many関係が必要です –