Oracle数据库:表的关系:一对多,一对一,多对多,一一继承和修改的关系,表不是重点,重点是数据和约束关系

Oracle数据库:表的关系:一对多,一对一,多对多,一一继承和修改的关系,表不是重点,重点是数据和约束关系

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开
测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库
这oracle比sql安全,强大多了,所以你需要学习,最重要的,你要是考网络警察公务员,这玩意你不会就别去报名了,耽误时间!

oracle系列文章:
【1】Oracle数据库:啥是oracle数据库?你为啥要学oracle?
【2】Oracle数据库:oracle 11g安装教程,已安装好的oracle各个文件夹的作用,oracle用户权限怎么样
【3】Oracle数据库:oracle启动,oracle客户端工具plsql安装教程和使用方法
【4】Oracle数据库:创建表空间,创建新用户,给用户分配对象、角色和系统权限,登录新用户建表
【5】Oracle数据库:链接配置,包括sqlnet.ora里面的transnames.ora配置数据库标识符SID,listener暂时简单了解
【6】Oracle数据库:net configureation assistant工具配置监听listener,配置本地网络访问服务器上的数据库
【7】Oracle数据库:oracle字符类型、数字类型、创建表表名的命名规则
【8】Oracle数据库:约束条件:主键约束、唯一约束、检查约束、非空约束、外键约束、默认值填写


oracle数据库中表关系

在这里插入图片描述
名词部分,往往存数据库里面
用户user是一个表
购买是action
商品item是一个表
用户和商品之间的关系怎么建立呢,咱们慢慢说

oracle数据库一对多的关系

在这里插入图片描述
咱们去建立俩表
教室表有id和班级名name
id唯一主键
在这里插入图片描述
在这里插入图片描述

学生表有学号id和学名s_name,他的班级c_name
学生的id也是唯一约束的

班级c_name是外键列,用来放班级的主键id的值
在这里插入图片描述
在这里插入图片描述

这样的话,就是给学生表里面的c_name添加了外键约束

这就是一个班级对应多个学生数据的对应关系:即一对多的数据表关系

现在给班级表里面设置好班级
在这里插入图片描述
然后我们给学生表添加信息
你添加1班是可以的,2班就不行
在这里插入图片描述
但是我现在遇到一个很恶心的事情,我给这学生表里面添加数据就会卡死
这个一般不卡,就是给这种带外键约束的列添加数据时,就会卡死,不懂为啥????

后来我解决了,就是选c_name时,你不能往里面写,你要选下拉菜单,给你的外键约束,你只能从中选,就不会卡死
在这里插入图片描述
在这里插入图片描述
看到了吗,2就不行,没有2班

oracle数据库一对一的关系

一对多都这么简单,一对一可不就容易了
在这里插入图片描述
一个用户拥有一个角色,一个角色只能分配给一个角色
外键如果班级和学生表,里面的列,都是唯一约束的话,其实就一对一了
还记得上面的表格不,如果c_name约束唯一的话,就是一对一

我们重新举例

t_users表整一个id和name【这里可以用t_classroom表,因为他们内部就这两个列】
在这里插入图片描述

我们创建角色表t_role表
里面搞几个列
id列
r_name 角色名称
新建一个列外键列:u_id,就上面班级id
在这里插入图片描述

此时,你可以给u_id添加一个外键,挂班级id——一对多的关系搞定了,很多学生都可以用一个班级
同时,

我们也希望这个u_id是唯一的,加一个唯一约束,如果给uid唯一了,那你一个学生就只能有一个班级了

在这里插入图片描述

这就是一对一的关系,懂???
咱们添加一个数据瞅瞅

你班级绝对只能添加1个1班
否则就炸了

在这里插入图片描述
只能存一个
在这里插入图片描述
这样就是一对多到一对一的改进
就是只需要把外键列那个列,再设置一个唯一性约束即可

你可以看出来,表其实不重要,重要的是数据关系

oracle数据库多对多的关系

在这里插入图片描述

俩表是不行的
需要建立中间表
也就是最开始我说的额action

比如

1表就是我们上面的t_classroom
3表就是我们上面的t_role
在这里插入图片描述
2表新建action表吧
u_id,r_id分别不能超出1和3表里面那些id
否则gg

在这里插入图片描述
中间还得把2表的uid和rid控制唯一,且非空
那么我们发明一个联合主键约束

这样,同时满足1和3表的id才能玩

现在我们把订单表和商品表建立好
order表
在这里插入图片描述
在这里插入图片描述

item表
在这里插入图片描述
在这里插入图片描述

中间表最好就通过联合两个表的名字,便于理解
order_item表
中间表只是建立关系,而不放业务数据
在这里插入图片描述

中间的名字也是希望好理解
首先,俩都是主键哦
联合主键
在这里插入图片描述
这样的话,我们就可以直接往那个order和item表里面放数据了
然后才能放中间表的数据,让最终双方互相多对多,要一一对其

不能重复
在这里插入图片描述
在这里插入图片描述
然后你看中间表,就只能从order和item中选了
填写中间表的时候,记住,先关掉13表,才能不卡死

在这里插入图片描述

其他数据不行的
在这里插入图片描述
说明你先做order表里面没有哪个啥,3类那个订单


总结

提示:重要经验:

1)表不是重点,重点是数据,和约束关系,一对多,一对一,多对多,一一继承和修改的关系
2)学好oracle,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰露可乐

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值