在数据库设计时,存在多张表有关系时该怎么设计为最优?

例如,现在有个table_user其中的字段有id,username,age;又有一个角色表table_role,其中字段有id,rolename。这时候如果要给这两个表... 例如,现在有个table_user 其中的字段有 id,username,age;又有一个角色表table_role,其中字段有id,rolename。这时候如果要给这两个表加入关系时,是在table_user表里面加入一个新的字段和table_role建立关系呢?还是再另外建立一张表,来保存这个表之间的关系比较好? 展开
 我来答
wy_1900
2013-05-03 · TA获得超过4503个赞
知道大有可为答主
回答量:4260
采纳率:63%
帮助的人:3408万
展开全部
所谓的三范式了解就行,完全照做死得快
像你这种表,一定要先定义需求
比如用户有多个角色,就需要建立一个用户角色对应表
比如用户只有一个角色,那在用户表加个字段就行
另外最好不要弄什么外键之类的,原来我也弄,后来烦得要死,总是约束错误之类的,编个程序都不省心,结果全给去了,只要逻辑没有错误,数据就不会出错。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
17号观察室
2013-05-03 · TA获得超过5730个赞
知道大有可为答主
回答量:3666
采纳率:66%
帮助的人:1371万
展开全部
我公司是做软件的 也设计到数据库的设计 刚好你说的 我们已经设计好了 而且我们不仅有你说的这些还有其他的
那么现在就说说你应该怎么做吧:需要3个表
第一:用户表 主要字段 id,name,age
第二:角色表 主要字段id,name
第三:用户角色表 table_userrole 主要字段:id,userid,roleid
说明:userid关联用户表的id,roleid关联角色表的id
好处:扩展性好 一个用户对应一个角色或对应多个角色没什么区别 便于管理 而且都是通过id管理(id一般是主键 有聚集索引 速度也快)
有问题可以随时找我 希望解决了楼主的问题
追问
那么表的主键是设置为自动增长好,还是采用UUID这种形式的比较好呢?
追答
是的 让他自动增长 
然后通过主外键关系 约束 以免产生垃圾数据
明白不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
厍曼冬6o
2013-05-03 · TA获得超过1569个赞
知道小有建树答主
回答量:1336
采纳率:0%
帮助的人:1207万
展开全部
根据E-R模型,用户和角色是多对多的关系,所以,需要另建一张表保存他们之间的关系,才可以达到3NF。架构合理,扩展性才好,生命力才强
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzkongfu
2013-05-03 · TA获得超过154个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:106万
展开全部
加字段比较好,效率会高,但如果mapping的重复很高的话,会造成空间浪费,不过如果数据量小的话,无所谓了
追问
加字段的话,会不会在进行CRUD操作时出现繁琐!,例如删除时,需要先删除关系,那么操作起来是否会带来麻烦!
追答
不会啊,只有你不加主外键关系就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友26bdbaa
2013-05-03 · 超过16用户采纳过TA的回答
知道答主
回答量:134
采纳率:0%
帮助的人:32万
展开全部
只保留对方表的主键ID 就可以了,设置外键
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式