原谅糟糕的头衔,我想不出正确的用语。
我有一个表示对象的数据库结构,对象有类型和属性。
某些类型只能使用某些属性。
即
类型 - 房子,汽车
属性 - 颜色,速度,地址
car类型的对象可以同时具有颜色和速度属性,但House类型的对象只能有颜色,地址。对象,类型,属性组合的值存储在值表中。
所有这些都有效,关系可以很好地执行上述内容。
我的困境是我有另一张表,即地址。该表具有AddressID。
我想以某种方式将我的地址表加入到我的对象值表中..有没有一种巧妙的方法来实现这个?
[更新] - 更多详情
我已经有5张桌子了。即。
对象
属性
对象类型
ObjectPropertyValues
ObjectTypeProperties
这些表具有关系,可以锁定哪些属性值可以分配给每种类型的对象。
一个物体的名称可能是“法拉利”,类型可能是“汽车”,因为类型是汽车,我可以为颜色属性设置一个值。
值虽然是数字,但我希望能够加入colourcodes表以匹配id。
答案 0 :(得分:1)
首先,关系数据库中的“关系”是一个表 - 它不涉及表之间的关系。关系定义了数据片段与键的关系。
在关系建模中,每个实体都被规范化,因此一个模型将是4个表:
Car(Color-FK,Address-FK)
House(Color-FK,Speed)
颜色(Color-PK)
地址(地址-PK,地址数据)
在关系模型中,汽车不是房屋,你通常不太可能在同一张桌子上对它们进行建模。
有人可能会争辩说,事实上,房屋和汽车的有效颜色是非常不同的(因为涂料不相同),因此人们不会在真实世界的应用中根据颜色组合这两个表。 / p>
可能的其他建模考虑可能是汽车停车的地方 - 即房屋的FK或地址的FK - 那里有趣的问题。然后,如果你有汽车和房屋的钥匙,他们都可以成为钥匙圈的一部分,在这种情况下,你可能会使用代表钥匙的链接表进行建模。