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