2010-07-14 100 views
2

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

  1. 用户名应该是什么?由于设计需要考虑大量用户,INT似乎很小。所以如果不是INT还有什么? BIGINT? VARCHAR?我没有想直吗?

  2. 当我应该选择VARCHAR和文字TINYTEXT,二进制?

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

回答

5

2013的更新:现在互联网的用户数与标记的32位整数大致相同。 Facebook拥有约10亿用户。因此,如果您打算成为下一个Google或Facebook,并且您肯定现在又没有时间进行重新设计,请更大一些。否则坚持容易。

截至2010年:

的int似乎小?你预计有2,147,483,648位用户? (据记载,这就像全球三分之一的人一样,比使用互联网的人总数多四亿人,或者比Facebook多五倍半的用户)。

答案:使用int。不要反套。如果你遇到这样一种情况,那就是我们的老朋友这个32位整数并不适合你,你可能还会有一个天才大学毕业生的工作人员和5b美元的资金注入来帮助解决问题。

+0

也许OP正在运行一个8位版本的SQL – 2010-07-14 04:45:20

+0

@Graphain也许就是这样! – 2010-07-14 04:47:06

+1

是的。你是对的。我在想这件事。事实上,我甚至有一种感觉,我没有直接思考。其主要原因是我以某种方式认为最大值为65535,就好像我在使用16位机器一样。不知道为什么。 你还可以谈谈其他人吗?这些对我来说是更大的问题。这些有一个通用的规则吗? – user220201 2010-07-14 05:00:29

1

我真的做一个用户ID的角色类型,因为我宁愿为“百富”比14860.登录然而,如果它是数字(例如,如果你想改变名称容易,或者你想要最小化外键到用户表的存储),一个整数应该没问题。你预计有多少用户? :-)

我总是会用varchar字符数据,因为我知道支持的功能上的所有SQL数据库(或者至少那些事)。我更喜欢尽可能保持标准,因此在数据库之间移动更容易。

+0

userID!= username – 2010-07-14 04:44:18

+0

@Graphain,抓住了我的中间编辑,但介绍一个用户ID往往是一个人为的关键,这是没有必要的。这取决于你的需求(例如,我的编辑中括号内的东西)。 – paxdiablo 2010-07-14 04:50:31

+0

感谢varchar澄清。 – user220201 2010-07-14 05:01:11

1

username场大概应该是一个varchar(你选择的长度)。如果你在user表上有id_user,我同意上面的答案,即int(20亿)将不仅足以满足你的需求。

就字母数字数据类型而言,它取决于您想要的时间长短。例如,我认为一个varchar(255),或者甚至可能更小(我个人会选择50),可以用于usernamepassword字段。 This chart might help you

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

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

还有nvarchar对Unicode的SQL Server和几个日期类型(我很高兴他们在SQL Server 2008推出了date不包括一时间如smalldatetime)。

+0

谢谢。这是我正在寻找的确切的东西,只是做事情的标准方式。 – user220201 2010-07-14 15:23:05

+0

+1获得有用的图表链接。 – BenV 2010-07-20 03:46:56