很简单的问题,关于数据表的设计原则

m00ners 2006-12-13 10:28:43
两种方案
1、表User :UserID,UserName,Sex,DepartmentID
表Department:DepartmentID,DepartmentName,Description
视图User :UserID,UserName,Sex,DepartmentName

2、表User :UserID,UserName,Sex
表Department:DepartmentID,DepartmentName,Description
表Relation :UserID,DepartmentID
视图User :UserID,UserName,Sex,DepartmentName


哪种方案比较好?感觉方案2分解的太彻底,加入一个User时候要对两个表操作。
但如果User表有很多类似于DepartmentID的字段呢?

...全文
292 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
m00ners 2006-12-15
  • 打赏
  • 举报
回复
to akuzou(会飞的猫):

可能是我过虑了。分成两个表的想法源于判断用户合法性(只使用到password字段)这个动作会频繁的使用,而其他字段不会被频繁的查询(类如年龄等等)。
但既然对查询速度没有影响,那么对表的拆分也就没有必要了。

谢谢你耐心的回答。
下班前结贴。
akuzou 2006-12-15
  • 打赏
  • 举报
回复
插入操作的确是对所有字段进行操作,但是判断用户合法性时候,只用到uerid与password。
所以我想做两个表一个只放userid与password,另一个放userid和其他flag等等等等的字段。
但不知道这样对提高查询速度(判断用户合法性)有没有帮助,因为查询的表只剩下两个字段了。
---------------------------------
按你这么说,我要查用户年龄的时候,也要另外做成一张表。只要查一个属性就要另外新建一张表?楼主想得偏了!另外,你说放在一张表中会影响查询速度,回答是不会的!
akuzou 2006-12-14
  • 打赏
  • 举报
回复
m00ners(M00N) ( ) 信誉:100 Blog 2006-12-13 10:56:12 得分: 0

如果User表还有一些例如Password、flag(多个)的字段。用不用把他们分解到另外一个表呢?
因为有些查询只针对其中的某些字段,而插入则是对所有字段操作。
-------------------------
感觉楼主考虑的问题点可能存在些问题,
因为有些查询只针对其中的某些字段,而插入则是对所有字段操作。这是对表很正常的操作啊,没有转折的地方,也没有什么相背的地方啊!
如果你插入数据只插入Password、flag(多个),其他不管,没有任何意义,其实表的设计也不允许这样!user存在只update就可以了,不存在才执行插入操作
m00ners 2006-12-14
  • 打赏
  • 举报
回复
to:akuzou(会飞的猫)

可能是我没表达清楚,抱歉。

插入操作的确是对所有字段进行操作,但是判断用户合法性时候,只用到uerid与password。
所以我想做两个表一个只放userid与password,另一个放userid和其他flag等等等等的字段。
但不知道这样对提高查询速度(判断用户合法性)有没有帮助,因为查询的表只剩下两个字段了。

另外这样做的负面影响就是当添加删除用户的时候,要对两张表同时操作,很麻烦。
或者做一个视图+触发器,对视图进行操作,更加繁琐。

不知道你的意见如何?谢谢
m00ners 2006-12-13
  • 打赏
  • 举报
回复
可能表述的不清楚,上面的高手们再帮下忙,我好把帖子结了
m00ners 2006-12-13
  • 打赏
  • 举报
回复
看你有没有一个人属于多个部门的情况
------------------------------------------
没有一个人属于多个部门的情况,但是
------------------------------------------
如果User表还有一些例如Password、flag(多个)的字段。用不用把他们分解到另外一个表呢?
因为有些查询只针对其中的某些字段,而插入则是对所有字段操作。


我想问的是 是建立一个大表,然后分解为几个视图呢(感觉插入会比较容易)?还是分别建立几张表,然后建立一个大的视图呢(感觉查询会比较快)?
happydreamer 2006-12-13
  • 打赏
  • 举报
回复
看你有没有一个人属于多个部门的情况
m00ners 2006-12-13
  • 打赏
  • 举报
回复
数据多还是表2好...
------------------------
为什么呢?
m00ners 2006-12-13
  • 打赏
  • 举报
回复
1种方案就OK了,省了张表维护,只多一个字段,而且一个userid在多个departmentid的情况比较少
---------------------------------------------------------------------
如果User表还有一些例如Password、flag(多个)的字段。用不用把他们分解到另外一个表呢?
因为有些查询只针对其中的某些字段,而插入则是对所有字段操作。


我想问的是 是建立一个大表,然后分解为几个视图呢(感觉插入会比较容易)?还是分别建立几张表,然后建立一个大的视图呢(感觉查询会比较快)?
xiaoku 2006-12-13
  • 打赏
  • 举报
回复
如果存在一个人在几个部门的情况下,使用2好点...
否则建议 1
akuzou 2006-12-13
  • 打赏
  • 举报
回复
1种方案就OK了,省了张表维护,只多一个字段,而且一个userid在多个departmentid的情况比较少
caixia615 2006-12-13
  • 打赏
  • 举报
回复
数据多还是表2好...
m00ners 2006-12-13
  • 打赏
  • 举报
回复
有没有关于数据库建立表原则的参考书籍?一并推荐一下。

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧