关于建表的补充

来源:互联网 发布:sql server log工具 编辑:程序博客网 时间:2024/05/16 03:54
关于建表的补充
<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)     ----> 联合主键
   );
   
   关系数据库无法直接表示多对多,需要通过中间表,将一个多对多拆成两个一对多
0 0
原创粉丝点击