数据库字段类型为int或varchar

时间:2016-07-17 00:38:41

标签: database database-design database-schema entity-relationship

当我有一个表例如用户并且该表有一个用户类型字段时,我可以只将用户类型字段设为int,编程时我知道type = 1是admin,而type = 2其他用户等等?或者我应该在varchar中输入type =“admin”,type =“other”,然后在应用程序中,任何人都可以理解什么类型,以及每个值代表什么? 另一个解决方案是创建一个UserType表,只需要“id”和“description”并将其连接到User,但这对性能有好处吗?只是想知道id是什么意思?

如果我使用Int,只有正在开发的人知道1和2的含义。哪个是每个人的最佳做法和优点和缺点?谢谢

表示例:

User
_________
id
name
email
type

2 个答案:

答案 0 :(得分:0)

我会有两个表usersusers_types

users                          users_types
-----                          -----------
id INT                         id INT
name VARCHAR(100)              title VARCHAR(20)
email VARCHAR(100)
type INT (References user_types(id))

这就是我经常这样做的方式。原因如下:

  • 在我缺席的情况下,其他人可以轻松维护和继续
  • 保持桌子简洁明快
  • 提升表现
  • 如果需要添加/删除更多组(可伸缩性),则易于扩展
  • 可以在群组中添加或删除用户
  • 权利可以分批分配。

答案 1 :(得分:0)

当存在少量相当静态的类型时,我经常使用3个字符的助记符而不是整数。仅使用大写字母,提供17,576个排列,其中许多很容易被识别。为了证明,可以考虑通过2个字符的邮政编码识别50个州,并通过3个字母的代码识别全世界的所有机场。我打赌你知道LAX在哪里。

如果您没有为类型使用单独的表,则可以使用CHECK约束或用户定义的类型来实现相同的强制。如果只有一个描述列(例如," name"),则可以在CASE语句中包含计算列。

但是,如果您不想在每次显示新类型时更改架构,则具有FK约束的单独表将为您提供良好的服务。您可以使用视图来合并描述性信息,尽管出于多种目的,助记符将同样或更好地发挥作用。