编辑:我认为我说错了。请读外键作为外键约束。我意识到我需要地址表中的客户端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
答案 0 :(得分:0)
是的,你肯定需要外键来引用客户端的地址。如果您没有地址表中客户端的ID,则无法从地址表中检索客户端的地址