基本上情况是这样的(简化,伪代码):
我有 2 TABLES 人和国家。
人员表:
KEY INT ID, STRING NAME, STRING COUNTRY
国家表:
KEY INT ID, STRING COUNTRY_NAME
客户可以控制国家表中的内容,因此他可以在列表中添加和删除县。创建人员时,此国家/地区值显示在下拉列表中。创建人员时,国家字符串值将插入到人员行的国家列中。
对我来说,这个 Person 应该有一个对国家的外键引用是有道理的,但是因为客户可以控制 Country 表中出现的内容,所以它们被保存为单独的表,因为你不能只删除使用过的国家,(参照完整性和所有)。这是我的一位同事提出的在这种情况下不使用外键的论点,但我觉得应该有更好的解决方案来解决这个问题,那么,我的同事是对的还是有更好的解决方案?
客户端可以在国家/地区表中添加和删除值,但如果从国家/地区表中删除一个值,使用该值的创建人应保留其值。