【发布时间】:2010-10-08 09:00:45
【问题描述】:
我的数据库中目前有多个表,它们由相同的“基本字段”组成,例如:
name character varying(100),
description text,
url character varying(255)
但是我对该基本表有多个专业化,例如tv_series 具有字段season、episode、airing,而movies 表具有release_date、budget等等
现在起初这不是问题,但我想创建第二个表,称为linkgroups,并带有这些专用表的外键。这意味着我必须以某种方式对其内部进行规范化。
我听说过解决这个问题的一种方法是使用key-value-pair-table 对其进行规范化,但我不喜欢这个想法,因为它是一种“数据库内的数据库”方案,我没有办法要求某些键/字段,也不需要特殊类型,以后获取和排序数据会很痛苦。
所以我现在正在寻找一种在多个表之间“共享”主键甚至更好的方法:一种通过拥有一个通用表和多个专用表来对其进行规范化的方法。
【问题讨论】:
-
好吧,我不能 100% 确定我没看错。你有一堆不同的表,它们有一些共同的结构。您想添加一个引用这些表的表,但不能使用 FK,因为每个表都有自己的 PK。如果可以的话,我会创建一个通用的主表并暂停它。
-
是的,但我的问题是如何最优雅地做到这一点
-
你是什么意思,“规范化”?将表重新排列为多个子类型表(可能加上一个公共/超类型表)或键值编码不是 DB 规范化。对更高 NF 的规范化将一个表替换为自然连接回该表的其他表。 PS 将单词放在吓人的引号中并不能阐明您没有通过实际说出您的意思来阐明的特殊含义。
标签: sql postgresql database-normalization