Oracle笔记(十六)数据库设计范式(二)

2014-11-24 14:50:25 · 作者: · 浏览: 1
);
CREATE TABLE course (
  cid NUMBER PRIMARY KEY,
  cname VARCHAR2(50) NOT NULL,
  credit NUMBER NOT NULL
);
CREATE TABLE studentcourse (
  stuid NUMBER REFERENCES student(stuid),
  cid NUMBER REFERENCES course(cid),
  score NUMBER
); www.2cto.com
INSERT INTO student (stuid,stuname) VALUES (1,'张三');
INSERT INTO student (stuid,stuname) VALUES (2,'李四');
INSERT INTO student (stuid,stuname) VALUES (3,'王五');
INSERT INTO course (cid,cname,credit) VALUES (10,'Java',3);
INSERT INTO course (cid,cname,credit) VALUES (11,'Oracle',1);
INSERT INTO course (cid,cname,credit) VALUES (12,' Linux',2);
INSERT INTO studentcourse (stuid,cid,score) VALUES (1,10,89);
INSERT INTO studentcourse (stuid,cid,score) VALUES (2,10,99);
INSERT INTO studentcourse (stuid,cid,score) VALUES (3,10,78);
INSERT INTO studentcourse (stuid,cid,score) VALUES (1,11,79);
INSERT INTO studentcourse (stuid,cid,score) VALUES (2,11,89);
这种设计与之前讲解运动会-项目-成绩的设计是一样的。
三、第三范式:一对多 www.2cto.com
例如,现在一个学校有多个学生,如果用第一范式无法实现,而如果用第二范式则表示多对多的关系,即:一个学校有多个学生,一个学生在多个学校,不符合于要求,所以此时可以使用第三范式,参考之前的部门和雇员操作实现,一个部门有多个雇员,所以按照设计编写如下:
CREATE TABLE school (
  sid NUMBER PRIMARY KEY,
  sname VARCHAR2(20) NOT NULL
);
CREATE TABLE student (
  stuid NUMBER PRIMARY KEY,
  stuname VARCHAR2(20) NOT NULL,
  sid NUMBER REFERENCES school(sid)
);
而在实际的工作之中,第三范式的使用是最多的。
以上的三个范式只是作为参考使用。