Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
なぜ正規化するのか
Search
赤神青空
August 14, 2026
Programming
22
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
なぜ正規化するのか
赤神青空
August 14, 2026
More Decks by 赤神青空
See All by 赤神青空
MySQLとPostgreSQLって何が違うの?
akagami
0
30
第何正規形かを判定する
akagami
0
19
1NFから3NF
akagami
0
20
3NFの先にあるもの
akagami
0
13
Cloudflare「Kitesurf」を読む
akagami
0
15
AWS Amplifyの、何が良いのか?
akagami
0
14
続・AWS Amplifyの、何が良いのか?
akagami
0
14
Stacked PRの、何が新しいのか
akagami
0
24
pnpm、そろそろ移行していいのでは
akagami
0
9
Other Decks in Programming
See All in Programming
メールのエイリアス機能を履き違えない
isshinfunada
0
240
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
120
Go 1.27 における memory allocation の高速化
andpad
0
190
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
460
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
150
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.7k
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
500
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
240
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
290
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
140
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
Flow は今どうなっているか
mizdra
PRO
0
570
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
The SEO Collaboration Effect
kristinabergwall1
1
520
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
340
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
620
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
410
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
570
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
230
Building Flexible Design Systems
yeseniaperezcruz
330
40k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
390
Transcript
2026年8月 なぜ正規化するのか 第n正規形をひととおり ① 赤神青空
▪全4回。今回は目的と言葉を揃える回です このシリーズの地図 01 02 03 04 更新時異常とキーの言葉 注文票を4つの表に分ける BCNF・4NF・5NF 第何正規形かを答える
なぜ正規化するのか 今ココ はじめに 1NF〜3NF 3NF の先 判定演習 2/8
▪読みやすくするためではない 正規化は更新のための整理 正規化が守っているのは「1つの事実は1か所にしか書かない」という状態であ る。 同じ事実が散る 商品名が変わると、その商品の明細を全部直す。漏れれば2 つの名前が残る。 同じ事実が1行にある 商品表の1行を直すだけ。漏れようがないので矛盾も起きな い。
正規形の段が上がるほど、この状態に近づく。 今ココ 目的 3/8
▪まとめて更新時異常と呼ばれるもの 詰め込んだ表で起きる3つの異常 01 更新異常 — 直し漏れが矛盾になる 同じ単価が何行にも書かれていると、一部だけ古い値のまま残る。 02 挿入異常 —
登録したいのにできない 注文がまだ無い新商品を、注文表しか無ければ登録する場所がない。 03 削除異常 — 消したくないものまで消える 最後の注文を削除すると、その商品の単価まで一緒に失われる。 今ココ 目的 4/8
▪主キー・複合キー・非キー属性・外部キー 先にキーの言葉を揃えます 注⽂明細 注⽂番号 ★ 商品コード ★◆ P P P
数量 外部キー 商品 商品コード ★ P P 商品名 記号の読み⽅ ★ = 主キー。⾏を1つに決める列。 主キーが2列以上のとき、複合キーと呼ぶ。この例は2列。 主キーに⼊らない列(数量‧商品名)が⾮キー属性。 ◆ = 外部キー。ほかの表の主キーを指す列。 外部キーの値は、参照先の表に必ず存在していなければならない。 外部キーだけが表をまたぐ。ほかは1つの表の中の話。 りんご みかん ★ が主キー、◆ が外部キー。この4語だけ今日は使います 今ココ 目的 5/8
▪正規形の定義はすべてこの言葉で書かれている 関数従属という言葉 「A が決まれば B が1つに決まる」を A → B と書く。
完全関数従属 … 複合キーの全体が揃って初めて決まる 部分関数従属 … キーの一部だけで決まる(2NF で外す) 推移的関数従属 … 非キーを経由して決まる(3NF で外す) この3つを見分けられれば 3NF までは機械的に進む 今ココ 目的 6/8
▪注文票を1枚に詰め込むと、決まり方の違う列が同居する 3つを1つの表で見る 注文番号・商品コード・注文日・顧客ID・顧客名・商品名・単価・数量が1つの 表にある。 完全関数従属 {注文番号, 商品コード} → 数量。両方そ ろって初めて決まる。
今ココ 目的 部分関数従属 商品コード → 商品名。キーの一部だけ で決まっている。 推移的関数従属 注文番号 → 顧客ID → 顧客名。非キーを 経由して決まる。 7/8
▪次回はこの言葉を使って表を分解します 今回のまとめ 01 目的は更新時異常の防止に尽きる 読みやすさのためではない。1つの事実を1か所に置くための整理。 02 防いでいるのは更新・挿入・削除 同じ事実が散っていることが、3つすべての原因になっている。 03 定義は全部「関数従属」で書かれる
完全・部分・推移の3つを見分けられれば 3NF までは進める。 今ココ まとめ 8/8