数据库一对多、 多对多案例

  • 数据库一对多案例(一个旅游类别对应多个旅游路线)

  一个旅游的类别对应多个旅游线路。类别与旅游线路表是属于1对多的关系

#创建一个旅游类别表
CREATE TABLE tab_category(
  #旅游线路分类主键
  cid INT PRIMARY KEY AUTO_INCREMENT, 
  #旅游线路分类名称 
  cname VARCHAR(100) NOT NULL UNIQUE
);
INSERT INTO tab_category(cname)VALUES('国内自助'),('出境自助'),('国内跟团'),('周边自驾');
#创建一个旅游线路表
CREATE TABLE tab_route(
  #旅游线路主键
  rid INT PRIMARY KEY AUTO_INCREMENT,
  #旅游线路名称
  rname VARCHAR(100) NOT NULL UNIQUE,
  #价格
  price DOUBLE NOT NULL,
  #线路介绍
  routeIntroduce VARCHAR(200),
  #是否上架
  rflag CHAR(1) NOT NULL,
  #上架时间
  rdate VARCHAR(19) NOT NULL,
  #是否主题旅游
  isThemeTour CHAR(1) NOT NULL,
  #收藏数量
  acount INT DEFAULT 0,
  #所属分类
  cid INT NOT NULL,
  #缩略图地址
  rimage VARCHAR(200) NOT NULL,
  CONSTRAINT category_route_FK FOREIGN KEY(cid) REFERENCES tab_category(cid)
);
  • 多对多的关系(一个用户可以收藏多个旅游路线,一个旅游路线可以被用户用户收藏)
  • 关系:多对多的关系
  1. 一个用户可以收藏多个旅游路线。
  2. 一个旅游路线可以被多个用户收藏。
#创建用户表
CREATE TABLE tab_user (
uid INT PRIMARY KEY AUTO_INCREMENT, -- 用户id
username VARCHAR(100) NOT NULL UNIQUE, -- 用户名
PASSWORD VARCHAR(30) NOT NULL, -- 密码
NAME VARCHAR(100), -- 真实姓名
birthday DATE, -- 生日
sex CHAR(1), -- 性别
telephone VARCHAR(11), -- 手机号
email VARCHAR(100), -- 邮箱
STATUS CHAR(1) NOT NULL, -- 是否激活状态
CODE VARCHAR(32) NOT NULL UNIQUE -- 激活码
);
#添加用户数据
INSERT INTO tab_user VALUES
(NULL, 'cz110', 123456, '老王', '1977-07-07', '男', '13888888888', '66666@qq.com', '是', '1386'),
(NULL, 'cz119', 654321, '小王', '1999-09-09', '男', '13999999999', '99999@qq.com', '是', '9898');
#创建收藏表
CREATE TABLE tab_favorite (
fid INT PRIMARY KEY AUTO_INCREMENT, -- 收藏主键
rid INT NOT NULL, -- 旅游线路id
DATE DATE NOT NULL, -- 收藏时间
uid INT NOT NULL -- 用户id
);

 

#增加收藏表数据
INSERT INTO tab_favorite VALUES
(NULL, 1, '2018-01-01', 1), -- 老王选择厦门
(NULL, 1, '2018-01-01', 2), -- 老王选择桂林
(NULL, 1, '2018-01-01', 3), -- 老王选择泰国
(NULL, 2, '2018-01-01', 2), -- 小王选择桂林
(NULL, 2, '2018-01-01', 3), -- 小王选择泰国
(NULL, 2, '2018-01-01', 5); -- 小王选择迪士尼
#描述用户与旅游路线的关系(多对多的关系)
CREATE TABLE route_user(
     r_id   INT , #旅游路线的id
     u_id  INT , #用户的id
     #建立外键的关系
     CONSTRAINT route_user_fk1 FOREIGN KEY(r_id)  REFERENCES tab_route(rid),
     CONSTRAINT route_user_fk2 FOREIGN KEY(u_id)  REFERENCES tab_user(uid),
     #设置为联合主键
     PRIMARY KEY(r_id,u_id)
          
);

更多资料,搜索或扫码关注公众号:数说Cloud

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:Age of Ai 设计师:meimeiellie 返回首页
评论

打赏作者

hyhcloud

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值