社区
C++ 语言
帖子详情
数据库一对多的表如何设计呢?
lisency
2012-07-27 03:29:07
对于教师表,会有这些属性:教师号,职称,职务,
所带课程
这里一个老师可以带好多课程,如何在数据库里面存这些课程号呢?
一个字段只能存一个课程号,那么对于多个课程如果多次存教师号,职称,职务这三个字段会造成极大的空间浪费,那么这个课程字段该怎样设计好呢?
...全文
6218
14
打赏
收藏
数据库一对多的表如何设计呢?
对于教师表,会有这些属性:教师号,职称,职务,所带课程 这里一个老师可以带好多课程,如何在数据库里面存这些课程号呢? 一个字段只能存一个课程号,那么对于多个课程如果多次存教师号,职称,职务这三个字段会造成极大的空间浪费,那么这个课程字段该怎样设计好呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
淡莣_
2014-11-12
打赏
举报
回复
<a href="www.baidu.com">baidu</a>
lisency
2012-07-28
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
查到了吗?你根据我说的去设计一下数据库,应该是没有压力的。
[/Quote]
这个属于完整性问题,我觉得我遇到的应该是规范化问题
lisency
2012-07-28
打赏
举报
回复
[Quote=引用 11 楼 的回复:]
不会,因为建索引了。
索引你可以理解为array的下标。取a[0001][]这样的操作是很快的。
[/Quote]
数据库会自动建立这样一个索引吗,如果是这样的话,我纠结了半天的问题可真就没含量了
aopha
2012-07-28
打赏
举报
回复
不会,因为建索引了。
索引你可以理解为array的下标。取a[0001][]这样的操作是很快的。
lisency
2012-07-28
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
老师表:
老师ID 老师姓名 职称 职务...
其中老师ID是主键(Primary Key)
课程表:
课程ID 老师ID 课程名称...
其中课程ID是主键,老师ID是外键(Foreign Key,需要参考老师表.老师ID)
数据表结构设计,绝大部分情况下是有冗余的,没有冗余的情况不太容易做到,即使做到了,那么开发的人肯定会死去活来的。因为这样的原因,在实践……
[/Quote]
按照这样设计的话,那么如果要查询id为0001所带的所有课程的课程号的话,是不是意味着每查询一次就需要遍历整个表呢?而这个表比较大的话是不是代价会特别大?
pathuang68
2012-07-27
打赏
举报
回复
楼主如果这方面有兴趣,最好去下载一个ERWin之类的设计工具,多试试就会了。
pathuang68
2012-07-27
打赏
举报
回复
老师表:
老师ID 老师姓名 职称 职务...
其中老师ID是主键(Primary Key)
课程表:
课程ID 老师ID 课程名称...
其中课程ID是主键,老师ID是外键(Foreign Key,需要参考老师表.老师ID)
数据表结构设计,绝大部分情况下是有冗余的,没有冗余的情况不太容易做到,即使做到了,那么开发的人肯定会死去活来的。因为这样的原因,在实践中很少用到超过3NF的范式。
数据库范式,看起来好像很简单,其实要理解清楚还是有点难度滴,哥曾经写过一篇文章,试图用简单、实际的例子来说明1NF,2NF和3NF。详见:
数据库范式问题
diablox0147
2012-07-27
打赏
举报
回复
多对多,当发生像LZ这样的情况,表A的元素对应多个表B的元素,表B也同样对于表A的多个元素时,就把2个表的key拿出来做个新的表。
这里可以这么做:
弄个新的表将课程对应提取出来单独储存,带有教师的ID和课程的ID,之后还可以加入一些时间,描述之类的项。 这样就连接了教师表和课程表 而不用对这2个表有任何的修改
漫步者、
2012-07-27
打赏
举报
回复
查到了吗?你根据我说的去设计一下数据库,应该是没有压力的。
lisency
2012-07-27
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
那是数据库设计问题不是C++问题,郁闷
[/Quote]
我是觉得C++版高手多嘛
ziwei55
2012-07-27
打赏
举报
回复
那是数据库设计问题不是C++问题,郁闷
lisency
2012-07-27
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
根据你的描述,你要么分两个表,一个存放教师的信息,一个存放课程的信息,两个表中都有教师号,把教师表中的教师号设置为主关键字,课程表中的设置为外部关键字就行了。能满足你的要求,。如何存放这些数据是根据的你的表的设计来存放的。
[/Quote]
设置外部关键字?没听说过呢?让我查查。
漫步者、
2012-07-27
打赏
举报
回复
根据你的描述,你要么分两个表,一个存放教师的信息,一个存放课程的信息,两个表中都有教师号,把教师表中的教师号设置为主关键字,课程表中的设置为外部关键字就行了。能满足你的要求,。如何存放这些数据是根据的你的表的设计来存放的。
yandong
2012-07-27
打赏
举报
回复
在设计的时候,把这种情况考虑为多对多的形式,不要具体的考虑如何实现的问题。在设计完成的时候,需要进行规范化(如第一范式,第二范式等等)。 对于你这个问题你需要将“多对多”的模式转化为“一对多”的形式。 建议搜一搜数据库设计的步骤以及数据库规范化。
数据库
表
设计
(一对多,多对多)
二、数据
表
设计
(一对多,多对多) 三、
数据库
怎么
设计
多对多的数据
表
回到顶部 一、总结 1、项目中小组和主题之间是多对多的 2、可以将常用信息和不常用信息分成两个
表
来优化
数据库
2、一对多的话:在...
数据库
表
设计
:一对一、一对多、多对多
数据库
实体
表
间有三种对应关系:一对一、一对多、多对多。 一、
设计
总结 1、
设计
E-R图(先画出实体,再画实体间的联系) 2、根据E-R图
设计
表
和
表
结构(具体根据
表
关系进行
设计
) 二、各个
表
关系示例
设计
1、一...
数据库
表
关系详解(一对多、一对一、多对多)
一对多是最基础的
表
间关系,意思是一张
表
A中的一条记录可以对应另一张
表
B中的多条记录,另一张
表
B中的一条记录只能对应一张
表
A中的一条记录 举个一对多的例子: 有两张
表
,
表
A:学生
表
student(子
表
) id name ...
mysql一对多如何
设计
_
数据库
在一对一、一对多、多对多怎么
设计
表
关系
1、一对一可以两个实体
设计
在一个
数据库
中l例如
设计
一个夫妻
表
,里面放丈夫和妻子2、一对多可以建两张
表
,将一这一方的主键作为多那一方的外键,例如一个学生
表
可以加一个字段指向班级(班级与学生一对多的关系)3、多...
mysql多对多
表
设计
_
数据库
怎么
设计
多对多的数据
表
数据库
怎么
设计
多对多的数据
表
一、总结1、项目中小组和主题之间是多对多的2、可以将常用信息和不常用信息分成两个
表
来优化
数据库
2、一对多的话:在多的里面建立一的字段,比如母亲(一)和孩子(多),在孩子里面添加...
C++ 语言
64,690
社区成员
250,497
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章