Cha*_*ugh 7 mysql database-design
我正在查看由比我更有经验的人创建的数据库创建脚本,我注意到主键设置为已签名。
所以像这样,
CREATE TABLE `exampleTable`
(
`pk` INT (11) NOT NULL AUTO_INCREMENT,
`content` TEXT
) ENGINE = INNODB
ROW_FORMAT = COMPACT;
Run Code Online (Sandbox Code Playgroud)
而不是这样,
CREATE TABLE `exampleTable`
(
`pk` INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,
`content` TEXT
) ENGINE = INNODB
ROW_FORMAT = COMPACT;
Run Code Online (Sandbox Code Playgroud)
在我看来,通过将主键设置为无符号,可以使可能的值数量增加一倍,我是否遗漏了一些实际上对主键使用有符号 int 更好的东西?
您可能会被告知的原因包括:
或者,如果您主张使用有符号数的负半部分:
如果你在没有先建立良好声誉的情况下在团队中宣传不正常的事情,你就有可能冒着人们攻击你的倡议的风险,你的良好声誉将更难建立,你甚至可能获得坏名声,即使你什么都没做错误,或者说或没有造成任何困难,或者是任何出错的因素或共同因素。
如果你对此提出异议,那么权力也会攻击你,并让你受到控制,他们会说出“你的态度”这个词,你很快就会失望(“基于意见”是另一个关键词他们可能会在提及您或您的贡献时使用)。
问题不在于负数或无符号数,而是群体思维,以及制定规则的人、无论他们是谁以及他们是否真的知道“正常”的执行。这方面的数据库世界充满了,就像许多男性争夺卓越和权力的任何其他技术领域一样。
你看,如果这只是一个技术问题,它很容易解决。我不是说很容易分享,但至少很容易解决。它只需要你的技巧、注意力、细心和彻底。
不幸的是,当事情偏离平均水平时,即使它们在某种意义上“更好”,它们也会成为人类的“问题”。现在要解决它,你需要接受、耐心、谈判、说服,以及更多。比技术问题更难解决的事情。
背离规范有时非常好,但有时它们会动摇并检验个体差异、假设和假设以及团队的凝聚力和他们的信仰和文化,并成为影响团队前进方向及其成员的因素. 技术人员和人员之间的动态是复杂的,通常我们无法说出短期、长期什么更可取;我们甚至不会理解这一切或有相同的意见。
一个小小的技术问题、配方、选项或偏好可能只是什么,或者它可能成为冰山一角(对于雄伟的帆,或沉船),或者就像抚摸一盏精灵灯。我们都是一盒惊喜,你不知道门后面是什么,直到你按下那个按钮。
一INT
列可以容纳:4,294,967,296 个不同的值。
它们是否已签名并不重要。显然,您更喜欢处理正数而不是负数和正数。
如果您需要更多行,那么您应该将其更改为BIGINT
.
看看MySQL文档:
11.2.1 整数类型(精确值)-INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT
+---------+-------+-----------------+-----------------+
| Type | Bytes | Minimum value | Maximum value |
+---------+-------+-----------------+-----------------+
| Signed | | | |
| INT | 4 | -2147483648 | 2147483647 |
+---------+-------+-----------------+-----------------+
| Unsigned| | | |
| INT | 4 | 0 | 4294967295 |
+---------+-------+-----------------+-----------------+
Run Code Online (Sandbox Code Playgroud)