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
赤神青空
PRO
August 14, 2026
Video
Programming
31
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
3NFの先にあるもの
赤神青空
PRO
August 14, 2026
Video
More Decks by 赤神青空
See All by 赤神青空
【ORM不要論の歴史】運用の問題は、いまの責務論に直結する
akagami
PRO
0
10
【ORM不要論の歴史】なぜ生まれ、20年前に何を言われたか
akagami
PRO
0
15
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
84
【ORM不要論の歴史】「ORM」と呼ばれているものが3つある
akagami
PRO
0
38
【Vitest5.0大解剖】Vitest5.0で消えた記法とAPI
akagami
PRO
0
23
【Vitest5.0大解剖】Vitest5.0で増えた書き方
akagami
PRO
0
32
【Vitest5.0大解剖】Vitest5.0で静かに変わる挙動
akagami
PRO
0
24
【Vitest5.0大解剖】Vitest5.0のTrace View
akagami
PRO
0
26
【Vitest5.0大解剖】Vitest5.0は何が速くなったのか
akagami
PRO
0
28
Other Decks in Programming
See All in Programming
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
520
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
120
typoなんかねぇよ
raspython3
0
670
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
160
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.4k
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
What We Talk About When We Talk About XP
m_seki
2
390
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
570
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
140
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
120
RSSとCodexを使ってX投稿自動化してみた
ochtum
0
110
AIエージェント時代のコードレビューを設計する
nogu66
6
2.5k
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
330
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
770
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
How STYLIGHT went responsive
nonsquared
100
6.3k
4 Signs Your Business is Dying
shpigford
187
23k
30 Presentation Tips
portentint
PRO
1
390
Crafting Experiences
bethany
1
300
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
230
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