关于建表的补充
<1对多 1的一方建立集合>
<多对1 多的一方创建 一的一方的对象>
1.联合主键的声明
create table student(
sid number(7) primary key,
sname varchar2(15) not null
);
create table course(
cid number(7) primary key,
cname varchar2(15) not null
);
create table scoretable(
sid number(7) references student(sid) ,
cid number(7) references course(cid) ,
score number(3) ,
primary key(sid,cid) ----> 联合主键
);
2.联合唯一键
create table test1(
last_name varchar2(15) unique,
first_name varchar2(15) unique
);
create table test2(
last_name varchar2(15),
first_name varchar2(15),
unique(last_name,first_name)
);
关联关系数据的表的建立(一对一 一对多 多对多)
1.一对一 (Person --- Computer)
create table person(
id number(7) primary key,
name varchar2(15) not null,
age number(2),
cid number(7) references computer(id) unique
);
create table Computer(
id number(7) primary key,
type varchar2(15) not null
);
fk + uk 表示一对一, fk(体现关系) uk(保证一对一)
2.一对多 (student team )
create table student(
id number(7) primary key,
name varchar2(15) not null,
tid number(7) references team(id)
);
create table team(
id number(7) primary key,
name varchar2(15) not null
);
只需要在多的一方表里建立外键即可.
3.多对多 ( Student Course)
create table student(
sid number(7) primary key,
sname varchar2(15) not null
);
create table course(
cid number(7) primary key,
cname varchar2(15) not null
);
create table scoretable(
sid number(7) references student(sid) ,
cid number(7) references course(cid) ,
score number(3) ,
primary key(sid,cid) ----> 联合主键
);
关系数据库无法直接表示多对多,需要通过中间表,将一个多对多拆成两个一对多
<1对多 1的一方建立集合>
<多对1 多的一方创建 一的一方的对象>
1.联合主键的声明
create table student(
sid number(7) primary key,
sname varchar2(15) not null
);
create table course(
cid number(7) primary key,
cname varchar2(15) not null
);
create table scoretable(
sid number(7) references student(sid) ,
cid number(7) references course(cid) ,
score number(3) ,
primary key(sid,cid) ----> 联合主键
);
2.联合唯一键
create table test1(
last_name varchar2(15) unique,
first_name varchar2(15) unique
);
create table test2(
last_name varchar2(15),
first_name varchar2(15),
unique(last_name,first_name)
);
关联关系数据的表的建立(一对一 一对多 多对多)
1.一对一 (Person --- Computer)
create table person(
id number(7) primary key,
name varchar2(15) not null,
age number(2),
cid number(7) references computer(id) unique
);
create table Computer(
id number(7) primary key,
type varchar2(15) not null
);
fk + uk 表示一对一, fk(体现关系) uk(保证一对一)
2.一对多 (student team )
create table student(
id number(7) primary key,
name varchar2(15) not null,
tid number(7) references team(id)
);
create table team(
id number(7) primary key,
name varchar2(15) not null
);
只需要在多的一方表里建立外键即可.
3.多对多 ( Student Course)
create table student(
sid number(7) primary key,
sname varchar2(15) not null
);
create table course(
cid number(7) primary key,
cname varchar2(15) not null
);
create table scoretable(
sid number(7) references student(sid) ,
cid number(7) references course(cid) ,
score number(3) ,
primary key(sid,cid) ----> 联合主键
);
关系数据库无法直接表示多对多,需要通过中间表,将一个多对多拆成两个一对多