0

抱歉标题不好,我想不出正确的术语。

我有一个表示对象的数据库结构,对象具有类型和属性。

只有某些属性可用于某些类型。

IE

类型 - 房屋、汽车

属性 - 颜色、速度、地址

car 类型的对象可以同时具有颜色和速度属性,但 House 类型的对象只能具有颜色、地址。对象、类型、属性组合的值存储在值表中。

所有这些都有效,关系很好地执行了上述内容。

我的困境是我有另一个表,即地址。此表具有 AddressID。

我想以某种方式将我的地址表加入我的对象值表..有没有一种巧妙的方法来实现这一点?

[更新] - 更多细节

我已经有5张桌子了。IE

目的

特性

对象类型

对象属性值

对象类型属性

这些表具有锁定可以将哪些属性值分配给每种类型的对象的关系。

一个对象的名称可能是“法拉利”,类型是“汽车”,因为类型是汽车,所以我可以为颜色属性设置一个值。

该值虽然是数字,但我希望能够加入颜色代码表以匹配 id。

4

1 回答 1

1

首先,关系数据库中的“关系”是一个表——它不指表之间的关系。关系定义了数据片段如何与键相关。

在关系建模中,每个实体都进行了规范化,因此您的一个模型将是 4 个表:

汽车(颜色-FK,地址-FK)

房子(颜色-FK,速度)

颜色(颜色-PK)

地址(地址-PK,地址-数据)

在关系模型中,汽车不是房屋,您通常极不可能在同一张表中对它们进行建模。

有人可能会争辩说,事实上,房屋和汽车的有效颜色是非常不同的(因为油漆不相等),因此在现实世界的应用程序中永远不会根据颜色组合这两个表。

可能的其他建模考虑因素可能是汽车的停放位置 - 即 FK 到 House 或 FK 到 Address - 那里有趣的问题。然后,如果您有汽车和房屋的钥匙,它们都可能是钥匙环的一部分,在这种情况下,您可能会使用代表钥匙的链接表进行建模。

于 2009-11-03T15:40:13.357 回答