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

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。目下、データ分析・語学に力点を置いています。

MENU

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

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

を基に学んでいく。

今日のまとめ

  • 「テーブルの各セルに1つのデータが入力された」テーブルを第1正規形と呼ぶ。
  • 関係スキーマR=R(A_1,\cdots,A_n)が与えられたとする。その任意のインスタンスrについて、属性列A_Rの部分列Sが性質

    \begin{aligned}{}^{\forall}t,{}^{\forall}t^{\prime}\in r\left(t\left[\right]=t^{\prime}\left[\right]\Rightarrow t=t^{\prime}\right)\end{aligned}

    を満たすとき、Sをこの関係スキーマRにおける超キーであるという。

     また関係スキーマRの超キーSRインスタンスとなる任意のテーブルTの超キーともいう。
  • 関係スキーマR\left(A_1,\cdots,A_n\right)が与えられたとき、属性列A_Rの部分列Kが性質

     (1) Kは超キーである

     (2)Kのどの真部分列も超キーとならない

    を満たすとき、Kを候補キーという。関係スキーマの属性のうち、候補キーに属するものをキー属性、属さないものを非キー属性という。
  • データベース管理上の理由で都合の良いように選ばれた1つの候補キーを主キーという。

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

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

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

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

2.2.3 インスタンス

 1つの関係スキーマに対して、それと組み合わせてテーブルとなることができるリレーションは複数ある。データは常に更新され得ることため、リレーションは流動的なものである。
 一般に関係スキーマR(A_1,\cdots,A_n)に対して直積集合\mathrm{dom}(A_{1})\times\cdots\times\mathrm{dom}(A_{n})の有限部分集合はすべてデータのリレーションとして可能な候補であり、関係スキーマインスタンスという。関係スキーマはその1つのインスタンスと組み合わせて1つのテーブルを構成する。ただし直積集合の部分集合であっても現実の制約からリレーションとして採用できない部分集合があり得る。

2.2.4 タプルからの成分の切り出し

 属性をA_1,\cdots,A_nとし、n項リレーションrのタプルをt=(x_1,\cdots,x_r)\in rとする。このとき各属性A_k,1\leq k\leq nに対して


\begin{aligned}
t\left[A_k\right]=x_k
\end{aligned}

でタプルtA_k-成分と呼ぶ。すなわちt\left[A_k\right]=x_kはタプルtからそのk番目の属性A_kに関するデータを切り出した結果である。
 この定義は属性の列に拡張できる。関係スキーマの属性A_1,\cdots,A_nからm個(1\leq m\leq n)の属性A_{k_{1}},\cdots,A_{k_{m}}(1\leqk_1\lt\cdots\ltk_m\leqn)をこの順番で選んで並べた列(A_{k_{1}},\cdots,A_{k_{m}})A_Rの部分列という。タプルt=(x_1,\cdots,x_n)\in rA_Rの部分列X=(A_{k_{1}},\cdots,A_{k_{m}})に対して


\begin{aligned}
t\left[X\right]=t\left[A_{k_{1}},\cdots,A_{k_{m}}\right]=(t\left[A_{k_{1}}\right],\cdots,t\left[A_{k_{m}}\right])=(x_{k_{1}},\cdots,x_{k_{m}})
\end{aligned}

と定義し、タプルtX-成分と呼ぶ。全ての属性についてデータを切り出すと、t\left[A_R\right]=tである。

 以下のようにテーブルおよびタプルを定義するとき、

学生名 研究室名 学科名
太郎 知識情報学 知識科学 =t_1
次郎 データ解析学 データ科学 =t_2
三郎 データ解析学 データ科学 =t_3

まず


\begin{aligned}
t_1[学生名]=太郎
\end{aligned}

である。また属性の列X=(学生名,研究室名)に対して、


\begin{aligned}
t_1[X]&=t_1[学生名,研究室名]=\left(t_1[学生名],t_1[研究室名]\right)\\
&=(太郎,知識情報学)
\end{aligned}

である。また全属性A_R=(学生名,研究室名,学科名)に対して、


\begin{aligned}
t_1[X_R]&=t_1[学生名,研究室名,学科名]\\
&=\left(t_1[学生名],t_1[研究室名],t_1[学科名]\right)\\
&=(太郎,知識情報学,知識科学)=t_1
\end{aligned}

である。

2.2.5 第1正規形

 これまで用いてきたテーブルは第1正規形と呼ばれる。第1正規形と呼ばれる条件は「テーブルの各セルに1つのデータが入力されること」である。
 1セル1データの条件はデータ処理を単純にするために\mathrm{Codd}がテーブルに課した最低の条件である。第1正規形の条件を満たさないテーブルを非正規形という。
 関係データベースは一般に複数のテーブルから構成され、それぞれ少なくとも第1正規形でなければならない。

 非正規形のテーブルを第1正規形にする手続きを第1正規化という。タプルの1つのセルにn個のデータが入力されていれば、そのタプルはn個のタプルにする。更にデータが重複するセルがあるならば、なくなるまで同じ作業を繰り返す。

2.2.6 超キーと候補キー、主キー

 データ処理ではテーブルの各行を一意に特定してアクセスする必要がある。テーブルを表示したときのタプル位置は任意であるから、データベースシステムが便宜上、行番号を表示したとしても、それはタプル固有の番号ではなく、データ処理には使えない。そこで各タプルを一意に特定するための仕掛けが必要である。簡単なのは各タプルに属性の1つとして固有の番号を持たせればよい。

 タプルを一意に特定できる属性を超キーと呼ぶ。

 数学的に一意性を定義する。属性Aがタプルを1つ特定するならば、任意のタプルt,t^{\prime}に対して、


\begin{aligned}
t\neq t^{\prime}\Rightarrow t[A]\neq t^{\prime}[A]
\end{aligned}

が成り立つ。これの対偶を取ることで、


\begin{aligned}
t[A]=t^{\prime}[A]\Rightarrow t=t^{\prime}
\end{aligned}

を得る。これは、属性A-成分が同一となるタプルが1つしか存在しないことを意味する。



超キー 関係スキーマR=R(A_1,\cdots,A_n)が与えられたとする。その任意のインスタンスrについて、属性列A_Rの部分列Sが性質


\begin{aligned}
{}^{\forall}t,{}^{\forall}t^{\prime}\in r\left(t\left[\right]=t^{\prime}\left[\right]\Rightarrow t=t^{\prime}\right)
\end{aligned}

を満たすとき、Sをこの関係スキーマRにおける超キーであるという。
 また関係スキーマRの超キーSRインスタンスとなる任意のテーブルTの超キーともいう。

 いずれの関係スキーマR(A_1,\cdots,A_n)にもA_R自信という超キーを必ず持つ。逆にRの超キーSに対して、Sを部分列とする属性列S^{\prime}Rの超キーである。
 しかしA_R自体は超キーとしてたいてい、冗長である。そこで新たに候補キーという概念を定義する。



候補キー 関係スキーマR\left(A_1,\cdots,A_n\right)が与えられたとき、属性列A_Rの部分列Kが性質

  • Kは超キーである
  • Kのどの真部分列も超キーとならない

を満たすとき、Kを候補キーという。関係スキーマの属性のうち、候補キーに属するものをキー属性、属さないものを非キー属性という。

1つの関係スキーマに候補キーが複数存在する場合、データベース管理上の理由で都合の良いキーを1つ選ぶ。それを主キーという。関係スキーマやテーブルでは主キーに下線を引く約束である。

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

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