第3章 関係データベースの基礎 3.1 関係とは 3.2 関係代数 3.1 関係とは 直積とは C : サークル名の集合 N : 取りうるすべての部員数の集合 集合: S {(c, n) | c C, n N} を C と N の直積といい、以下のように書く。 S CN n項関係とは 集合G1, G2, ・・・, Gn が与えられたとき、 その直積集合 S G1 G2 Gn の部分集合を、 G1, G2, ・・・, Gn の n項関係また は単に関係もしくはリレーションという。 もっと直感的には・・・ スキーマの形式 サークル表 サークル(サークル名,部員数) 一般に、 R( A1 , A2 ,, An ) と書く。 R : 関係名,Ai : 属性( i = 1 ~ n), n: 次数 サークル表は属性が2つあるので2項関係という。 (1つの場合、単項関係) 属性のドメイン その属性が取りうるあらゆる値の集合を、 その属性のドメインという 【例】 サークル名 : 文字列として表現可能なあらゆる名称 部員数 : 数値として表記されるすべての数字 【注】 部員数と活動年数は共にドメインは数値である。 一方、電話番号のドメインは数字の並びではあるが、 数値とはみなさない。 タプル 関係の各要素 (v1, v2, ・・・, vn)を n 組、または 単にタプルという。 関係は単なる集合であり、 その要素同士に順序関係を持たない。 【例】 サークルにおけるサークル名と部員数の間には 順序関係はない。 どちらが先にきても構わない。 リレーションではない表の例 以下は、一般的な表ではあるが、 属性値に複数の値を持つような表は リレーションではない。 学生ID サークル名 活動年数 1122232 卓球部 1 1123321 サッカー部 1 1023442 美術部, 卓球部 1024551 剣道部 1025120 音楽部, 空手部 ・ ・ 1, 2 2 2, 1 ・ ・ 「第1正規形(後述)の制約を満たしていない」という言い方をする。 ナル値(空値:NULL) 属性のうち値が未知のものを ナル値(NULL)という。 【例】NULLを指定したタプル 1023126 サッカー部 NULL キー属性 そのリレーション内で NULL値以外の属性値が 2つ以上一致することがないような属性値 (キー属性、候補キーという) 【例】 学生ID 学科ID 主キー 候補キーのうち 属性値としてNULLをとりえないものをひとつ選び、 検索するためのキーとするものを 主キーという。 【例】 学生ID 学科ID 外部キー NULLでないかぎり、 必ず関係における属性の値として 登録されているもの 【例】 「サークル活動」における「サークル名」属性の値として 登録されている値を用いる。 この場合、「サークル名」を外部キー(foreign key)と呼ぶ 関数従属性 ある属性が決まれば、 他の属性値も決まってしまうような関係 Rの属性Xに対してただ一つのYの値が 対応する場合(XはYを決定する)、次のように書く。 R. X R.Y 【例】 「学科ID」が決まれば、「学科名」は一意に決まる。 「学生番号」が決まれば「氏名」は一意にきまる。 第3章 関係データベースの基礎 3.1 関係とは 3.2 関係代数 3.2 関係代数 (1) 操作 A. 基本操作 (a) 制限(選択) 関係から条件を満たすタプルを抜き出す (restriction, selection) (b) 射影 関係から指定属性のみを取り出す (projection) (c) 直積 2つの関係からタプルを取り出し、 そのすべての組み合わせを求める。 (Cartesian product : Cは大文字で書くこと) ・ ・ ・ ・ ・ ・ ・ ・ ・ (d) 和 2つの関係の和集合をとる。 (union) 属性およびそのドメインが同じでなければならない(union compatible条件) (e) 差 2つの関係の差集合をとる。 (difference) (f) 積 2つの関係の共通部分をとる。 (intersection) B. 基本操作の組み合わせ (g) 結合 2つの関係の直積をとり、条件を満たすタプルの みを抜き出す(join) 直積 条件 (h) 商,除算(division) 【条件】 以下のとき除算できる。 ① 2つの関係R1, R2が与えられている。 ② R1には、R2が持つすべての属性(R2との共通 属性)が定義されている。 除算の方法(1) ① R1のタプルであって、その共通属性値がR2のタ プルであるようなものを選ぶ。 ② 集められたタプルを固有属性値が同じものごと にグループ化する。 ③ 各グループにおける共通属性値の集合がR2を 含んでいる場合、その固有属性値を取り出す。 除算の方法 除算の方法(2) R1 同じ値A R2 R2 A B 同じ値B R2 (2) 関係代数操作の記法と操作例 (a) 制限(選択) 【書式】 Rest [op1 comp op2] (R) R : 捜査対象となる関係、 op1, op2:属性または定数 Comp : 比較演算子(=, ≦, ≠, <・・・) 【例】部員数21名以上の大規模サークル Rest [部員数 > 20] (サークル) (b) 射影 【書式】 Proj [A1, A2, ・・・, An] (R) R : 捜査対象となる関係、 A1, A2,・・・An:属性 【例】関係「学生」から学生IDと氏名の対応表を作成 Proj [学生ID, 氏名] (学生) 本来は記号 で表すが ここではJoinで表記 【書式】 R1 Join [条件] R2 【例】関係「学生」と「学科」から所属学科一覧を作成 学科 Join [学科ID=所属学科ID] 学生 (c) 結合 【例】関係「学生」と「学科」から所属学科一覧を作成 学科 結合の例 Join [学科ID=所属学科ID] 学生 学科ID 学科名 所属学部 学生ID 氏名 所属学科ID E01 機械 工学部 1110123 山田隆夫 E01 E02 電気電子 工学部 1121245 岸田光一 E02 E03 情報 工学部 1132225 山崎誠司 S01 S01 物理 理学部 1121245 宮崎洋一 E02 学科ID 学科名 所属学部 学生ID 氏名 所属学科ID E01 機械 工学部 1110123 山田隆夫 E01 E02 電気電子 工学部 1121245 岸田光一 E02 S01 物理 理学部 1132225 山崎誠司 S01 E02 電気電子 工学部 1121245 宮崎洋一 E02 【書式】 R1 ÷ R2 【例】 サークル活動 ÷ 学科 (d) 除算 以下サークル名には卓球部、サッカー 部、野球部しかないことを前提とする 除算の例 学生ID サークル名 サークル名 1001516 野球部 卓球部 1101001 卓球部 1101001 サッカー部 1101001 野球部 1102123 卓球部 1103003 サッカー部 1102256 卓球部 1102256 サッカー部 学生ID 1102256 野球部 1101001 1103021 野球部 1102256 1104146 卓球部 1202318 サッカー部 ÷ サッカー部 野球部 万能学生
© Copyright 2024 ExpyDoc