#本記事について
プログラミング初心者がデータベース設計周辺について学んだので、その備忘録として載せております。
どうかお手柔らかにお願いいたしますm (- -)(_ _)ペコリ
#DB設計とは
・DBの表を設計すること
・考えるポイント
テーブルやカラム、アソシエーション(テーブル同士の関連づけ)
##エンティティとは
・データを指す
・データベースのテーブルのこと
・機能ごとの総まとめと言える。
・データで扱われるデータ自体のこと
・何かの実体のこと
・ER図で出てくる箱のこと。
##エンティティの抽出
→テーブルの洗い出しということ
データのことを全てさす。
##データベース設計をする際に重要なのはエンティティの洗い出し
・データが登録される時に着目する。
→登録されるたびにデータベースへ保存が行われる。
その度にテーブルに記録されエンティティができる。
##モデリング
・テーブル同士を混同せないことがモデリング
・エンティティを分類わけや関連づけして、テーブル同士を混同させないようにしてて図などに表記する。
・モデリングされ分類わけされたテーブルをさらに詳細な設計を行う。
##正規化
データベースの構造を効率的でシンプルなものにする。
第一正規化はレコードを増やすことで解決できる。
第三正規化は重複する情報を切り出し、関連付ける。(アソシエーション)
重複するデータもなくなりエンティティ(テーブル)もジャンルで分離されているため管理もしやすい
##制約
制約とはデータベースにおいてカラムに設定できるもの。データがテーブルへと保存される際に制限をかけることができる。データを扱う際に制限をかける。
##NOT NULL制約
テーブルの属性値に空の値(NULL)が入らないように制限されている制約。
空の値を入らないようにしているので、エラーが生じるのを防いでいる。
##一意性制約
テーブル内で重複するデータを禁止する制約
同じユーザー名やemail等が保存できなくなる。任意に決めることができる。
##主キー制約
そのデータが空にならず、かつ重複ないようにすること。
NOT NULL制約 + 一意性制約
(Railsではテーブルを作成する時に自動生成される。
##外部キー制約
外部キーの対応するデータが必ず存在しなくてはいけない制約
params等で外部からデータを保存や引き渡しなどができないとなればidでの判別できるレコードの関連付けができない。データの引用ができない。
##チェック制約
値が保存される際に条件を満たしているかチェックできる制約
ユーザーネームが6文字以下となる条件は認めないということで、そのデータは保存されない。
##ER図
データベースのテーブルなどを図で表したもの
一目でテーブル間の関係を把握することができる。
##まとめ
開発やマーケティングの方々が集まりアプリケーションの仕様について決めた要件定義から、開発になる大枠となる部分を設計する。開発の設計の中にも、開発の必要となる内容をまとめる、開発の大枠を決める基本設計と開発にできるかの落とし込みの部分の詳細設計に分かれる。今回は詳細設計であるデータベース設計について。データベース設計で肝となる部分はエンティティの管理やエンティティ同士のアソシエーションの部分である。具体的にはエンティティの抽出が重要となりその方法がモデリングと制約。モデリングでテーブルの正規化(体系立ててテーブルが管理されていること)その正規化されたテーブルを制約を設けてエラーが出ない形にする。エンティティ内に空の値が出ない、重複する要素が出ない、外部サーバであるテーブルからデータを取得できない引き渡せない、保存するデータに制約を設けるなどを行う。こういうエンティティの管理や制約、アソシエーションの部分を体系的にまとめるER図を作成し開発を進める。
以上です。