Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
世界一やさしいテーブル設計のやり方
Search
TKD
November 26, 2023
220
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
世界一やさしいテーブル設計のやり方
テーブル設計のやり方を初心者向けにやさしく解説しています。
TKD
November 26, 2023
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Test your architecture with Archunit
thirion
2
2.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Navigating Weather and Climate Data
rabernat
0
550
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
980
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
530
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Transcript
世界一やさしい テーブル設計のやり方
次のようなアプリのテーブル設計を 考えてみてください
イベントに申し込めるアプリ エンジニアの勉強会に関する テーブル設計を考えてみてください イベントに申し込む部分の 題材となるアプリについて
バックエンドのエンジニア(フリーランス) 主にRails たまにNestJS、React 複雑な事象を細分化してシンプルに考えるのが得意です 好きなもの 筋トレ 将棋 散歩 🚶♂️ シンプルなもの
簡単に自己紹介 TKD @shuhei_takada
では実際にやっていきます
1. 名詞と動詞を抜き出す
1. 名詞と動詞を抜き出す 動詞:申し込む 名詞:イベント
2. 関係性を図に表す(オブジェクト図)
イベント 申し込む 2. 関係性を図に表す(オブジェクト図)
イベント 申し込む 「誰が」イベントに申し込んだのか分からないのでその情報を付け足す 2. 関係性を図に表す(オブジェクト図)
イベント 申し込む ユーザー 「ユーザーがイベントに申し込む」という関係性を表せた 2. 関係性を図に表す(オブジェクト図)
イベント ? 申し込む ? ユーザー ? 3. それぞれのオブジェクトが持つデータを考える
イベント ・ID:111 ・イベント名:フロントエンド のあれこれ 申し込む ・イベントID:111 ・ユーザーID:222 ユーザー ・ID:222 ・ユーザー名:TKD
3. それぞれのオブジェクトが持つデータを考える
イベント ・ID:111 ・イベント名:フロントエンド のあれこれ 申し込む ・イベントID:111 ・ユーザーID:222 ユーザー ・ID:222 ・ユーザー名:TKD
イベントには複数人のユーザーが申し込めるので図に表すと…? 4. 1対多の関係も図に表す
イベント ・ID:111 ・イベント名:フロントエンド のあれこれ 申し込む ・イベントID:111 ・ユーザーID:222 ユーザー ・ID:222 ・ユーザー名:TKD
申し込む ・イベントID:111 ・ユーザーID:333 ユーザー ・ID:333 ・ユーザー名:マリオ 4. 1対多の関係も図に表す
5. テーブルにする(ER図) イベント ・ID:111 ・イベント名:フロントエンド のあれこれ 申し込む ・イベントID:111 ・ユーザーID:222 ユーザー
・ID:222 ・ユーザー名:TKD 申し込む ・イベントID:111 ・ユーザーID:333 ユーザー ・ID:333 ・ユーザー名:マリオ ↓これをER図にすると...
5. テーブルにする(ER図) ひとまず日本語で書いた簡易的なER図
6. 英語に翻訳、データ型、NOT NULL制約、ユニーク制約、インデックスを考える ↓これをさらに物理設計を考えて…
6. 英語に翻訳、データ型、NOT NULL制約、ユニーク制約、インデックスを考える ER図完成 🎉
もう1つ考えてみましょう
それぞれの参加枠ごとに定員数を設定できます。 イベントには参加枠という概念があり、 誰でも見られるようになっています。 また、イベントに申し込みをした人が どの参加枠で申し込みをしたのか 参加枠をテーブルでどう表現するか考えてみる
1. 名詞と動詞を抜き出す
1. 名詞と動詞を抜き出す 名詞:参加枠
2. 関係性を図に表す(オブジェクト図)
仕様のようです。 管理画面(イベントの作成画面)を見ると イベントに任意の数の参加枠を設定できる テーブル設計のヒントになることは多いです。 このように、管理画面のUIが 2. 関係性を図に表す(オブジェクト図)
イベントが複数の参加枠を持つので… 2. 関係性を図に表す(オブジェクト図)
イベント 参加枠 参加枠 2. 関係性を図に表す(オブジェクト図)
イベント 参加枠 参加枠 ユーザーは参加枠を選んで申し込みできるので… 2. 関係性を図に表す(オブジェクト図)
イベント 参加枠 参加枠 申し込む ユーザー 2. 関係性を図に表す(オブジェクト図)
イベント ? 申し込む ? ユーザー ? 参加枠 ? 参加枠 ?
3. それぞれのオブジェクトが持つデータを考える
イベント ・ID:111 ・イベント名:フロント エンドのあれこれ 申し込む ・参加枠ID:555 ・ユーザーID:222 ユーザー ・ID:222 ・ユーザー名:TKD
参加枠 ・ID:555 ・イベントID:111 ・参加枠名:枠A ・定員数:10 参加枠 ・ID:666 ・イベントID:111 ・参加枠名:枠B ・定員数:20 3. それぞれのオブジェクトが持つデータを考える
4. テーブルにする(ER図) イベント ・ID:111 ・イベント名:フロント エンドのあれこれ 申し込む ・参加枠ID:555 ・ユーザーID:222 ユーザー
・ID:222 ・ユーザー名:TKD 参加枠 ・ID:555 ・イベントID:111 ・参加枠名:枠A ・定員数:10 参加枠 ・ID:666 ・イベントID:111 ・参加枠名:枠B ・定員数:20 ↓これをER図にすると…
4. テーブルにする(ER図) ひとまず日本語で書いた簡易的なER図
5. 英語に翻訳、データ型、NOT NULL制約、ユニーク制約、インデックスを考える ↓さらに物理設計を考えて...
5. 英語に翻訳、データ型、NOT NULL制約、ユニーク制約、インデックスを考える ER図完成 🎉
これはどのようにテーブルで表せるか ✅ キャンセルはどう表現するのか ✅ 申し込みをするとそのイベントを主催しているグループに自動で参加されます。 他にも考えたいこと
→ なぜならオブジェクトを抽象化したものがテーブルだから ✅ まずは日本語で考えると考えやすい ✅ テーブル設計の手順 1. 名詞と動詞を抜き出す 2. オブジェクト図を書く
3. ER図(テーブル)に直す 4. 英語に翻訳、データ型、NOT NULL制約、ユニーク制約、インデックスを考える ✅ いきなりテーブルから考えるのではなく、オブジェクト(レコード)から考えたほうが簡単 まとめ
ご清聴ありがとうございました 🙌