设置密钥,值表关系时的最佳做法

时间:2011-11-14 12:55:13

标签: sql database-design

我的数据库A,B,C,D中有几个表。

我需要这些表有一个信息键,值映射链接到它们。 如果应该有一个表E需要一组“key,value”信息标签,就这样设置。

这是一个糟糕的数据库设计吗?我的胃里有一种感觉,它不漂亮。

Table A,B,C,D
info_group_id (reference to Info_group.id)

Table Info_group
id serial

Table Information_tag
info_group_id (reference to info_group.id),
key varchar(64),
value integer

1 个答案:

答案 0 :(得分:0)

听起来你的(设置)fk关系正在与实际依赖关系相反的方向运行。

我设置键/值或标记数据库的方式如下:

Tag
=================
id
value/information


TableA
========
id   
column1   
column2 
......


TagReferenceTableA  
====================
tableA_Id  -- fk to TableA
tag_id     -- fk to Tag

这允许外键和级联删除到引用表。您将无法从标记表中删除作为级联的一部分的引用(好吧,没有触发器或其他东西),也可能不应该。