当我有一个表例如用户并且该表有一个用户类型字段时,我可以只将用户类型字段设为int,编程时我知道type = 1是admin,而type = 2其他用户等等?或者我应该在varchar中输入type =“admin”,type =“other”,然后在应用程序中,任何人都可以理解什么类型,以及每个值代表什么? 另一个解决方案是创建一个UserType表,只需要“id”和“description”并将其连接到User,但这对性能有好处吗?只是想知道id是什么意思?
如果我使用Int,只有正在开发的人知道1和2的含义。哪个是每个人的最佳做法和优点和缺点?谢谢
表示例:
User
_________
id
name
email
type
答案 0 :(得分:0)
我会有两个表users
和users_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约束的单独表将为您提供良好的服务。您可以使用视图来合并描述性信息,尽管出于多种目的,助记符将同样或更好地发挥作用。