记一篇SQL笔记

发布时间 2023-04-19 15:18:19作者: QuestionMark001
title: 记一篇SQL笔记
date: 2022-11-10 15:02:59
cover: https://img2023.cnblogs.com/blog/3177837/202304/3177837-20230419150737994-1755737660.jpg
top_img: https://img2023.cnblogs.com/blog/3177837/202304/3177837-20230419150737994-1755737660.jpg
description: 今天学习了数据库的范式设计,受益颇多,故此记录。
tags:
  - SQL
  - MySQL
  - SQL范式
categories:
  - 面试笔记
  - SQL笔记
copyright: true
language: zh-CN

今天学习了数据库的范式设计,受益颇多,故此记录。

记一篇SQL笔记

一、树形结构

问:如何用最少的表和字段设计一个树形结构?

答:一个表,三个字段(或两个字段);如:idpidpname(或不要)

二、基础技巧

a) “对”(正确性)

1) 一个表

  1. 需要主键(PK)保证每条数据的 唯一性(即实体完整性)(如:加一个id字段作为主键);

  2. 尽量使用 非业务字段 做PK(如学生表中不用学号做PK,而另外新建一个 非业务字段id 作为主键,因为学号属于其中的业务字段,一旦发生改动,主键无法变动就 芭比Q 了);

2) 多个表(FK)(参照完整性)

b) “好”(“尺”:范式)(范式共有 5 级)(平时三级就够了)

  1. 一级范式(1NF):简单二维表(字段中不能再有集合)

  2. 二级范式(2NF):消除部分函数依赖(小技巧:比如给每一个表 都加一个非业务字段 作为PK即可)

  3. 三级范式(3NF):消除 传递函数依赖(即非主键值不依赖于另一个非主键值)