我有3个实体:
我不知道如何对表之间的关系进行外键操作。
建筑物位于地址。 活动在地址(一次一个地址)进行。
但我只想要一个地址表。
假设下一个属性:
建筑物(身份证,电话,电子邮件,图片,评论)< - 我应该放置address_id吗? 活动(id,description)< - 我应该把address_id吗?
地址(id,街道,城市,州,邮政编码)< - 或者我应该将center_id和activity_id放在这里吗?
提前谢谢!
答案 0 :(得分:1)
您应该在建筑物和活动表中使用 address_id 地址是独一无二的,而许多建筑物和许多活动可以位于同一地址!!
答案 1 :(得分:0)
您的问题意味着多个建筑物可以位于同一地址 - 这是您想要的吗?如果是这样,请相应地对其进行标准化:
Address
是您的'根实体':
ADDRESS(address_id,street,city,state,postcode)
Building
只能位于一个Address
,因此请加上Address
的引用,即外键:
BUILDING(building_id,phone,email,image,comments,address_id)
活动仅在一个地址执行,外键引用Address
:
ACTIVITY_ID(activity_id,description,address_id)
也许你应该考虑是否:
ADDRESS
表(见上述问题)?答案 2 :(得分:0)
Alex,你应该在两个表中都有ID,正如你在问题中所说的那样。没有必要将它们放在单独的表中,因为实际上建筑物的地址将是执行活动的地方,对吗?
如果您担心两栋建筑物位置相同,请在建筑物表格的address_id栏中添加uniq索引。
向前移动一点。你有没有建筑物的地址吗?如果是这种情况,那么您甚至可以将地址数据(列)添加到buildings表中。因为它是一对一的关系,没有其他实体需要使用地址表而是建筑物之一。这样你就可以摆脱地址表