# 数据库基础

# 目录

[TOC]

# 1.数据设计基础

数据库设计步骤

# 2.红黑树

# 2.2.红黑树笔记

红黑树变色、自旋、自平衡原理

01

  • 本节课的重点是,自旋和变色

rb002

  • 注意:红黑树新插入的节点『必须』是红色!
  • 每个叶子节点都是黑色的空节点(NIL)!

rbb03

rbb04

rbb05

rbb06

rbb07

  • NIL的颜色必须是黑色的,在Java里面,他的值是NULL,因为这个叶子节点是虚拟出来的。

    (这个是为了用来满足性质4的)

rbb08

很显然有2个属性; 1)不能有两个连续的红色

2)红色节点,他必须有父节点,而且这个父节点一定是黑色的。

3)红色节点不能为根节点(性质2),所以红色节点只能为子节点

image-20210702200325816

  • 叶子节点就是上面的,黑色椭圆
  • 红色非平衡和黑色完美平衡(中庸),红黑树是不完美平衡的
  • AVL却是完美平衡

rb10

  • 因为左边这样的AVL,不稳定,他这个时候退化为链表了。

rb11

新增一个节点,你就要看看这棵树是否违反了我们红黑树的性质,然后,让他自己来平衡。

我们任何新增的红黑树的节点,默认都是新加红色的节点。(因为这个不会影响性质5)

自平衡就是一个调整的过程。

具体的:

你新增的这个节点后,你去编代码的时候,你只需要考虑。从当前节点的三代!!

超过第4代就不管了。

image-20210702200621045

image-20210702200632828

rb

你祖父母都降级了,所以给他一个好处,就是把B节点给他了。

(只要有旋转,就会有一条线互换的。)

旋转节点的圆心,一定是他的子节点!

image-20210702200729288

rbleft

rbleft2

  • 上面的旋转,根本可以不分左边还是右边旋转。
  • 下面是红黑树的操作:

image-20210703091105553

CRUD

c-新增

查找很简答--------------

r-读,查找

U-更新(查找到后改就)

D-删除(复杂)

rbcase

  • 上面是我编程的时候的很多case的。
  • 上面是做红黑树的所有情况。

rbcreate

直系CPG在一条线上,/或者\

三角关系是,不在一条直线上(也2种)

image-20210703091322201

image-20210703091336549

image-20210703091344050

image-20210703091354784

rbtrac

  • 三角关系,其实就是先转换为三点一线关系。

image-20210703091444837

# 3.数据库的三大范式

  • 第一范式:当关系模式R的所有属性都不能再分解为更基本的数据单位时,称R是满足第一范式,即属性不可分

  • 第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式

  • 第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,即非主属性不传递依赖于键码