gpt4 book ai didi

postgresql - 多对多多态关系替代

转载 作者:行者123 更新时间:2023-11-29 13:53:25 27 4
gpt4 key购买 nike

我正在为一个大型应用程序设计数据库架构。我有不同类型的对象(建筑物、土地等,总共 9 个),所有对象都有两种类型的所有者:个人和公司。每个对象可以有多个拥有不同份额的不同类型的所有者,每个所有者可以有多种类型的属性(property)。多对多多态关系应该可以解决这个问题,但是我该如何以常规方式做到这一点?

最佳答案

您需要一个抽象类型“Party”,以及具体类型“Individual”和“Organization”(例如,您可以将其扩展到 Company 或 Government)。以及描述组织所有权的表格。

create table parties (
party_id int primary key,
type text not null check (...),
individual_name text null,
organization_name text null,

check ( /* validate columns for given types */ )
);

create table shareholders (
shareholder_party_id int references parties(party_id),
organization_party_id int references parties(party_id),
share decimal(...) not null,

primary key (shareholder_party_id, organization_party_id),

check (...)
);

insert into table parties values
(1, 'Individual', 'Alice', null),
(2, 'Individual', 'Bob', null)
(3, 'Organization', null, 'Alice and Bob Co.');

insert into shareholders values
(1, 3, 0.5), --Alice owns 50% of Alice and Bob Co.
(2, 3, 0.5); --Bob owns 50% of Alice and Bob Co.

insert into assets (asset_id, owner_id) values (1, 3); --Alice and Bob Co own Asset 1

关于postgresql - 多对多多态关系替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36653397/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com