数据库表与表的关系

关系主要有三种,一对一,一对多(多对一),多对多

一对一

例如
有一张保存账号密码的表,还有一张保存个人信息的表,他们通过wid关联,只是一对一关系

create table Wechat(
   wid int PRIMARY key,
	 wpassword varchar(20)
);

create table Wechat_person(
   wid int PRIMARY key,
	 wname varchar(20),
	 sex enum('男','女')
);
ALTER table Wechat_person add CONSTRAINT yueshu1 FOREIGN key(wid)
REFERENCES Wechat(wid);

一对多

一个学生表包含学生编号和学生姓名
一个成绩表包含学生编号,课程编号,课程成绩,因为有多个成绩,所以会有多个编号,
(ps:学生编号和课程编号可以组成联合主键)

现在学生表的学生编号,对成绩表的学生编号就是一对多

create table student(
   sid varchar(10) PRIMARY key,
	 sname varchar(20)
);
CREATE TABLE score(
    sid varchar(10),
	courseid INT,
	score DOUBLE
);
ALTER TABLE score ADD CONSTRAINT yueshu2 FOREIGN KEY(sid) REFERENCES student(sid);

多对多

一张学生表,包含学生编号和学生名字
一张老师表,包含老师编号和老师名字
一个学生对应多个老师,多个老师对应一个学生,所以相当于多个学生对应多个老师
一张表,包含学生编号和老师编号

create table teacher(
   tid int PRIMARY key,
	 tname varchar(20)
);
create table student2(
   sid int PRIMARY key,
	 sname varchar(20)
);
create table tea_stu2(
   tid int,
	 sid int
);
ALTER TABLE tea_stu2 ADD CONSTRAINT 2_tid FOREIGN KEY(tid) REFERENCES teacher(tid);	
ALTER TABLE tea_stu2 ADD CONSTRAINT 2_sid FOREIGN KEY(sid) REFERENCES student2(sid);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值