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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Hiroyuki Mito
February 27, 2023
Programming
0
95
見直したいテーブル設計
Hiroyuki Mito
February 27, 2023
Tweet
Share
More Decks by Hiroyuki Mito
See All by Hiroyuki Mito
PHPDocを活用する
hiroyukimito
0
75
Paiza CloudとVS Codeで快適な環境を作ろう! / Let's create a comfortable development environment with Paiza Cloud and Visual Studio Code !
hiroyukimito
0
670
Ruby以外から始めるエンジニア生活 PHP(Laravel)版 / Let's start an engineer other than Ruby !! PHP ver.
hiroyukimito
0
450
Other Decks in Programming
See All in Programming
組織で育むオブザーバビリティ
ryota_hnk
0
180
生成AIを活用したソフトウェア開発ライフサイクル変革の現在値
hiroyukimori
PRO
0
110
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
Oxlint JS plugins
kazupon
1
1k
Apache Iceberg V3 and migration to V3
tomtanaka
0
170
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
210
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
630
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
6
680
SourceGeneratorのススメ
htkym
0
200
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
300
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
750
Featured
See All Featured
Balancing Empowerment & Direction
lara
5
900
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
57
Google's AI Overviews - The New Search
badams
0
910
The Curious Case for Waylosing
cassininazir
0
240
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
110
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
79
How to Ace a Technical Interview
jacobian
281
24k
Designing for Timeless Needs
cassininazir
0
130
The Curse of the Amulet
leimatthew05
1
8.7k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Everyday Curiosity
cassininazir
0
130
Transcript
⾒直したい テーブル設計 −どこまで正規化は⾏うべきか−
確認 • 正規化とは • データの重複を減らす扱いやすい状態にする • 例. 顧客情報テーブル ・顧客ID ・顧客名
決済情報テーブル ・決済ID ・顧客ID ・決済料⾦
設計者の視点に⽴ってみよう • とある⼩売店の在庫管理システムを作成するとしましょう • 必要な情報は何ですか? • いくつのテーブルが必要ですか? • 各テーブルが持つ情報は何ですか? •
取り扱う商品は以下のように仮定します。 • 寝具 • 枕 • 敷布団・マットレス • 掛け布団 • 布団カバー • その他
設計者の視点に⽴ってみよう • カテゴリーID • カテゴリー名 商品カテゴリーテーブル • 商品ID • カテゴリーID
商品情報テーブル • 商品ID • 商品名 商品名テーブル • 商品ID • 必要在庫数 • 現在在庫数 在庫情報テーブル
システム使⽤者の⽬線に⽴ってみよう • システム使⽤者が欲しい情報は • 在庫として存在する商品名 • 商品毎の在庫数 • 発注しなければならない数量 •
必要なテーブルは • 商品カテゴリーテーブル • 商品情報テーブル
システム使⽤者の⽬線に⽴ってみよう • カテゴリーID • カテゴリー名 商品カテゴリーテーブル • 商品ID • カテゴリーID
• 商品名 • 必要在庫数 • 現在在庫数 商品情報テーブル
情報の主従を意識する • 商品カテゴリーテーブル • 商品情報テーブル • 商品名テーブル • 在庫情報テーブル カテゴリー
→商品情報 →商品名 →在庫情報 • 商品カテゴリーテーブル • 商品情報テーブル カテゴリー →商品
意識したいポイント 1. 必要な情報 2. 情報の持ち主(依存先) 3. 親(⼦)の情報が重複しているか