gpt4 book ai didi

mysql - 最好的MySQL主键和表创建

转载 作者:行者123 更新时间:2023-11-29 06:26:11 25 4
gpt4 key购买 nike

MySQL 中理想的主键是什么?

我通常会看到 int 但是:

int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY

是否需要unsigned?我只会有几千行。

这个默认的表创建正确吗?

CREATE TABLE 'whatever' 
'id' int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
) DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci ENGINE=InnoDB ROW_FORMAT=DYNAMIC

最佳答案

“理想的”主键将满足几个重要的属性:

唯一 - 没有两行(或更多行)具有相同的值

简单 - 具有简单 native 数据类型的单列

不可变 - 一旦分配就永远不会改变

匿名 - 不传达任何有意义的信息(出于安全考虑,并通过让管理员减少更改的理由来帮助实现不可变的属性(property))

短 - 通常是整数(数字)类型与受字符集和排序规则约束的较长字符串


INT UNSIGNED 作为数据类型很好;这是 32 位,但上端的值范围大于有符号 INT。所以这与客户端中的 32 位有符号整数不匹配,例如Java 原语 int,因此我们希望在客户端中映射 64 位有符号整数,例如Java 原语long

我们也可以使用INT(省略UNSIGNED),然后我们可以在客户端映射到32位有符号整数。

对于更大范围的值,我们可以使用BIGINT。我肯定会省略 UNSIGNED,这样我们就可以映射到客户端 64 位有符号整数,例如Java long 而不调用 BigInteger 类。


注意:主键的理想属性并不是严格要求;软件项目可以使用自然键、复合键成功,而无需调用代理“id”列作为主键来服务器。

关于mysql - 最好的MySQL主键和表创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59399347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com