Sql 3个布尔域或1个带3个值的字段-关系模型数据库
这可能是一个非常简单的问题,但我想知道从关系模型的角度来看,哪种方法更好 我有3种类型的用户:Sql 3个布尔域或1个带3个值的字段-关系模型数据库,sql,database,database-design,mysqli,relational-database,Sql,Database,Database Design,Mysqli,Relational Database,这可能是一个非常简单的问题,但我想知道从关系模型的角度来看,哪种方法更好 我有3种类型的用户: 顾客 工作人员 超级顾客 所有的都有完全相同的字段。我把它们都放在同一个users表中,这也使得我使用的框架更容易使用 我的问题是:使用3个不同的布尔字段来区分每种类型的用户,还是只使用一个具有3个值的字段更好 目前我有三个布尔域:管理员,职员,超级用户 这比只创建1个字段和3个值更清楚吗?(例如,1个代表管理员,2个代表职员,3个代表超级用户) 谢谢。我建议使用一个字段,可能是UserType表
- 顾客
- 工作人员
- 超级顾客
users
表中,这也使得我使用的框架更容易使用
我的问题是:使用3个不同的布尔字段来区分每种类型的用户,还是只使用一个具有3个值的字段更好
目前我有三个布尔域:管理员,职员,超级用户
这比只创建1个字段和3个值更清楚吗?(例如,1个代表管理员,2个代表职员,3个代表超级用户)
谢谢。我建议使用一个字段,可能是UserType表的外键,如下所示:
-- UserType table
-- UserTypeID INT -- PK
-- Type NVARCHAR(50)
在用户表中添加一个字段UserTypeID
一些用户更喜欢可读性,因此当他们知道
类型
列表相对较短时,使用一个字符字符字段而不是整数ID。我建议使用一个字段,可能是UserType表的外键,类似这样:
-- UserType table
-- UserTypeID INT -- PK
-- Type NVARCHAR(50)
在用户表中添加一个字段UserTypeID
一些用户更喜欢可读性,因此当他们知道
类型
列表相对较短时,使用一个字符字符字段而不是整数ID。如果用户只能属于一种用户类型:使用一个字段和三个值
如果用户可以属于多个用户类型:使用三个布尔字段。如果用户只能属于一个用户类型:使用一个字段和三个值
如果一个用户可以属于多个用户类型:使用三个布尔字段。我同意这一点,只要用户只能属于其中一种类型(1-n),您就应该只使用一个字段。我同意这一点,只要用户只能属于其中一种类型(1-n),您就应该只使用一个字段。这取决于:一个用户可以属于多个用户类型吗?如果是这样的话,使用一个字段会变得很棘手。如果你已经知道类型ENUM的数量('1','2','3'),这取决于:一个用户可以属于多个用户类型吗?如果是这样,使用一个字段会变得很棘手。如果你已经知道类型ENUM的数量('1','2','3'),如果用户使用多个类型,那么为类型保留另一个表会好吗?@ArunKillu:是的。即使它只是值(1、2、3)和名称(admin、staff、superuser)之间的映射。在这种情况下,它将充当一个查找表,并定义每个值的含义。@YourCommonSense:不是真的。质疑这一点将是非常混乱的。而且该列中的数据相当模糊。如果用户选择了多种类型,是否最好为该类型保留另一个表?@ArunKillu:是的。即使它只是值(1、2、3)和名称(admin、staff、superuser)之间的映射。在这种情况下,它将充当一个查找表,并定义每个值的含义。@YourCommonSense:不是真的。质疑这一点将是非常混乱的。列中的数据相当模糊。