必要的地址表的外键关系

时间:2017-11-22 07:53:02

标签: mysql database foreign-keys

编辑:我认为我说错了。请读外键作为外键约束。我意识到我需要地址表中的客户端ID等。

我有一个客户端表。 id | pref_name | full_name | business_name |等等。 。

我意识到客户端可以有多个位置/地址,所以我有一个地址表。 id | client_id |名字|地址1 |地址2 | sub_area_id | area_id | province_id | country_id |邮政编码|等等。 。

然后我意识到客户可以来自多个国家,所以我补充说: 国家表 id |国家|代码(ISO-2A)

省表 id |名字| COUNTRY_ID

区域表 id |名字| province_id

子区域表 id |名字| AREA_ID

所以现在我意识到我并不需要所有的sub_area_id | area_id | province_id |地址表中的country_id。

从sub_area_id我可以通过连接查询获得其余部分,但是,并不总是存在子区域ID。总会有一个区域ID。我想我确实需要sub_area_id | area_id但可以删除province_id |来自地址表的country_id

我不确定的是我是否需要国家,省份,地区,子区域表的外键?

似乎如果一个国家被删除,所以其他表中的所有相关数据都应该被删除,但我很确定一个国家永远不会被删除。省,区,子区也是如此。实施外键是浪费时间吗?

此外,客户端可能被禁用(因为它会影响历史数据而不会被删除),因此外键也可以禁用客户端地址,还是不必禁用它们?同样,它可能不是最好删除它们,因为客户端可能会在以后恢复。

我的结构有任何改进建议吗? TIA

1 个答案:

答案 0 :(得分:0)

是的,你肯定需要外键来引用客户端的地址。如果您没有地址表中客户端的ID,则无法从地址表中检索客户端的地址