我正在寻找在mysql表字段中保存两个字母country id的列表的最佳实践。我有一个产品表,我希望每个产品都有一个列或列表可以运送到的国家。
我想到的想法是为这样的船舶国家制作另一张表:
item_id int,
ship_country char(2)
但是对于每个项目都可能是此表中的条目,因此如果物品运送到200个countires将在此表中为200行。我的想法是我需要这个字段可以搜索到能够搜索发送到特定countires的项目,所以我不能使用文本字段来存储所有国家/地区列表。
我的第二个想法是在bigint领域为每个国家使用一位,但我认为搜索会很难。
如何做到这一点。
答案 0 :(得分:0)
在我看来,您的产品表与您的国家/地区表之间的many-to-many relationship
相似。
所以你应该有一个产品表,一个国家表和一个新表来建立链接。
国家/地区表可以像那样
country_id int,
country_code char(2),
country_name varchar(100)
中间的表格,我们的通话ID product_country
可以这样定义:
product_id int,
country_id int
答案 1 :(得分:0)
我建议使用三个表:country,item,item2country。
country: id, countryName, countryShort
item: id, itemName
item2country: id, itemId, countryId
这允许搜索" item2country"按ID分类的表,并返回目标countryId。使用此countryID查找完整的国家/地区名称。 这也很容易为项目插入新国家/地区。从包含ItemId的Item formular中,您只需插入" item2country"。 此外,当您从表项中删除项目时,还会删除item2country中itemId的所有ID。
最坏情况警告:不要将多个国家/地区ID或短名称存储到单个数据库字段中,例如" en,us,au"。那将是搜索的一个灾难,因为你会反复获取和分裂。这是非常糟糕的做法和sloooooowww。