日期:2014-05-18  浏览次数:20458 次

1对多,多对1 建2个表还是3个表好。。。
同步。。请大家说说。。怎样设计、、、实些例子

------解决方案--------------------
SQL code

2个。
create table t1
(
   stuNo char(10),
   stuName varchar(20)
)
create table 选课
(
   id int,
   stuNo char(10) foreign key references t1(stuNo),
   课程ID
)

学生和课程1对多,
数据可能就是这样:
1,学号1,课程1
2,学号1,课程2
3,学号1,课程3

------解决方案--------------------
举个例子:
课程和任课老师属于一对多:
建一个课程表,课程和老师关系表即可
------解决方案--------------------
这个不一定吧!按你实际情况
两个表,从理论上是可能产生表间偶合
三个表,数据库存储要占空间


------解决方案--------------------
3个表比较好
------解决方案--------------------
SQL code
我也觉得3个表好
如1楼的例子
只要再加个课程信息表就好了

create table 课程信息
(
 课程ID int,
 课程信息 ...
)

------解决方案--------------------
建立几张表,是很根据冗余度来决定的
如果是以前没有接触过的话,你可以先尝试建立一张表
然后,看下,这张表里面,哪些数据,是经常重复的
好比2楼课程和任课老师
任课老师有相应的信息,比方说名字,年龄,所属系,职称之类的
而课程表也有相应的信息,比方说课程名字,人数,时间,教室,等等
如果放在一张表里面,会发现,同一个老师,年龄,所属系什么的都是一样的,这个就重复了,数据冗余
我们完全可以在关系表里面,用一个代号或名字,唯一性的表示一个老师,之后,如果需要这个老师的信息,可以在老师表里面获得,2张表联合查询,这样数据就精简多了
后面的也以此类推
当然,如果老师的信息,除了名字,数据库里面什么都没有,那么可以就不用创建第二张表,因为光一个名字,不值得,这个时间长了,就会有感觉了