gpt4 book ai didi

sql - 仅将表用于多重继承是一种不好的做法吗?

转载 作者:行者123 更新时间:2023-11-29 12:33:23 25 4
gpt4 key购买 nike

为 PostgreSQL 数据库建模,创建一个表来为另一个表提供服务是否是一种不好的做法?例如,创建一个包含默认地址字段的表。

CREATE TABLE address (
zipcode char(8) NOT NULL,
street varchar(80) NOT NULL,
number varchar(10) NOT NULL,
city varchar(60) NOT NULL,
state char(2) NOT NULL
);

然后在每个使用这些字段的表中继承它。示例:

CREATE TABLE customer (
id integer PRIMARY KEY,
name varchar(80)
) INHERITS (address);

CREATE TABLE company (
id integer PRIMARY KEY,
name varchar(80)
) INHERITS (address);

CREATE TABLE building (
id integer PRIMARY KEY,
name varchar(80)
) INHERITS (address);

这个想法是应用类似 Single responsibility principle 的东西在表创建过程中。

我的一个主要问题是表 address 是否会导致性能显着下降,因为它每次都会变大。

最佳答案

这不是个好主意。查询 address 表会显示一堆来自所有来源的困惑地址,但无法将它们有效地连接到任何其他内容。

通过对地址 ID 的外键引用,使用传统的关系模型可以更好地完成此操作。

另一种选择是将地址定义为复合类型并将其嵌入到每个表中。不过,您会发现许多客户端驱动程序不太喜欢复合类型,因此使用起来会很笨拙。

真的,在这里坚持使用简单的关系方法。

关于sql - 仅将表用于多重继承是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25608102/

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