我有 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 这样的文档存储的可能性,但我正在使用的数据基本上是关系型的。