title: 记一篇SQL笔记
date: 2022-11-10 15:02:59
cover: /i/l/?n=23&i=blog/3177837/202304/3177837-20230419150737994-1755737660.jpg
top_img: /i/l/?n=23&i=blog/3177837/202304/3177837-20230419150737994-1755737660.jpg
description: 今天学习了数据库的范式设计,受益颇多,故此记录。
tags:
- SQL
- MySQL
- SQL范式
categories:
- 面试笔记
- SQL笔记
copyright: true
language: zh-CN
今天学习了数据库的范式设计,受益颇多,故此记录。
一、树形结构
问:如何用最少的表和字段设计一个树形结构?
答:一个表,三个字段(或两个字段);如:id ,pid ,pname(或不要)。
二、基础技巧
a) “对”(正确性)
1) 一个表
-
需要主键(PK)保证每条数据的 唯一性(即实体完整性)(如:加一个id字段作为主键);
-
尽量使用 非业务字段 做PK(如学生表中不用学号做PK,而另外新建一个 非业务字段id 作为主键,因为学号属于其中的业务字段,一旦发生改动,主键无法变动就 芭比Q 了);
2) 多个表(FK)(参照完整性)
b) “好”(“尺”:范式)(范式共有 5 级)(平时三级就够了)
-
一级范式(1NF):简单二维表(字段中不能再有集合)
-
二级范式(2NF):消除部分函数依赖(小技巧:比如给每一个表 都加一个非业务字段 作为PK即可)
-
三级范式(3NF):消除 传递函数依赖(即非主键值不依赖于另一个非主键值)