Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

普通のWebエンジニアに学ぶ テーブル設計指南書

1,874 views

Published on

RDBテーブル設計に関する説明資料.

Published in: Technology
  • Be the first to comment

普通のWebエンジニアに学ぶ テーブル設計指南書

  1. 1. 普通のWebエンジニアに学ぶ テーブル設計指南書 @masayuki5160 14年12月20日土曜日
  2. 2. はじめに テーブル設計どうやったらいいのか教えてほし い、というお話があったので資料にまとめま す。 ※この資料は”達人に学ぶDB設計徹底指南書”を 参考にしています。 14年12月20日土曜日
  3. 3. お話しないこと • RDB以外のDBMSについての詳細 • バックアップ関連の話 • SQLについて • 高次の正規形について • インデックス • DBのパフォーマンスチューニングの話 14年12月20日土曜日
  4. 4. アジェンダ 1. DBとは 2. RDBについて 3. 正規化とテーブル設計 4. 現場ではどうなのか 14年12月20日土曜日
  5. 5. DBとは DB => “データのあつまり”のこと DBMS => “DBを管理するためのシステム” よくごっちゃで使います。DBMSといわれたとき に戸惑わないようにしておけばいいかと。 14年12月20日土曜日
  6. 6. DBとは つまりはこういうこと。 このイメージが把握できたらまずはok. 14年12月20日土曜日
  7. 7. DBとは DBの種類の話 • リレーショナルデータベース(RDB) • オブジェクト指向データベース(OODB) • XMLデータベース(XMLDB) • キー・バリュー型ストア(KVS) • 階層型データベース 14年12月20日土曜日
  8. 8. DBとは DBの種類の話 • リレーショナルデータベース(RDB) • オブジェクト指向データベース(OODB) • XMLデータベース(XMLDB) • キー・バリュー型ストア(KVS) • 階層型データベース 今回はRDBについて。DBといえば大概 RDBのこと。 14年12月20日土曜日
  9. 9. ではRDBのお話します 14年12月20日土曜日
  10. 10. RDBとは • DBといえばだいたいRDBのこと • データを行(レコード)と列(カラム)の2次元で 管理 • ex. Oracle Database、Microsoft SQL Server、 MySQL、PostgreSQL... 14年12月20日土曜日
  11. 11. とはいえエクセルとはちがう。 例えば、、 14年12月20日土曜日
  12. 12. 項目1 項目2 項目3 ドラえもん 猫型ロボ タケコプター 名古屋 味 カツ 味 煮込みうどん アイアンマン ロボット こんな表があるとする 14年12月20日土曜日
  13. 13. エクセルではOK. でもRDBではエクセルと違い形だけ2次元の表ではダメ. 項目1 項目2 項目3 ドラえもん 猫型ロボ タケコプター 名古屋 味 カツ 味 煮込みうどん アイアンマン ロボット 14年12月20日土曜日
  14. 14. なんで?ということで RDBでのテーブルのお話です 14年12月20日土曜日
  15. 15. RDBとは • キー RDBになくてはならいないもので2種類ある • 主キー • 外部キー 14年12月20日土曜日
  16. 16. RDBとは 主キーと外部キーはこんな感じ 14年12月20日土曜日
  17. 17. RDBとは • 主キー(Primary Key) テーブルに必ず一つ存在. 主キーを指定すると1 行のレコードを特定できる. • 外部キー(Foreign Key) 2つのテーブルの列同士で設定. 14年12月20日土曜日
  18. 18. で、じつはここまで把握していれば SQLを使って好きなテーブルつくれます. 14年12月20日土曜日
  19. 19. でもこのままの知識だと冗長なテーブル を作ってしまう可能性があったりします. 14年12月20日土曜日
  20. 20. そこで正規化のお話 14年12月20日土曜日
  21. 21. 正規化とテーブル設計 • 正規化とは • データの冗長性をなくし、一貫性と効率性 を保持を行うこと • 正規化には第1∼第5までレベルがある • 業務上は第3まで知ってれば問題ない 14年12月20日土曜日
  22. 22. 正規化とテーブル設計 こんな感じ 14年12月20日土曜日
  23. 23. 正規化とテーブル設計 • 第1正規形 第1正規形は”一つの セルに一つの値を持 つようにする”こと. そんだけ. 14年12月20日土曜日
  24. 24. 正規化とテーブル設計 • 第2正規形 第2正規形は”主キー に部分従属している 属性を分離する”こと. 難しそうだけど右図 をみるとわかるかな. 14年12月20日土曜日
  25. 25. 正規化とテーブル設計 • 第3正規形 第3正規系の話の前に 推移的関係従属につ いて. 右図のように主 キー以外の属性に従 属することをいう. 14年12月20日土曜日
  26. 26. 正規化とテーブル設計 • 第3正規形 で, 第3正規系の話で す. 第3正規形はテー ブル内にある推移的 従属関係を分離する ことになります. 14年12月20日土曜日
  27. 27. つまり正規化はテーブル設計の ベストプラクティス. 14年12月20日土曜日
  28. 28. だから正規化について理解すれば テーブル設計できるようになるかも. 14年12月20日土曜日
  29. 29. でも実際の現場では そう簡単にはうまくいかない.. 次はそんなお話を少しだけ. 14年12月20日土曜日
  30. 30. 現場ではどうなのか • 正規化を意識はしてない • 非正規化をあえてする • インデックスとテーブル設計 14年12月20日土曜日
  31. 31. 現場ではどうなのか • 正規化を意識はしてない. 無意識でやってる, という意味. 慣れると第3正規 化までは当然のように考えます. ただ正規化をするのがいいかどうかはまた別の お話で.. 14年12月20日土曜日
  32. 32. 現場ではどうなのか • 非正規化をあえてする 基本的には正規化をします. ただパフォーマンス を考慮して非正規化をあえてすることもありま す. 正規化をするのがいつも正しいというわけで はない . ちょっとむずい話なので今回は詳細を割愛. 14年12月20日土曜日
  33. 33. 現場ではどうなのか • インデックスとテーブル設計の話 実は正規化の話ではインデックスの話はでてこ ないが, テーブル設計というとだいたいインデッ クスをどこにつけるかも考える. インデックスに ついては説明をしていないが重要なのぜひ調べ てみてください. 14年12月20日土曜日
  34. 34. おわり DBははじめは簡単そうにみえます, SQLとか最 初は簡単ですからね. でもDBもSQLもほんとに 奥が深くおもしろい世界なので興味出たらぜひ 突っ込んで調べたり検証したりしてみてくださ い。 最後に、”達人に学ぶDB設計徹底指南書”はいい 本なのでぜひ読んでみてください. 14年12月20日土曜日
  35. 35. 参考 1. DBMS 2. Oracle DBA(1) DBAのタスクとOracle提供ツー ル、表領域 3. 正規化 14年12月20日土曜日

×