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
3NFの先にあるもの
Search
赤神青空
August 14, 2026
Programming
13
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
3NFの先にあるもの
赤神青空
August 14, 2026
More Decks by 赤神青空
See All by 赤神青空
MySQLとPostgreSQLって何が違うの?
akagami
0
30
第何正規形かを判定する
akagami
0
19
なぜ正規化するのか
akagami
0
22
1NFから3NF
akagami
0
20
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
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
410
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
230
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.7k
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
360
VibeCodingからAgenticWorkflowへ
starfish719
0
490
the container ship “Apple Silicon”@WWDC26 Recap -Japan-\(region).swift
shingangan
0
130
Building a Meta Ray-Ban display app
akkeylab
0
160
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
500
数百円から始めるRuby電子工作
tarosay
0
160
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
5分で問診!Composer セキュリティ健康診断
codmoninc
0
1k
Go 1.27 における memory allocation の高速化
andpad
0
190
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Six Lessons from altMBA
skipperchong
29
4.4k
Test your architecture with Archunit
thirion
1
2.3k
Marketing to machines
jonoalderson
1
5.7k
The untapped power of vector embeddings
frankvandijk
2
1.8k
A Soul's Torment
seathinner
6
3.4k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
210
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
640
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
290
Transcript
2026年8月 3NF 第n正規形をひととおり の先にあるもの ③ 赤神青空
▪全4回。今回は名前と、何を外すかだけ このシリーズの地図 01 02 03 04 更新時異常とキーの言葉 注文票を4つの表に分ける BCNF・4NF・5NF 第何正規形かを答える
なぜ正規化するのか 今ココ はじめに 1NF〜3NF 3NF の先 判定演習 2/7
▪ボイス・コッド正規形。3NF BCNF — 3NF に残った穴 より強い条件 定義は一行で、自明でない関数従属の左側が、すべてスーパーキーであること。 先に言葉を2つ スーパーキー …
行を一意に識別できる属性の組 候補キー … スーパーキーのうち、これ以上削れないもの ずれるのは候補キーが重なるときだけ 複合の候補キーが複数。1つなら 3NF と一致する 出るのは、コードが分類を含むとき 郵便番号 → 市区町村、型番 → メーカー、教員 → 担当科目 よくある誤解 id を主キーにしても、候補キーは消えない 3NF は本当に満たす。それでも更新異常は残る 今ココ 3NF の先 3/7
▪学生・科目・教員。出てくるのはほぼこの形 BCNF の典型例 BCNF 違反 候補キーが2つあり、属性を共有している 候補キー② {学⽣, 教員} 候補キー①
{学⽣, 科⽬} 受講(元の表‧3NF は満たす) 科⽬ DB NW DB DB 学⽣ ⾚神 ⾚神 ⽩神 黒神 教員 教員 佐藤 鈴⽊ ⽥中 佐藤 教員 ★ 教員を切り出す 佐藤 鈴⽊ ⽥中 科⽬ DB NW DB 受講(分解後) 学⽣ ★ ⾚神 ⾚神 ⽩神 黒神 教員 ★◆ 佐藤 鈴⽊ ⽥中 佐藤 教員 → 科⽬ 候補キーは必ずスーパーキー。この表のスーパーキーは、上の2組とそれを含む組だけ。 教員は1科⽬しか担当しないので「教員 → 科⽬」が成り⽴つ。 だが教員だけでは⾏が決まらない(佐藤の⾏が2つある)= スーパーキーではない。 全属性がどちらかの候補キーに⼊っているので 3NF は成⽴する。しかし BCNF は満たさない。 ★ = 主キー ◆ = 外部キー。分解後は候補キーが1つずつになるので、そこで初めて主キーが決まる。 代償として「学生・科目 → 教員」が1つの表に収まらなくなる 今ココ 3NF の先 4/7
▪名前と、何を取り除くかだけ 第4正規形と第5正規形 第4正規形 — 多値従属 例)社員の資格と話せる言語 出るのは外から取り込んだデータ 症状は行数が掛け算になること 資格を1つ足すと複数行が増える 第5正規形
— 結合従属 例)営業員・メーカー・商品 3項が2項に分けられる場合だけ 前提は業務ルールが例外なく成り立つこと 現実には例外があるので崩れる 4NF は取り込みデータで踏むことがある。5NF は理論の終着点。 今ココ 3NF の先 5/7
▪「何を取り除くか」だけで区別できる 正規形の早見表 1NF 2NF 3NF BCNF 4NF 5NF 繰り返し項目 部分関数従属
推移的関数従属 キーの一部への従属 自明でない多値従属 自明でない結合従属 今ココ まとめ 1セル1値にする。ここで複合キーが現れる 複合キーの一部で決まる列を切り出す 非キー属性を経由して決まる列を切り出す 決定側がスーパーキーでない従属をなくす 独立した多値の事実を別々の表に分ける 3項以上の関係を2項の関係に分ける 6/7
▪次回は、与えられた表を実際に判定します 今回のまとめ 01 定義は全部「従属の除去」 1NF は繰り返し、2NF〜BCNF は関数従属、4NF は多値、5NF は結合。 02
ずれるとしたら、候補キーの重なり 複合の候補キーが複数あって属性を共有するとき。無ければずれない。 03 探しに行くのではなく、症状から気づく 直す行が多い、行数が掛け算になる。違和感が先で、名前は後から付く。 今ココ まとめ 7/7