人生でやりたい100のこと




データベース初心者に読んでほしい書籍【まんがでわかるデータベース】

PHPを独学で学んでいるんですが、その延長でMysqlの学習もしてます。
sql文はなんとなく理解できるんですが、いざデータベースを作成しよう!!
ってなるとけっこう「?」な感じです。

正規化とかなんやねん??
主キーってなんやねん??

とか思ってる人いませんか??
僕もそうでした。

ですが、【マンガでわかるデータベース】を読んでみてちょっとデータベースのことが理解できた気がします。
正規化や主キーなどデータベースで出てくる名詞のだいたいの感じは下記↓書籍でわかるようになってます。
データベース初心者の方は是非読んでほしい書籍です。

データベースについての基礎をまんがで理解できます。

すげぇわかりやすかったです。
Amazonで評価が高いのも納得です。
少し古い書籍ですが買う価値はあると思います。
この書籍で学んだことを元にデータベースを作成していきます。

とりあえず本書を元に、自分なりに正規化などをしてみました。

実際に記事を書いてる時は
「ふむふむ、なるほど♪」
なんて思ってましたが、実際にデータベースを作ってみると自分がやった正規化は間違ってるところがかなりありました。

訂正した記事などを今後、書く予定ですので、この先を読む場合は
「ん??ここが間違ってるね」
なんて思いながら読んでもらえると勉強になるかもしれません。

E-Rモデルで分析してみた

【マンガでわかるデータベース】ではE-Rモデルという概念が解説してあります。
E-Rモデルの【E】とは実態(Entity)と言う意味です。
・・・で、【実態】とは。。

実態とは、「果物」、「輸出先」など、現実の世界で実体として考えられるもののことです。

●マンガでわかるデータベースP74より引用

僕のデータベースの場合は「目標」と「人物」を実体として考えてみました。
実態について考えた後は、実体同士の関連(Relationship)についても考えます。

本書では「果物」(Entity)と「輸出先」(Entity)を「売上」(Relationship)で関連づけてます。
僕の場合はどうやって関連付けたらいいのかわからなかったのでRelationshipを「所属」としました。

timag

と、こんな感じでなんとなくっぽくなってきた気がしますが。。。

データベースの表を正規化する

正規化……

「なんか難しい言葉が出てきたな?!」
と思うかもしれませんが、安心してください。【マンガでわかるデータベース】を読むとなんとなく理解できます。笑

正規化とは表を管理しやすい状態に細分化していく作業だと僕は思ってます。

とりあえず、難しく考えずにエクセルの表でも作る感じで必要そうな項目を考えだし表にしてます。
僕がやろうとしてることのイメージを表にしてみました。

●非正規形

非正規形は繰り返し項目が排除されてない表のことを言います。
なんとなく作ってみた表は【非正規形】にあてはまると思います。

目標コード 目標名 人物コード 人物名 サイトURL Twitter 性別 年齢 広告コード 広告
101 DBを作る 2001 たろう abc.com @taro 20 10001 楽天
102 PHPを覚える 2001 たろう abc.com @taro 20 10002 アマゾン
102 PHPを覚える 2002 じろう efg.com @jiro 30 10002 アマゾン
103 ゴルフをはじめる 2003 ひろこ hij.com @hiro 40
103 ゴルフをはじめる 2004 あきこ klm.com @aki 20
104 読書を習慣化する 2005 ようこ opq.com @you 20 10003 楽天ブックス
104 読書を習慣化する 2005 ようこ opq.com @you 20 10004 febe
104 読書を習慣化する  2003 ひろこ hij.com @hiro 40 10003 楽天ブックス
104 読書を習慣化する  2003 ひろこ hij.com @hiro 40 10004 febe

                 
このような表ではリレーショナルデータベースではうまく管理できないようです。
重複してる情報をスッキりできるうようにテーブルを細分化していきます。

この細分化の作業を【正規化】と呼ぶようです。

●第○正規形
それぞれの項目を関連がありそうなグループにまとめて、表を作成します。
正規化の作業には【第1正規化】など段階があるようですがあまり理解できなかった……
とりあえず、表の情報が重複しないようにそれぞれの表を作成しました。

目標表:目標コード 目標名
広告表:広告コード 広告
目標広告関連表:目標コード 広告コード
目標人物関連表 :目標コード 人物コード 人物名 性別 年齢 サイトURL Twitter

●目標表

目標コード 目標名
101 DBを作る
102 PHPを覚える
103 ゴルフをはじめる
104 読書を習慣化する

●広告表

広告コード 広告
10001 楽天
10002 アマゾン
10003 楽天ブックス
10004 febe

●目標広告関連表

目標コード 広告コード
101 10001
102 10002
104 10003
104 10004

●目標人物関連表

目標コード 人物コード
101 2001
102 2001
102 2002
103 2003
103 2004
104 2005
104 2003

●人物表

人物コード 人物名 サイトURL Twitter 性別 年齢
2001 たろう abc.com @taro 20
2002 じろう efg.com @jiro 30
2003 ひろこ hij.com @hiro 40
2004 あきこ klm.com @aki 20
2005 ようこ opq.com @you 20

ざっと【マンガでわかるデータベース】で学んで実践したことを書いてみましたが、僕は以下↓のようなものを作りたいと考えてます。
moku_db_image

Twitterなどのソーシャルも利用したいと考えてます。

上の表が効率よくできてるかわかりませんが、とりあえずローカル環境でデータベースを作成します。
とりあえず、わからないながらも実践することで成長につながると信じてますのでとりあえずやってみます。


『今』やってること、明日の自分はそのことを誇らしく思うだろうか?
Return Top