雑に読む「達人に学ぶDB設計徹底指南書」
2016年初版第7刷cFQ2f7LRuLYP.icon
目標
何日かに1回読む
雑で構わない。一通り目を通してどこに何の話題があったかをさらってみよう
実例は大切にしよう
第3章はじっくり読む
第1章 データベースを制する者はシステムを制す
1-1
1-2
データベースの代表的モデル
この本で扱ってるのはRDBの設計技法cFQ2f7LRuLYP.icon
オブジェクト指向DB
XMLってなんだろう?cFQ2f7LRuLYP.icon
…
1-4
データの意味や形式を先に決める
オブジェクト指向アプローチ(OOA)とは相性が悪い
ユーザーから見たデータベース
UIが関係してくる
開発者から見たデータベース
データ同士の関係を記述する
設計の中心となる
概念スキーマで定義された論理データモデルをどうやってファイル内に格納するか定義する
物理スキーマともいう
第2章 論理設計と物理設計
2-1 概念スキーマと論理設計
エンティティはデータの集合体のこと
物理的実体に対応するものもあれば、対応しないものもある
たとえば?cFQ2f7LRuLYP.icon
いい感じの喫茶店つき本屋を頭に浮かべる
物理的実体に対応する
本
文房具
コーヒー
ケーキ
…
対応しない
出版社
購入履歴
利益
…
このエンティティを格納するのがテーブル
本テーブル、文房具テーブル、コーヒーテーブル、ケーキテーブル…
table:ケーキテーブル例
名前 値段 …
チーズケーキ 750
ミルクレープ 800
モンブラン 780
いちじくのタルト 820
エンティティの定義 p.31
抽出したエンティティにどういうデータを持たせるかを決める
上のケーキテーブルだと、「名前」「値段」という属性でデータを保持しているわけだなcFQ2f7LRuLYP.icon
他にも属性があるかも
「季節商品」
「合うドリンク」
「在庫数」
これは在庫テーブルを作るほうがよさそう
…
例
table:シャトレーゼのクリスマスケーキ
名前 本体価格 商品番号 サイズ ...
Xmas2つの味が楽しめるデコレーション14cm(苺なし) 2,400 993180 14cm
Xmasパリパリチョコデコレーション17cm 3,200 993183 17cm
乳と卵と小麦粉を使用していないXmasデコレーション15cm(苺なし) 3,000 993188 15cm
Xmasアイスアソートケーキ THE ICE CREAM SHOP 21cm 3,500 993193 21cm
このテーブルで今のデータが全部だとするとキー列は別にどれでも良いっちゃいい
どれも一意に定まる
でも商品番号にしておくのがいいんだろうな
本体価格は同じのが出るかもしれないしサイズも然り
そうですね基素.icon
アソートケーキが品切れでした
更新が整合的に行えるように、エンティティのフォーマットを整理するのが目的(p.32)
第3章で詳しく解説
第4章で詳しく解説
RDBで重要な概念
なんで?cFQ2f7LRuLYP.icon
第6章のパフォーマンスで関わってくるらしい
大量のデータの中から必要なデータを素早く引くための工夫なので重要基素.icon
🤔cFQ2f7LRuLYP.icon
この著者、基本的にわかりやすいのにインデックスの説明は下手な感じがあるmrsekut.icon
インデックスの概念を知らない人に最初からアルゴリズムの話を持ってくるのは不親切(他の本でもそうだった)
mrsekut.iconの場合、以下の動画見てインデックスの概要はスッと入った
↓この発表は説明の順序が非常に良い
https://www.youtube.com/watch?v=33oFtND-dj4
ありがとうございます!cFQ2f7LRuLYP.icon
2-3 バックアップ設計
2-4 リカバリ設計
第3章 論理設計と正規化-なぜテーブルは分割する必要があるのか?
3-1 テーブルとは何か?
テーブルは「表」と似てるが違うものcFQ2f7LRuLYP.icon
こういうのはRDBにおけるテーブルにはならない
table:テーブルじゃない表
9月 10月 11月
すりきず 5 1 12
きりきず 4 8 5
だぼく 15 20 38
ごうけい 24 29 55
この表を正規化したい場合、どのようにすればいいだろうか?
傷マスタテーブルと負傷ログテーブルを作りそうcFQ2f7LRuLYP.icon
ログテーブルのレコードにタイムスタンプを付しておいて検索して集計したい
実際のSQLのやり方はなんもわからん
「本物のテーブル」が出てきた(p.70)
山岡さんみたいだ美味しんぼでよく聞くSE.icon
同じレコードが存在してはならない
普通のRDBはやろうとしても挿入できないので安心基素.icon
ちゃんと設計していればの話suto3.icon
3-2 テーブルの構成要素
テーブルに課す代表的制約
データベースにデータを登録するとき、空欄(null)を許さないこと
もしnullを許すとどうなるんだろう?cFQ2f7LRuLYP.icon
おっ著者だ
1. SQL の作成にあたり、人間の直観に反する3値論理を考慮せねばならない。 2. IS NULL、IS NOT NULL を指定する場合、インデックスが参照されないためパフォーマンスが悪い。 3. 四則演算または SQL 関数の引数に NULL が含まれると「NULL の伝播」が起こる
4. SQL の結果を受け取るホスト言語において、NULL の組み込み方が標準化されていない。
5. 通常の列の値と違って、NULL は行のどこかに余分なビットを持つことで実装されている。そのため記憶領域を圧迫したり、検索パフォーマンスを悪化させる。
まだわからん。先!
主キーのような振る舞いを他の列に適用する、ようなものかなcFQ2f7LRuLYP.icon
指定した条件を満たしたデータだけしか記録できないようにすること
変数の範囲を設定する感じか
データの冗長性を排除して、利用しやすい形に変形すること
正規形には様々なものが存在するが、いずれにせよ、正規化を行うことにより、データの冗長性と不整合が起きる機会を減らすことができる。 よく「冗長性を持たせて」って言われるけど、ここではむしろ「冗長性」は減らす対象なのか~cFQ2f7LRuLYP.icon
冗長性、知ってるつもり単語だった
冗長性を持たせたいものの例基素.icon
ScrapboxのWebサーバー
冗長性を持たせたくないものの例
マスターデータ
2つのマスターデータが...どっちが本当なの?
正規化には何段階かのレベルがある
1つのセルに一つの値しか含まない状態
複数の値を含んでいるとダメ
https://gyazo.com/5df42878e08aaf74ae032994bea92c86
「修正後」は第1正規形になってる、ってことだなcFQ2f7LRuLYP.icon
よくみる表はだいたいこれ基素.icon
完全関数従属って何?cFQ2f7LRuLYP.icon
主キーを構成するすべての列に従属性がある場合のこと https://www.youtube.com/watch?v=1K6EM3woxms
1. 主キーを決める
上だと伝票番号と商品番号
主キーの一部の列に対して従属する列
上の例だと3つのテーブルに分解できる
1. 伝票番号が決まるとお得意先番号とお得意先名が決まる
2. 商品番号が決まると商品名が決まる
3. 伝票番号と商品番号の2つがあれば数量が決まる
最初はここまで覚えれば十分、とのこと
未来に参照
いまここcFQ2f7LRuLYP.icon
第4章 ER図-複数のテーブルの関係を表現する
第5章 論理設計とパフォーマンス-正規化の欠点と非正規化
第6章 データベースとパフォーマンス
第7章 論理設計のバッドノウハウ
第8章 論理設計のグレーノウハウ
第9章 一歩進んだ論理設計-SQLで木構造を扱う
付録 演習問題の解答
時が来たら試してみますcFQ2f7LRuLYP.icon
理解が曖昧なので読みたい基素.icon
買った。達人になるぞ
業務でRDBMSを触っててわからんことがおおいcFQ2f7LRuLYP.icon 理論的側面を求めている(やりがち)
歌人もRDBMSを触る時代!基素.icon
cFQ2f7LRuLYP.iconは決して歌人ではないです!
和歌を読解するけど作らない
これは何人ですか?基素.icon
何ていうんでしょうね…cFQ2f7LRuLYP.icon
プレイする人ではないので観客?
和歌の観客
rickshinmi.iconさんはたぶん歌人・俳人
teyoda7.iconさんも歌人
cFQ2f7LRuLYP.iconさんの業務、想像がつかなすぎるinajob.icon
業務でRDBMSを使うが、「テーブルとは」みたいになるシチュエーションのように見える
知ってた上で改めて精読してる可能性もある
まぁでも、うちの妻もデザイナーだけどSQL書かされてたな、、
自分もよくわかりません…cFQ2f7LRuLYP.icon