0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

関係代数からリレーショナル・データベースの特性を理解する

Posted at

はじめに

データベースと聞くと、MySQLがぱっと思い浮かぶという感じだった。
でも、バックエンド開発に関して学んでいくと、ストレージという言葉やキャッシュ、リレーショナルデータベース、NoSQLなど、データに関する様々な言葉が出てくる。
そこで、Recursionのデータベース講座を参考にし、データの種類、データの表現方法、データベースの種類などを体系的に整理しておくことにした。
最終的には、リレーショナル・データベースの特性を関係代数から理解できるようになった。


データの保存先の種類

データの保存には主に以下の3つがある。

  • メモリ
  • ストレージ
  • データベース

メモリ

  • 高速だが揮発性があり、一時的な保存に向いている

ストレージ

  • 永続的な保存が可能で大容量に向く
  • 画像やCSS、動画などの静的ファイルを保存する

データベース

  • 永続的に保存できるだけでなく、
  • 検索や更新、関連データの操作など複雑な処理ができる

データの表現方法(データモデル)の種類

データには、表現方法として以下の4つのモデルがある。

  1. 関係モデル
  2. 実体関連モデル
  3. 半構造化モデル
  4. オブジェクトモデル

関係モデル

  • 表(テーブル)形式のデータ構造
  • スキーマ(型や構造)が固定
  • SQLで操作する

実体関連モデル

  • 現実世界の「人」「商品」などをエンティティとして図で表現
  • データベース設計時に使われる

半構造化モデル

  • JSONやXMLのような柔軟な構造
  • スキーマが不要
  • MongoDBなどのNoSQLで使われる

オブジェクトモデル

  • プログラム上のクラスのような構造でデータを表現
  • ORM(Object Relational Mapping)によってRDBと連携する

データモデルとデータベースの関係

  • 関係モデルや半構造化モデルは、実際にデータを保存するデータベースとして使える
  • 一方、実体関連モデルやオブジェクトモデルは、保存ではなく設計や操作のための考え方

NoSQLとは?

  • リレーショナル(関係)モデル以外を採用したデータベースの総称
  • 代表例:MongoDB、Redis、Firebase など
  • 柔軟な構造とスケーラビリティが特徴

データベースの本質的な理解

今日一番の気付きが以下。

「今日の学びを紙に書いて、夜に見返す。これはデータベースでは?」

つまり、

  • データベースとは、「データを保存し、あとで取り出せるように整理された仕組み」である
  • 保存手段だけでなく、管理の仕組みを含んでいる

リレーショナルデータベースの理論背景

  • リレーショナルデータベースは「関係代数」という数学理論に基づいて作られている

関係代数の3つの特徴

  1. 集合的(重複がない、順序がない)
  2. 関数的(同じ入力には必ず同じ出力)
  3. 合成可能(操作をいくつでも組み合わせられる)

この3つを理解すると、SQLの特徴や使い方の意味が腑に落ちるようになる。


SQLと関係代数のつながり

  • SQLは関係代数の操作を人間にわかりやすく命令文にしたもの

例:

  • SELECT name FROM users WHERE age > 20;
    π_name(σ_age>20(users))

集合的

  • SELECT結果の行の順序は保証されない → ORDER BYが必要
  • 重複は許される → DISTINCTで除去できる

関数的

  • 同じクエリを同じテーブルに投げれば、毎回同じ結果が得られる

合成可能

  • クエリをネストして複雑に合成できる → サブクエリ

最後に

SQLの背後にある関係代数の特徴(集合性・関数性・合成可能性)を理解すると、

  • なぜ順序が保証されないのか
  • なぜ DISTINCT があるのか
  • なぜクエリを重ねられるのか
    など、SQLの設計本質が見えてきた。

調べれば調べるほど、「データ」に興味関心が出てきた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?