数据库表设计

时间:2010-07-14 04:39:08

标签: database database-design

我在选择数据库表的变量类型时遇到问题。 有人可以给我一些关于如何选择类型的一般指导方针吗?以下是我的一些问题 -

  1. 用户标识应该是什么? INT似乎很小,因为设计应该考虑大量用户。那么如果不是INT还有什么? BIGINT? VARCHAR?我不直接思考?

  2. 我应该何时选择varchar和text以及tinytext,binary?

  3. 我在网上搜索并没有找到任何有用的链接。有人能指出我正确的方向吗?也许我需要读书。

3 个答案:

答案 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),适用于usernamepassword字段。 This chart might help you

Binary用于存储非字符数据,如图像。 bit可用于布尔值。

其他一些有用的类型是uniqueidentifier用于UUID / GUID,xml用于XML。虽然您也可以使用varchar或文本类型。

SQL Server中的Unicode也有nvarchar和几种日期类型(我很高兴他们在SQL Server 2008中使用date,但不包括{{1}这样的时间})。