4

PERSON または ORGANIZATION のエンティティ CLIENT があるとします。どのタイプであるかに応じて、属性 (住所、組織の名前、個人の生年月日、名、姓) を選択する必要があります。3 つのエンティティをすべて作成しましたが、属性をタイプ依存にするにはどうすればよいですか?

Database design: objects with different attributes を見ましたが、役に立ちませんでした...

4

2 に答える 2

3

典型的な選択肢の 1 つは、1:1拡張テーブルです。

create table client (id int primary key);
create table person (id int foreign key references client(id), ...columns...);
create table organization (id int foreign key references client(id), ...columns...);

ただし、私の好みの選択は、clientテーブルにすべての列を含めることです。personまたはのいずれかのタイプの列を持つことができますorganization。行のタイプに関連しない列は null になる可能性があります。そうすれば、クエリははるかに簡単になります。

于 2013-03-30T17:16:11.723 に答える
2

Either you use 3 tables or you use 1 table and leave the not needed columns null. Which design is superior depends on the use case. Using only 1 table gives simpler queries but requires to change the table for each new subclass. Using multiple tables allows to add more types easily but gives more complicated queries. In doubt I would start with only 1 table but your mileage may vary.

于 2013-03-30T17:17:30.307 に答える