我有3个表,x
,y
和z
。我希望能够随意附加
属性到每个表中的每一行。 x
,y
和z
中没有任何内容
除了它们都有一个称为整数主键的事实之外
id
并且应该能够附加任意属性。
制作单个属性表是否更好,例如
create table attributes (
table enum('x', 'y', 'z'),
xyz_id integer,
name varchar(50),
value text,
primary key (table, xyz_id, name)
);
或者最好是制作单独的表格,例如
create table x_attributes (
x_id integer,
name varchar(50),
value text,
primary key (x_id, name),
foreign key (x_id) references x (id)
);
create table y_attributes (...);
create table z_attributes (...);
第二个选项(单独的表格)似乎更清晰,但需要很多 数据库端和应用程序端的更多样板文件。
我也愿意接受除这两项以外的建议。
注意:我已经考虑过使用像MongoDB这样的文档存储的可能性,但是 我正在使用的数据基本上是关系型的。
答案 0 :(得分:0)
使用带有枚举列的一个表,从长远来看,它将更容易抓取每一行的所有属性。