一个数据库设计问题,请各位指点

时间:2022-12-11 17:59:10
我们要做设计一个用户管理表,管理员表。其对应的字段如:用户名,密码呀。还有其它的信息如真实姓名,爱好等。现在有两种方案:
1、设计为三个表,其一为用户基本信息表,只存密码,Email等必填信息。第二为管理员表,也存密码,Email等,还有几个特殊的字段,这在用户表中是没有的。第三为附加信息表,即存储用户和管理员的共同附加信息,比如真实姓名等。它们之间通过连接。注:三表的记录数是相等的,不存在一对多的关系

2、设计为一个表。表中列出所有字段,因为管理员和用户基本信息中只有很少的不相同之处。外加一字段区分权限,这时管理员也可以做为用户登陆。

请高手帮忙设计一下,哪种方法更好?为什么?

8 个解决方案

#1


第一种方案要好一些,但我会选择将经常使用的信息放一个表,包括管理员信息,只要它是常用的就放在第一个表,其它不常用的信息就放在第二个表,但这只是对于不常用的信息非常多的情况,如果较少,则干脆放在一个表中.

原因是数据库记录字段过多可能造成i/o问题

#2


如果你的所有的字段數不是太多的話.
我會選擇第二種方案.增加一個字段作為"權限".
因為管理员和用户基本信息中只有很少的不相同之处.
為什麼不選擇第二種呢?
既可以加快查詢的速度(不用連接其他表).
又降低了處理的難度(為了保證三表的记录数是相等而要做出一些約束).

我們都是提出一種意見.關鍵還要看你的決策.
實踐中最能提高水平.

#3


我倾向于第二种方法,我觉得这样编程方便,而且数据量也不可能很大,用三个表编程太复杂。

#4


我认为设计时应考虑角色和用户的区别!
建议可以设计用户表、角色表、功能列表,这样为角色定义好功能列表之后,直接分配给用户就行了,管理员是一个用户,可以将管理员的权限列表定义为角色,分配给哪个用户,哪个用户就成了管理员!类似的还可以定义其他类型的角色,如操作员等!
一般在系统中权限管理部分记录数不会特别多,这部分基本上不会存在速度问题!
个人观点!仅供参考!

#5


我想我肯定会选后一种。
编成简单。管理也容易。

另外,我一般用一个二进制数串。来区分权限。

#6


从安全角度考累,第一种好(建议第一种)
从编程方面,第二种

#7


谢谢各位

#8


如果数据量不是很大,我主张用第二个方案,这样数据表之间没有复杂的关系,在进行数据库操作时可以提高效率,从编程的角度来将也是比较方便的。
如果采用第一种方案,我建议使用两个数据表就够了。即:用户基本信息表(用户名、密码、权限)用于用户身份及权限验证;另外一个表用于存放用户和管理员的共同附加信息和特殊信息。这样可以减少表之间的关联,提高数据库操作效率。

#1


第一种方案要好一些,但我会选择将经常使用的信息放一个表,包括管理员信息,只要它是常用的就放在第一个表,其它不常用的信息就放在第二个表,但这只是对于不常用的信息非常多的情况,如果较少,则干脆放在一个表中.

原因是数据库记录字段过多可能造成i/o问题

#2


如果你的所有的字段數不是太多的話.
我會選擇第二種方案.增加一個字段作為"權限".
因為管理员和用户基本信息中只有很少的不相同之处.
為什麼不選擇第二種呢?
既可以加快查詢的速度(不用連接其他表).
又降低了處理的難度(為了保證三表的记录数是相等而要做出一些約束).

我們都是提出一種意見.關鍵還要看你的決策.
實踐中最能提高水平.

#3


我倾向于第二种方法,我觉得这样编程方便,而且数据量也不可能很大,用三个表编程太复杂。

#4


我认为设计时应考虑角色和用户的区别!
建议可以设计用户表、角色表、功能列表,这样为角色定义好功能列表之后,直接分配给用户就行了,管理员是一个用户,可以将管理员的权限列表定义为角色,分配给哪个用户,哪个用户就成了管理员!类似的还可以定义其他类型的角色,如操作员等!
一般在系统中权限管理部分记录数不会特别多,这部分基本上不会存在速度问题!
个人观点!仅供参考!

#5


我想我肯定会选后一种。
编成简单。管理也容易。

另外,我一般用一个二进制数串。来区分权限。

#6


从安全角度考累,第一种好(建议第一种)
从编程方面,第二种

#7


谢谢各位

#8


如果数据量不是很大,我主张用第二个方案,这样数据表之间没有复杂的关系,在进行数据库操作时可以提高效率,从编程的角度来将也是比较方便的。
如果采用第一种方案,我建议使用两个数据表就够了。即:用户基本信息表(用户名、密码、权限)用于用户身份及权限验证;另外一个表用于存放用户和管理员的共同附加信息和特殊信息。这样可以减少表之间的关联,提高数据库操作效率。