「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。データ分析・語学に力点を置いています。 →現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年1月21日改訂)。

MENU

データサイエンスとデータベース(01/X)

 データベースの理論的な部分を

を基に学んでいく。

今日のまとめ

  • データベースとは計算機上での利用を前提としたデータの集まりおよび管理するシステムの総称を指す。
  • データベースの概念としては1970年に発表された関係データベースを基にした関係データベース管理システム(RDBMS)が一般的になっている。
  • 関係データベースは数学の意味での関係をデータベースへ応用したものである。データベースにおいては関係をリレーションと呼ぶ。データベースにおいてテーブルはリレーションを表示するための手段にすぎず、関係データベースの本質はリレーションである。
  • しかしデータ量の飛躍的増大など時代のニーズを受けて既存のRDBMSに囚われないデータベース管理システム(NoSQL)の開発が進んでいる。

1. はじめに

 データベースはもともと、ある目的を持って集められたデータを意味する。最近は計算機上での利用を前提としたデータの集まりおよび管理するシステムの総称として用いる。後者を特に指す場合には、データベース管理システム(DBMS)と呼ぶ。

1.1 データベースの歴史

 データベースの概念は1960年代に磁気テープなどのシーケンシャルアクセス*1の記憶装置からディスクやドラムなどのランダムアクセスが可能な記憶装置が使われるようになっていく過程で生まれた。
 1970年にIBMのE.F. Coddが発表した「関係データベース(RDB)」により、数学を背景とした理論的な概念が評価され、さまざまな研究者や企業が関係データベース管理システム(RDBMS)を開発するようになった。これにより問い合わせ言語の標準化が議論され、1986年には\mathrm{SQL-86}が定まり、その翌年にはこれが国際規格になった。1992年に改訂され\mathrm{SQL-92}となり、ここで標準的なコマンドの規格が定義された。
 日本では\mathrm{SQL:2016}などを詐称する形で\mathrm{JIS\ X\ 3005-2}というデータベース言語\mathrm{SQL}に関する規格が制定されている。

1.2 NoSQL

 RDBMSは広くされるようになるにつれて、逆にRDBMSでは上手く扱うことのできないデータに対してRDBMSとは異なるDBMSが提案されるようになった。1980年代中盤にはオブジェクト指向型言語の興隆を受けてオブジェクトDBMS(Object DBMS: ODBMS)が利用されるようになった。
 次に1990年代中盤に登場したXML(eXtensible Markup Language)を転機としてインターネットを前提としたデータ利用に向けて開発が進んだ。これによりRDBMSが苦手とする階層型データの定義が容易になるとともに柔軟にデータ構造を変更できるようになった。また2001年にXQueryW3C(World Wide Web Consortium)の草案として提案され、操作も標準化された*2
 いまはデータベースで扱うデータ量が飛躍的に増大したことを受け、大量のデータを効率的に扱うための新しいDBMSの開発に関するニーズが高まっている。
 こうしたRDBMSとは異なる新しいDBMSNoSQLと呼ばれるようになった。

2. 関係データベースの基本

 関係データベースの基本として、まずはデータの関係モデルを考える。
 \mathrm{E.F.Codd}が提案したデータの関係モデル(\mathrm{relational} \mathrm{model} \mathrm{of} \mathrm{data})は数学の集合論における「関係」*3の理論をデータベースに応用したものである。
 この議論をするために、まずは直積集合を導入する。



直積集合と関係 集合U_1,\cdots,U_n*4に対して、これらの直積集合は



\begin{aligned}
U_1\times\cdots\times U_n=\{(x_1,\cdots,x_n)|x_1\in U_1,\cdots,x_n\in U_n\}
\end{aligned}


で定義される。直積集合の元をn-タプルないし単にタプルという。
 また集合U_1,\cdots,U_nに対して、その直積集合の任意の部分集合r\subset U_1\times\cdots\times U_nU_1,\cdots,U_nにおけるn項関係という。

2.1. データのリレーションによる表現

 直積集合を構成する集合U_k,k=1,2,\cdots,nは数の集合でなくとも良い。

例:
 野球選手に関するデータベースを作ることを考える。簡単のため、2人の選手を考え、その名前をa,b(選手名)、チームを2つp,q(チーム名)とし、「apに所属する」、「bqに所属する」というデータを得たとする。
 このデータを表現するのにタプルを用いて(a,p),(b,q)と書くことができる。したがってこれらの選手に関するデータは集合


\begin{aligned}
r=\{(a,p),(b,q)\}
\end{aligned}


で表現できる。
 選手名の集合をN=\{a,b\},\ チーム名の集合をT=\{p,q\}とすれば、



\begin{aligned}
N\times T=\{(x,y)|x\in N,y\in T\}
\end{aligned}


で与えられ、タプルの集合rはこのN\times Tの部分集合である。すなわち選手に関するデータを関係モデルで表現したrリレーションである。
 実際には各集合が何に関する集合なのかを分かりやすくすべく、\mathrm{Dom}(選手名),\ \mathrm{Dom}(チーム名)として



\begin{aligned}
r\subset\mathrm{Dom}(選手名)\times\mathrm{Dom}(チーム名)
\end{aligned}


と書く(出力される。)。

2.2 リレーションのテーブルによる表示

 データのリレーションはテーブルの形でユーザに表示させる。テーブルの横の並びをといい、縦の並びはという。各データが入力される枠をセルないしフィールドと呼ぶ。

 関係データベースを構成するリレーションを作成するのに際し、互いに異なるn個の属性A_1,\cdots,A_n,n\geq1に着目する場合を考える。
 まず各属性A_1,\cdots,A_nに付随する集合\mathrm{Dom}(A_k), k=1,2,\cdots,nを定める。これは属性が取り得る値の集合であり、属性A_kドメインという。データは各対象の属性A_kに関する値x_k\in\mathrm{Dom}(A_k)を成分とするタプル(x_1,\cdots,x_n)として表現される。それらのタプルから構成される有限集合はn項リレーションrである。すなわち



\begin{aligned}
r\subset\mathrm{Dom}(A_1)\times\cdots\times\mathrm{Dom}(A_n)
\end{aligned}


である。

2.2.1 テーブルに関する注意

 テーブルはデータのリレーションをユーザが目視できるようにするための装置であり、データの実態はあくまでもリレーションであり、これは直積集合の部分集合であるから、「集合」である。そのため

 各対象が集合の要素として属するか否かが焦点であり、要素の順番や回数は関知しない。

ことに注意しなければならない。したがって

  • 要素の現れる順番は関知しないことから、テーブルの行の並びは任意で自由に変更できる。
  • 要素の現れる回数は関知しないことから、テーブルに同一行が現われてもその重複に意味は無い。

 
である。
 列の並びは直積集合を構成する集合の順番に依存する。そのため、行とは異なり数学的には並びを変更できない。ただし属性を互いに意味を識別できるように命名すれば列の順番を変えても誤解は生じないため、列の並びも任意で自由に変更できるとする立場も存在する。

2.2.2 関係スキーマ

 リレーションをテーブルとして表示すると、テーブルがデータであるリレーションに加え、その枠からも構成されることが視覚的に分かる。

 属性A_1,\cdots,A_n,n\geq1が(この並びで)テーブルの枠を構成するという事を


\begin{aligned}
R(A_1,\cdots,A_n)
\end{aligned}

と書いて関係スキーマと呼ぶ。Rを関係スキーマ名という。関係スキーマを構成する属性の列をA_R=(A_1,\cdots,A_n)で表す。
 実際にデータベースを構築する際は、まず関係スキーマが設計され、次にデータが入力される。すなわち枠である関係スキーマR(A_1,\cdots,A_n)が与えられ、A_Rに含まれる属性に付随するドメインの直積集合の部分集合、すなわちn項関係のリレーションrとしてデータを獲得した結果、テーブルTが構成される。

 関係スキーマはデータベースの運用を始める前に充分に熟慮した上で設計されるべき対象であり、運用開始以降は原則変更されない。関係スキーマはデータに先立つのである。

*1:sequential access記憶媒体の先頭から順に検索しアクセスしていくというデータのアクセス方式。

*2:ただし検索速度などの性能面でRDBMSに劣後するため、浸透はしていない。

*3:データベースの分野では「リレーション」と呼称するのが一般的である。

*4:この集合は同じものがあっても問題ない。また各集合の元は数値でなくともよい。

プライバシーポリシー お問い合わせ