0

我有 3 张桌子、xyz。我希望能够将任意属性附加到每个表中的每一行。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 这样的文档存储的可能性,但我正在使用的数据基本上是关系型的。

4

1 回答 1

0

使用一个带有枚举列的表,从长远来看,这将使获取每一行的所有属性更容易。

于 2012-06-26T20:04:43.147 回答