プログラミング未経験おじさんの備忘録

本ブログはプログラミング未経験者の拙い学習の記録です。

学習[45]日目

本日の学習内容

 データベース設計について

 

データベースの正規化

データベースの正規化はデータベースのデータ構造をより効率的で重複や無駄のないシンプルな構造にするために行うことなのです。

しかし、正規化をすればするほどいいというわけではなく一般的に3段階目程度で留めておくのが良いそうです。(正規化には段階があります)

その理由としては正規化を繰り返すほどテーブルが細かくなり、細かくなれば当然テーブル間のデータをまとめたりする処理が増えるのでSQLによる処理工程が多くなり、データの処理に必要以上の時間が掛かるみたいので注意しなければいけない点になります。

 

中間テーブルとは?

私自身がここまでの学習においてアソシエーションというものを学んできましたが、

1対1や1対多などで多対多に関してはまだ学習していませんでした。

この多対多の関係において必要となるのが中間テーブルです。

例えば、昨今のSNSにはタグ付けというものが存在しますが、タグはエンティティとして扱われており、投稿内容に対して多数のタグを付与することが出来る一方で同じタグでもいろんな人の投稿内容に付与されることからこれらのリレーションが多対多になるといことが言えます。

この時、中間テーブルを設けない場合に何が起こるかというと投稿内容のテーブルではタグを複数持つという状態が生じてしまいます。一方でタグにおいても複数の投稿内容を持つという状況が生じます。これにより一つのカラムに複数のデータが入ってしまっているので特定のデータの呼び出しが出来なくなります。

これだとダメだからといってこれをそのままバラそうとするとカラムが横に無駄に広がりマルチカラムアトリビュートというものを引き起こします。

そこで投稿内容のidとタグのidをカラムに含めた中間テーブルを設けることでタグと陶子内容のリレーションをうまくしてあげる事が出来ます。

 

結局、ER図に関しては少ししか出来ず設計をうまくやる為に利用できなかったので、際復習して明日まとめるようにします。

今日は今から寝て夜勤に備えねば!

 

最後までお読みいただき有難うございます。