# 数据库基础
# 目录
[TOC]
# 1.数据设计基础
# 2.红黑树
# 2.2.红黑树笔记
红黑树变色、自旋、自平衡原理
- 本节课的重点是,自旋和变色
- 注意:红黑树新插入的节点『必须』是红色!
- 每个叶子节点都是黑色的空节点(NIL)!
NIL的颜色必须是黑色的,在Java里面,他的值是NULL,因为这个叶子节点是虚拟出来的。
(这个是为了用来满足性质4的)
很显然有2个属性; 1)不能有两个连续的红色
2)红色节点,他必须有父节点,而且这个父节点一定是黑色的。
3)红色节点不能为根节点(性质2),所以红色节点只能为子节点。
- 叶子节点就是上面的,黑色椭圆
- 红色非平衡和黑色完美平衡(中庸),红黑树是不完美平衡的
- AVL却是完美平衡
- 因为左边这样的AVL,不稳定,他这个时候退化为链表了。
新增一个节点,你就要看看这棵树是否违反了我们红黑树的性质,然后,让他自己来平衡。
我们任何新增的红黑树的节点,默认都是新加红色的节点。(因为这个不会影响性质5)
自平衡就是一个调整的过程。
具体的:
你新增的这个节点后,你去编代码的时候,你只需要考虑。从当前节点的三代!!
超过第4代就不管了。
你祖父母都降级了,所以给他一个好处,就是把B节点给他了。
(只要有旋转,就会有一条线互换的。)
旋转节点的圆心,一定是他的子节点!
- 上面的旋转,根本可以不分左边还是右边旋转。
- 下面是红黑树的操作:
CRUD
c-新增
查找很简答--------------
r-读,查找
U-更新(查找到后改就)
D-删除(复杂)
- 上面是我编程的时候的很多case的。
- 上面是做红黑树的所有情况。
直系CPG在一条线上,/或者\
三角关系是,不在一条直线上(也2种)
- 三角关系,其实就是先转换为三点一线关系。
# 3.数据库的三大范式
第一范式:当关系模式R的所有属性都不能再分解为更基本的数据单位时,称R是满足第一范式,即属性不可分
第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式
第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,即非主属性不传递依赖于键码