mysql - 创建数字和字母混合主键

标签 mysql database database-design mariadb

我有一个现有的桌面数据库,正在 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/

相关文章:

产品目录网站的数据库设计

mysql - 基于If条件在Mysql触发器中使用Select INTO语句

mysql - 如何创建一个查询来计算两列中的值一起出现的次数?

PHP Yii 关系 : Movies & cinemas & showtimes

MySql:查询优化(多个左连接)

mysql - 根据条件选择列

c# - 如何编写正确的插入/更新/删除命令来更新源访问数据库中的链接表?

数据库架构问题

mysql - 使用外键和 Django 更新 MySQL 数据库

postgresql - 数据库设计,全文搜索的多语言(Postgresql)