1.74k likes | 1.98k Views
情報システム構築. 第 10 回 データベース ( Database) (2007/12/11版). 参考書19: 増永良文、「リレーショナルデータベース入門(新訂版)」、 サイエンス社. 2007年12月13日. データベースとは. データの重要性 例:企業はデータに基づき、企業活動を行っている(セブンイレブンの躍進) データベースの重要性 必要なデータが迅速に取り出せる そのための仕組みが必要 データの独立(データ処理することと切り離す) どういうデータがどういう形でほしいといったことと分離させておく
E N D
情報システム構築 第10回 データベース(Database)(2007/12/11版) • 参考書19:増永良文、「リレーショナルデータベース入門(新訂版)」、サイエンス社 2007年12月13日 情報システム構築 第10回
データベースとは • データの重要性例:企業はデータに基づき、企業活動を行っている(セブンイレブンの躍進) • データベースの重要性 • 必要なデータが迅速に取り出せる • そのための仕組みが必要 • データの独立(データ処理することと切り離す)どういうデータがどういう形でほしいといったことと分離させておく • データのベース(基地)Data Base → Database 情報システム構築 第10回
データベースの重要性 • ファイルシステムからデータベースプログラムから分離データのほうが長持ちする(データの内容ではなく、枠組み)→スキーム • データ(ベース)の一貫性(integrity)(consistency) • データベースの機密保護(security)セキュリティ 情報システム構築 第10回
データベースの種類 • リレーショナル(関係)データベース最近では最も普及最も数学的(形式的)集合論が基礎となっているコッド博士 1970年 • ネットワーク型データベース縦横にポインタ(チェイン、リンク)がはられている • 階層型データベースツリー状にポインタ(チェイン、リンク)がはられている • オブジェクト指向データベース最近のオブジェクト指向の考えを取り入れたデータベース形は階層型データベースに類似する 情報システム構築 第10回
モデリング • データベースとDBMSDBMS(Database Management System):データを操作する(扱う)ためのソフトウェア例:Oracle、SQL Server、Access、PostgreSQL、MySQLデータベース:中身、内容例:企業データ、売上データ、成績データ • データと情報データ:数値や文字列情報:データに意味付けしたもの往々にして、混同して使われる 情報システム構築 第10回
モデリング • データモデル実世界をデータの世界で表現するもの実世界を記述する記号体系 実世界 データモデルの世界 社員 社員データ名前、生年月日、本給、作業時間、・・ ・・ プロジェクトデータ 予定表データ 情報システム構築 第10回
データモデリングの進め方 • データモデル概念モデル→論理モデル(Conceptual model) (Logical model) データモデル ANSI/X3/SPARC3層スキーマ 概念モデル 外部スキーマ 論理モデル 概念スキーマ 相当 内部スキーマ 情報システム構築 第10回
実体(entity) 実体型(entity type) 例 学生1 学生(型)総体として捉える全般に学生とはどういう属性をもっている 学生2 学生3 ・・ ・ オブジェクト指向のクラスにあたる 学生n データモデリングの進め方 • 概念モデルの表現方法E-Rモデル(E-R図、実体ー関連モデル)Entity-Relationship model 情報システム構築 第10回
関連(relation) 関連型(relation type) 例 学生1、科目1 履修(型)総体として捉える全般に学生と科目の間にはどういう属性をもっている 学生1、科目2 学生2、科目1 ・・ ・ オブジェクト指向のクラスにあたる 学生n、科目m データモデリングの進め方 • 概念モデルの表現方法E-Rモデル(E-R図、実体ー関連モデル)Entity-Relationship model 情報システム構築 第10回
ER図 • 概念モデルの表現方法E-Rモデル(E-R図、実体ー関連モデル)Entity-Relationship model • 実体の表現 長方形で表現 実体型の名称 学生 実体型の属性 学籍番号氏名住所 または属性は楕円で付属させる 情報システム構築 第10回
ER図 • 概念モデルの表現方法E-Rモデル(E-R図、実体ー関連モデル)Entity-Relationship model • 関連の表現 菱形で表現 関連型の名称 関連型の属性 履修 得点 情報システム構築 第10回
ER図 • EーRモデルの図実体と関連を同一の図に表現する基数を書く(関連中心) 関連を中心にして、結合される実体数を表記する科目数Nに対して学生数M(N,Mは具体的数値でなくてもよい、実際には増減する。) 科目 学生 N 履修 M 科目名単位数 学籍番号氏名住所 得点 情報システム構築 第10回
ER図 • EーRモデルの図実体と関連を同一の図に表現する基数を書く(実体中心) 実体を中心にして、関連付け先の実体の数の最小、最大を表記する最小結合度、最大結合度による表現(結合度:結合の数) 1,N 学科 学生 所属 学科名教育目標 学籍番号氏名住所 年度 1,1 情報システム構築 第10回
データモデルの表現方法 • 論理モデルの表現方法リレーショナルデータモデルネットワークデータモデルハイアラキカルデータモデル • ここでは、リレーショナルデータモデル(実際、一番普及している)表(テーブル)で表現する 情報システム構築 第10回
学生 学籍番号 学籍番号 学生名 住所 学生 学生名 住所 外部キー 履修 学籍番号 科目名 得点 履修 得点 外部キー 科目 科目名 科目名 単位数 科目 単位数 • 実体ー関連図をリレーショナルスキーマに変換する例 ERからリレーションへ 情報システム構築 第10回
リレーショナルデータベース 実体型の名称 科目(実体) 学生(実体) • 表による表現実体も関連も表で表現 実体型の属性 実体型の属性 実体型の属性 履修(関連) 情報システム構築 第10回
主キー • 主キー候補キー • 属性の値(属性の値の組)がリレーションのタプルを一意的に特定(同定)できる属性(の組)「主キー」となりえる候補という意味 • 極小である属性の組が候補キーになっているとき、その属性のうち1つでも欠落したら、一意的特定ができなくなる • 最悪全属性の組み合わせが候補キーとなる(タプルの重複はないものとする:集合論) 情報システム構築 第10回
主キー 社員名がA川B夫であるタプル • 候補キー 情報システム構築 第10回
主キー • 主キー候補キーから1つ選ぶデータベース設計者がどの候補キー(属性)を第1に捉えるかによる • キー制約つねに主キーを構成する属性の値は空値とならない唯一識別能力(候補キーなので、当然)「つねに」:いかなる(時刻、インスタンス)でも • アンダーライン主キーを構成する属性にはアンダーラインを引く、 納品(商品番号,顧客番号,納品数量) 情報システム構築 第10回
主キー 主キー H 主キー K 教員(実体) 科目(実体) • 1対多 主キーはH 主キー H 担当(関連) 前提:1つの科目を複数の教員で担当することはない 情報システム構築 第10回
主キー 主キー H 主キー K 科目(実体) 学生(実体) • 多対多 主キーは和集合K∪H 主キー K ∪ H 履修(関連) 情報システム構築 第10回
外部キー • 外部キー企業の総務関係データ • 社員(社員番号,社員名,給与,所属,・・) • 部門(部門番号,部門名,部門長,・・) • 所属は部門に登録されているものか空値 • 部門長は社員に登録されているものか空値 • 外部キー参照した先が主キーになっている • 外部キー制約 情報システム構築 第10回
外部キー PRIMARY KEY (社員番号),FOREIGN KEY(所属) REFERENCE 部門(部門番号) • 外部キー 情報システム構築 第10回
第1正規形 • 第1正規形(the first normal form, 1NF) • ドメインがシンプル • ある属性のドメインがドメインの直積ではないドメインのべき集合(値の集合)ではない • 要するに、単純なドメインである厳密に定義することは難しい • 入れ子型リレーションではないリレーションの属性値がリレーション • 正規化:正規形にすること • 注:ベキ集合とは部分集合の集合 情報システム構築 第10回
第1正規形 • 第1正規形 • リレーションとはドメインの直積空間(集合)での部分集合 • 直積空間(集合)で個別に識別できること • ドメインがシンプルとは、そのドメインがドメインの直積ドメインのベキ集合ドメインの直積のベキ集合 • シンプルなドメイン上で定義されたリレーションは第1正規形(first normal form, 1NF)各要素(タプル)が個別に識別できる になっていない 情報システム構築 第10回
第1正規形 • 第1正規形 • リピーティンググループ→ 第1正規形から排除レコードのフィールド値が値の集合(タプルの属性値) • 非第1正規形(non-first normal form)第1正規形でないリレーション入れ子型リレーション(nested relation)ともいう 情報システム構築 第10回
第1正規形 • 非(第1)正規形の例(属性が直積) • 上記の正規化 情報システム構築 第10回
第1正規形 • 非(第1)正規形の例(属性が集合) • 上記の正規化(集合を分ける) 情報システム構築 第10回
スキーマ • リレーショナルデータベーススキーマ • リレーショナルスキーマインスタンスとしてのリレーションの時間的に不変な構造的枠組み • リレーショナルデータベーススキーマ複数のリレーションの集まりインスタンスとしてのリレーショナルデータベースの時間的に不変な構造的枠組み 情報システム構築 第10回
スキーマ • リレーショナルデータベーススキーマ • データベーススキーマ名 • リレーションスキーマ(テーブル)定義×n • ドメイン定義×n • 一貫性制約定義 • 特権定義誰が、どのリレーションを読み書きできるか • ビュー定義、他仮想的なリレーション(物理的に格納されていないリレーション) • 表明、トリガ定義 情報システム構築 第10回
スキーマ • SQLでは • スキーマ定義言語(schema definition language) SDL • スキーマ操作言語(schema manipulation language) SML • として用意されている • 当然ながら、データベース操作言語(Database Manupulation Language)も用意されている 情報システム構築 第10回
スキーマ • 権限付与と剥奪 • リレーションレベルの権限GRANT INSERT,DELETE ON社員TO U008操作の種類 テーブル名 ユーザREVOKE INSERT,DELETE ON社員TO U008 • データベーススキーマレベルの権限CREATE SCHEMA 新しいスキーマAUTHORIZATION ユーザ 情報システム構築 第10回
SQLの歴史 • SQLのあゆみ (ISO) • 1970 コッド博士の論文 • 1974 SEQUEL(IBM: System R)(Structured English Query Language)(シーキュール) • 1976 SEQUEL2 • 1982 ISOにて標準化スタート • 1987 SQL87 • 1989 SQL89 • 1992 SQL2 = SQL92 • 1999 SQL3 = SQL99 情報システム構築 第10回
データベース演算(操作) • データモデルの3つの要素構造記述 一貫性制約の記述 データ操作言語 • データ操作言語(Data Manipulation Language) DML • リレーショナルデータベース複数のリレーションの集まりリレーション:実体:実世界のデータ 関連:データ間の関連 情報システム構築 第10回
データベース演算(操作) • データベースとの相互作用 • 質問(query)、問合せリレーショナルデータベースに質問して答えをもらう • 更新(update)タプルの削除タプルの追加タプルの属性値の修正 • 質問、問合せのほうが多く使用される • 問合せ機能の体系化 情報システム構築 第10回
データベース演算(操作) • データ操作言語による問い合わせ • 給与が50以上の社員の社員名と所属 情報システム構築 第10回
データベース演算(操作) • 結果リレーションの再帰性問い合わせした結果がまたリレーションになっている • 実リレーション、基本リレーションデータベースに格納されているリレーション • ビュー(仮想的なリレーション)格納されていないが、使用する上でリレーションを定義できる、それがビュー 情報システム構築 第10回
データベース演算(操作) • 給与が50以上 (選択) • 属性の社員名と所属のみ切り出す(射影) 情報システム構築 第10回
データベース演算(操作) • データ操作言語データベースの中のデータを操作するための言語データを操作するとは、データの問合わせや更新を行うこと、すなわち、必要なデータをデータベースから入出力すること 人 データベース データ操作 プログラム main() 情報システム構築 第10回
データベース演算(操作) • リレーショナル代数リレーショナルデータベースを操作するための方法(操作言語)リレーショナルデータ操作言語 • データ操作言語を代数とよぶ理由リレーショナルデータベースの場合、データ操作を集合論に基づく、代数的手法(すなわち数学的演算)で行うことができるので 情報システム構築 第10回
データベース演算(操作) • リレーショナル代数の枠組(演算の種類) • 4つの集合演算 • 和集合演算 • 差集合演算 • 共通集合演算 • 直積集合演算 • 4つのリレーショナル代数の演算 • 射影演算 • 選択演算 • 結合演算 • 商演算 情報システム構築 第10回
データベース演算(操作) • 8つの演算は必ずしも独立ではない • 例:共通集合を差集合で表す R S S-R R-S R∩S R∩S=R-(R-S) 情報システム構築 第10回
データベース演算(操作) • 結合演算は直積演算と選択演算 • 商演算は直積演算、射影演算、差演算 • リレーショナル代数は5つの演算(独立) • 和集合演算 • 差集合演算 • 直積演算 • 射影演算 • 選択演算 情報システム構築 第10回
データベース演算(操作) • 和両立(union compatible) • リレーションR(A1,A2,・・・,An) • リレーションS(B1,B2,・・・,Bm) (1) RとSの次数が等しいn=m (2) 各i(1≦i≦n)AiとBiのドメインが等しいdom(Ai)=dom(Bi) 情報システム構築 第10回
データベース演算(操作) • 和集合演算(union) • リレーションR • リレーションS • RとSは和両立 • RとSの和(和集合)とはR∪S={t|t∈R ∨t∈S} • ∨は論理和をあらわす論理記号 • t∈R ∨t∈Sはtを変数とする命題、すなわち述語(predicate) • リレーションはタプルを要素とする集合 • 結果リレーションの属性名のつけかた 情報システム構築 第10回
データベース演算(操作) • 差集合演算(difference) • リレーションR • リレーションS • RとSは和両立 • RとSの差(差集合)とはRーS={t|t∈R ∧ ┓(t∈S)} • ∧は論理積、 ┓は否定をあらわす論理記号 • t∈R ∧ ┓(t∈S)はtを変数とする命題、すなわち述語(predicate) • Rにあって、Sに属していないタプル 情報システム構築 第10回
データベース演算(操作) • 共通集合演算(intersection) • リレーションR • リレーションS • RとSは和両立 • RとSの共通(共通集合)とはR∩S={t|t∈R ∧ t∈S} • ∧は論理積をあらわす論理記号 • t∈R ∧ t∈Sはtを変数とする命題、すなわち述語(predicate) • Rにも、Sに属しているタプル 情報システム構築 第10回
データベース演算(操作) • 直積集合演算(direct product) • リレーションR(A1,A2,・・・,An) • リレーションS(B1,B2,・・・,Bm)(nとmが等しくなくてもよい、ドメインは同じでなくてもよい) • RとSの直積(直積集合)とはR×S={(r,s)|r∈R ∧ s∈S}n+m次のリレーション(r,s)はn+m項のタプル • ∧は論理積をあらわす論理記号 • r∈R ∧ s∈S はr、sを変数とする命題、すなわち述語(predicate) 情報システム構築 第10回
データベース演算(操作) • 直積集合演算(direct product) • 結果リレーションの属性名どちらから来たものか明確にしておく必要がある(R、Sの中に同じ属性名がありうるので) • 修飾リレーションRから来た属性AならR.Aと表すリレーションSから来た属性AならS.Aと表す • RとSが同じRならば、左右を明示するRをRL、SをRRと書く 情報システム構築 第10回
データベース演算(操作) • 直積集合演算(direct product) 情報システム構築 第10回