データベース①
今日はそもそものデータベースの役割や種類、正規化について調べてみました〜!
そもそもデータベースとは
システムやユーザが扱うデータを後々扱いやすい形に整理して管理するものです。
何に関するどんな属性の値か、何と関連しているかなどを管理します。
何故データベースを使うのか
- データベースを使うことで、欲しい情報に素早くアクセスできるようになります。
- 関連のある複数データをまとめて管理できます。
- データの更新も簡単に行うことができます。
データベースの種類
- 階層型データベース
ファイルのように階層構造でデータの関連を管理するものです。
1対nの情報は管理することができますが、多対多を表現するにはデータを重複して登録する必要があるなどの課題があったようです。
- ネットワーク型データベース
階層型データベースの「多対多を表現するにはデータを重複して登録する必要がある」という課題を複数のネットワーク構造を管理できるようにしたことで解決したものです。
- 関係型データベース(RDB(リレーショナルデータベース))
行と列を持つ表で情報を管理するデータベースです。
複数の表を結合することで柔軟な処理をすることが可能です。
例:Oracle、MySQL、PostgresSQL、SQLiteなどがあります。
- NoSQL
Not only SQL略で、関係型データベース以外を指すざっくりとした分類のようです。
データの整合性よりパフォーマンスが重視される際に使用されることが多いようです。
NoSQLの中でも、キー・バリュー型、カラム指向型、グラフ型、ドキュメント指向型など分かれております。
例:Redis(キー・バリュー型)、MongoDB(ドキュメント指向型)、などがあります。
データベースの正規化
正規化とは
データベースの正規化とは、データの重複をなくして効率よくデータを管理できるようにすることです。
重複している値が複数あった場合、その情報を別のテーブルで管理し、データのひも付きはIDのみで管理するようにします。
何故正規化するか
- 正規化しないと同じ情報が複数登録されてしまい効率が悪いためです。
- 同一データが複数登録されている時に1つだけデータが更新された場合、データ不整合が起きてしまうためです。
感想その他
改めてデータベースについて調べてみることで、RedisやMongoDBがどんな立ち位置のものなのかわかり面白かったです!
また、正規化の部分についてはデータベース設計と関係ある部分なので、なぜ正規化するのか・どのようにテーブルを分けるのかなど調べることができてよかったです!
実際は正規化するだけでなく、パフォーマンス&今後どんな機能を付け足すことになりそうか等、考慮することがもっと多そうですが...