我有一个utf8中的国家和城市名称列表。当任一列表被提取时,它应该以它输入的相同顺序返回。非数字字段作为PK - 数据库设计问题
例如:
Country(country_name|PK)
City(city_name|PK, country_name|FK)
COUNTRY_NAME和CITY_NAME不会改变,固定值。但是,排序会是一个问题。为了确保我保留作为
Country:
UK
US
Africa
我添加了一个名为1和高达sortcountry这将数值新列输入的顺序值。
Country(country_name|PK, sortcountry)
同样的东西适用于城市表。
我觉得这是比country(country_id, countryname)
一个更好的解决方案。我做对了吗?
依靠磁盘上的PK顺序存储MySQL条目是不安全的。选择和订购几百行产品通常不会导致问题。我会逻辑地构造数据(即使用country_id作为PK和单独的排序列)。可能会有更大的性能问题需要在应用程序的其他地方进行优化。 – liquorvicar 2012-03-19 07:24:44
我试图避免不必要的内部连接。通过做我刚刚做的事情,我可以在不需要加入的情况下为每个查询获取城市列表。另一种选择是什么?为sortcountry分配PK,然后在sortcountry(FK)旁边添加countryname?这是一个好的替代解决方案吗?注意:假定sortcountry代表country_id – user311509 2012-03-19 11:25:07