多表之间关系的维护(部分)

1.多表之间关系的维护
(1)外键约束:forerign key
①给product中的这个cno添加一个外键约束
1)alter table product add foreign key(cno) references category(cid);(references汉译:参考)(词句含义:product表中的cno和category中的cid对应:cno的1对应cid的1,cno的2对应cid的2)
2)从分类表中,删除分类为5信息,
a.delete from category where cid=5;//删除失败
b.首先得去product表,删除所有分类ID5商品
(2)建数据库原则
①通常情况下,一个项目/应用建一个数据库
(3)多表之间的建表原则
①一对多:分类对商品
1)建表原则:在多的一方添加一个外键,指向另一方的主键
②多对多:老师对学生,学生对课程
1)建一张中间表,得将多对多的关系拆成一对多的关系,中间表至少要有两个外键,这两个外键分别指向原来的那张表
③一对一:公民和身份证
1)建表原则:
a.将一对一的情况,当作是一对多情况处理,在任意一张表添加一个外键,并且这个外键要唯一,指向另一张表
b.直接将两张表合成一张表
c.将两张表的主键建立起连接,让两张表里面主键相等
实际用途:拆表操作
(1).相亲网站:
①个人信息:姓名,性别,年龄,身高,体重,三围
②拆表操作:将个人的常用信息和不常用信息拆开,减少表的操作

(4)用户表
①create table user(
uid int primary key auto_increment,
username varchar(31),
password varchar(31),
phone varchar(11)
);
insert into user values(1,’zhangsan’,’123’,’13811118888’);
(5)订单表(订单编号,总价,订单时间,地址,外键用户的ID)
①create table orders(
oid int primary key auto_increment,
sum int not null,
otime timestamp,
address varchar(100),
uno int,
foreign key(uno) references user(uid)
);
insert into orders values(1,200,null,‘黑马前台小黑屋’,1);
insert into orders values(2,200,null,‘黑马后台1702’,1);
(6)商品表(商品ID,商品名称,商品价格,外键cno)
①create table product(
pid int primary key auto_increment,
pname varchar(10),
price double,
cno int,
foreign key(cno) references category(cid)
);
(7)商品分类表(分类ID,分类名称,分类描述)
①create table category(
cid int primary key auto_increment,
cname varchar(15),
cdesc varchar(100)
);
(8)订单项(中间表:订单ID,商品ID,商品数量,订单项总价)注:接外键必须放在表最下面
①create table orderitem(
ono int,
pno int,
ocount int,
subsum double,
foreign key(ono) references orders(oid),
foreign key(pno) references product(pid)
);
(9)给1号订单添加商品
①insert into orderitem values(1,7,100,100);
②insert into orderitem values(1,8,101,100);
(10)给2号订单添加商品
①insert into orderitem values(2,5,1,35);
②insert into orderitem values(2,3,3,99);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值