多对多关系怎么设计数据表?

比如说一个学生管理系统,一个学生可以选多门课,一门可以有多个学生来选,学生表学号stu_id是主键,课程表cou_id是主键,多对多关系要用中间表---“学生选课表”en... 比如说一个学生管理系统,一个学生可以选多门课,一门可以有多个学生来选,学生表学号stu_id是主键,课程表cou_id是主键,多对多关系要用中间表---“学生选课表”enrol来实现数据的关联,enrolyou两种设计方式,第一种是:
CREATE TABLE enrol (
cou_id int ,
stu_id int ,
accept varchar(32) ,
score varchar(32) ,

CONSTRAINT enrol_ibfk_1 FOREIGN KEY (cou_id) REFERENCES course (cou_id),
CONSTRAINT enrol_ibfk_2 FOREIGN KEY (stu_id) REFERENCES student (stu_id),
primary key(class_id,stu_id)
);
就是采用复合主键,第二种是:
CREATE TABLE enrol (
enrol_id int primary key,
cou_id int ,
stu_id int ,
accept varchar(32) ,
score varchar(32) ,

CONSTRAINT enrol_ibfk_1 FOREIGN KEY (cou_id) REFERENCES course (cou_id),
CONSTRAINT enrol_ibfk_2 FOREIGN KEY (stu_id) REFERENCES student (stu_id)
);
采用了一个单独的主键,stu_id和cou_id知识普通的字段。
这两种方式哪个好?为什么?
现在都不建议使用复合主键了吗,但是不使用复合主键的话,没法保证学生不会重复选课。
展开
 我来答
roserouge
2009-01-17 · TA获得超过462个赞
知道小有建树答主
回答量:1554
采纳率:0%
帮助的人:488万
展开全部
添加一张中间表 专门保存另外两张表的的关联关系 一般是另两张表的id
很标准的实现方式 - -!随便一本sql书里都有 你能好好去看看书么?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友620e5ed
2009-01-17 · TA获得超过234个赞
知道小有建树答主
回答量:413
采纳率:0%
帮助的人:0
展开全部
在网上找简单的例子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式