我在选择数据库表的变量类型时遇到问题。 有人可以给我一些关于如何选择类型的一般指导方针吗?以下是我的一些问题 -
用户标识应该是什么? INT似乎很小,因为设计应该考虑大量用户。那么如果不是INT还有什么? BIGINT? VARCHAR?我不直接思考?
我应该何时选择varchar和text以及tinytext,binary?
我在网上搜索并没有找到任何有用的链接。有人能指出我正确的方向吗?也许我需要读书。
答案 0 :(得分:5)
2013年更新:互联网现在的用户数与签名的32位整数大致相同。 Facebook拥有大约10亿用户。因此,如果您计划成为下一个Google或Facebook,并且肯定将无时间重新设计从现在开始,那么请选择更大的内容。否则坚持下去很容易。
截至2010年:
int似乎很小?你期待有2,147,483,648位用户? (据记录,这就像世界上三分之一的人,比使用互联网的人总数多4亿;或者是用户的5倍半)。
答案:使用int。不要过度思考它。如果你遇到的情况是我们的老朋友32位整数只是没有为你削减它,你可能还会有一个天才大学毕业生的工作人员和50亿美元的资金注入,以帮助解决问题。
答案 1 :(得分:1)
我实际上会将用户ID设置为字符类型,因为我宁愿以“pax”登录而不是14860.但是,如果必须是数字(例如,如果您希望更改名称或者您想要更改名称)为了最小化外键到用户表的存储),整数应该没问题。你期望有多少用户? : - )
我总是将varchar
用于字符数据,因为我知道所有SQL数据库(或至少重要的数据库)都支持。我更愿意尽可能地遵守标准,因此在数据库之间移动更容易。
答案 2 :(得分:1)
您的username
字段应该是varchar
(您选择长度)。如果id_user
表上有user
,我同意上述答案int
(20亿)将足以满足您的需求。
就字母数字数据类型而言,它取决于您希望它的长度。例如,我认为varchar(255)
,或者甚至更小(我个人认为50),适用于username
和password
字段。 This chart might help you
Binary
用于存储非字符数据,如图像。 bit
可用于布尔值。
其他一些有用的类型是uniqueidentifier
用于UUID / GUID,xml
用于XML。虽然您也可以使用varchar
或文本类型。
SQL Server中的Unicode也有nvarchar
和几种日期类型(我很高兴他们在SQL Server 2008中使用date
,但不包括{{1}这样的时间})。