我有一个现有的桌面数据库,正在 mysql 服务器中复制。当前数据库有一个客户表,其中一个字段代表公司服务的区域或区域。区域如下:1A、1B、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17。
为了进行设置,为了匹配现有的数据集,我设置了一个引用表 (customer_zones),其中的区域以一对多关系链接到客户表。每个区域可以有很多客户。每个客户只有一个区域。
问题是“1A”和“1B”区域不允许我在 customer_zones 表上设置 int 主键。我必须使用 varchar(2) 作为主键。这是好的做法吗?或者最好的解决方案?
最佳答案
主键是聚集索引,表中数据的物理表示是因为主键和数字搜索比字符串更快。
根据您的情况,以下是方法。
方法A
如果您为表 customer_zones
中的主键字段选择区域 ID 作为 varchar(2)
,那么您可以将其引用到 中的外键字段>customer
表,您的问题就可以解决。
方法B
如果您将主键用作表 customer_zone
中的整数
,那么要存储 1A、1B 等区域,您需要再添加一个字段,并且在此基础上字段,您需要一个唯一的键也可以避免数据重复。
如果您遵循方法 A 会更好,因为对于相同的功能来说,一个约束会更简单。
关于mysql - 创建数字和字母混合主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722444/