php - 在 MySQL 表中使用字符串作为 ID 可以吗?

标签 php mysql sql

我设计了我的数据库,并使用 varchar 来创建唯一的名称。我做了一个产品表,每个产品都有一个产品代码,这个代码是唯一的,不能重复,主要是我在父表中的主键。这个想法是,例如我有一根蜡烛,蜡烛有不同的颜色,所以是不同的产品,我可以通过产品代码区分产品名称。我没有使用或命名一个表作为可索引的 id,它是 int 类型的,并且在插入新项目时自动递增。我只是使用唯一代码作为外键上其他表的索引器。

我不知道这是否是个好主意,我是 PHP MySQL 的新手,在将值插入不同的表时遇到了一些问题,所以我使用产品代码将它们链接起来。现在我只知道 mysqli_insert_id 很久以前就可以解决我的问题的东西。

那么我可以只使用字符串的非标准行 ID 而不是 int 类型的行 ID 吗???

最佳答案

我个人建议使用汽车公司 ID。使用您的产品代码作为 ID/主键意味着您以后不能(或将更难)更改产品代码,这可能会导致问题。

详细说明:

如果您最终扩展您的数据库以便您的产品链接到各种表格,使用产品代码作为您的 ID 意味着如果您想要更改您的产品代码,您将必须更新所有表格中的每个条目。使用不是产品代码的 ID 意味着您只需在一个地方(库存表)更新代码,当您加入库存表以获取产品代码时,ID 将完成剩下的工作。

关于php - 在 MySQL 表中使用字符串作为 ID 可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14897604/

相关文章:

php - 在 codeigniter 中向 Controller 注入(inject) SQL

mysql - 将 Entity Framework 模型与 MySQL 服务器一起使用需要哪些步骤?

mysql - 在 Mysql 之间比较多个日期

mysql - 使用 PREPARE 和 EXECUTE 时遇到问题

php - 为什么 Yii 操作在移动到 https ://时会出现 404 错误

php - 尝试 Catch 不触发功能

php - 如何从字符串数字中接收 float

c# - MySQL - 表触发器阻止插入表并且不返回错误?

sql - BULK INSERT 内部如何工作?

mysql - SQL查询以通过连接获取与最大值对应的行