データベースの目的あるいは利点
階層データモデル | 階層データベース | ツリー(木)構造 |
ネットワークモデル | ネットワークデータベース | 網の目構造 |
関係モデル | 関係データベース (RDB) | 2 次元表で表示 |
データの独立 | データベースの属性を追加・ 変更してもその列を参照しないプログラムに影響はないように設計 |
冗長性の排除 | 同一の内容を持つデータの重複を避けるように設計 |
同時処理 | 排他制御を用い、 複数のプログラムから同時にアクセスが可能となるように設計 |
キーのまとめ
関係データベース: データベースを 2 次元表形式にまとたもので、 行(レコード、組)と列(フィールド、属性)の表を作る
主キー: 特定の行を取り出すための属性のこと
候補キー: 関係表の中で、ある属性を持った行を全て取り出すもののこと、 ある行を一意に取り出すものは主キー
外部キー: 二つの表から参照関係を取り出すときに使う主キーや候補キーのこと
DBMS:データベース管理システム (DataBase Management System)
定義 | スキーマを定義 |
操作 | データベースの構築、操作を行う |
制御 | アクセス制御、排他制御、障害回復機能 |
トランザクション管理 | トランザクションの実行を制御 |
ビュー | 表の一部を抽出してユーザに分りやすく示す機能 |
トランザクション: インターネットバンキングなどの操作に使われ、 複数位置にある情報を更新するときに、 対象となる全ての更新処理が終了した段階で処理を確定させること
関係演算:一つあるいは複数の関係表のデータを取り出して、 新たに表を作ること
射影 | 表から特定の属性を取り出す |
選択 | 表から特定の条件を満たす行を取り出す |
結合 | 複数の表から条件を満たす行を取り出して新しい表を作る |
集合演算:関係表の和・積・差・直積を求めること
和演算 | 2 つの関係表から、 どちらか一方あるいはどちらにも含まれるデータを取り出す |
積演算 | 2 つの関係表から、両方に含まれるデータを取り出す |
差演算 | 2 つの関係表から、どちらか一方にしか含まれないデータを取り出す |
データベース:情報を集約して管理するシステムや場所のこと
データモデル:情報を抽象化して表現した情報
データの独立性:データが変更されてもプログラムに変更が生じないこと、 3 層スキーマにより実現
ANSI:American National Standatrds Institute(米国規格協会)
DBMS | 概念スキーマ | データベース全体の定義 | 概念データモデル |
外部スキーマ | ユーザ側からのデータベース | 論理データモデル、ビュー | |
内部スキーマ | 物理面(ハードウェア)からみたデータベース | 物理データモデル |
E-R 図:データモデルに独立な、データモデルの表現方法
トラブル対策:データベースは企業の資産であるので、 データベース管理システムにはログファイルやチェックポイントファイルなど、 停電やハードウェア障害などのトラブルが生じても、 データベースに損害を与えないようにする保護機能がある
DDL・DMLから成る RDB の定義と操作を行う言語、Structured Query Language
DDL | データ定義言語 | データを定義する | スキーマ+ビュー | Data Definition Language | CREAT, GRANT など |
DML | データ操作言語 | データを操作する | クエリー | Data Manipulation Language | SELECT, INSERT, UPDATE, DELETE など |
データ定義言語: データベース全体の定義+実表の定義+ビュー表の定義を行う
DDL での定義 | 命令文 | 機能の意味 |
スキーマ定義 | CREATE SCHEMA 文 | データベース全体を定義 |
表定義 | CREATE TABLE 文 | 実表の定義 |
ビュー定義 | CREATE VIEW 文 | ビュー表の定義 |
権限定義 | GRANT 文 | 操作権限 (ALL, SELECT, INSERT, UPDATE, DELETE の許可)の定義 |
実表:実際にデータベースに存在する表
ビュー表:ユーザが目的に応じて要求したデータを組み合わせて作られる仮の表
権限定義: ユーザが表に対して操作できるかどうか予め定義することができる
SELECT 文:SELECT 列 FROM 表 [WHERE 条件]
ワイルドカード:あらゆる文字列を一つの記号で示すことで、 * (アステリスク) を用いることが多い。
AVG | 平均を出す | AVG(列名) |
COUNT | 行数を出す | COUNT(*) |
MAX | 最大値を出す | MAX(列名) |
MIN | 最小値を出す | MIN(列名) |
SUM | 合計を出す | SUM(列名) |
COUNT(DISTINCT 列名):重複を排除した行数を数える
例:SELECT 属性 FROM 表 GROUP BY 属性 HAVING 条件式
INSERT 文:INSERT INTO 表(or 列) VALUES (値)
UPDATE 文:UPDATE 表 SET 列 = 値 [WHERE 条件]
DELETE 文:DELETE FROM 表 WHERE 条件
データの正規化: 繰り返される要素を排除して表を整理すること
正規化の手順
一意:主キーを用いて分類したとき、属性が重複なく分類できていること
完全関数従属:どの主キーで選んでも一意に决まること
部分関数従属:主キーを選べば、一意に决まること
推移関数従属:完全関数従属の関係が複数続くこと
非正規形のデータ | 重複する要素が含まれている |
第 1 正規形 | 繰り返しされている情報を複数の行に分けたものを、 複数の表に分解し、重複しない表を作る |
第 2 正規形 | 部分従属変数を取り除くこと |
第 3 正規形 | 推移関数従属を取り除くこと |
ある問屋で働く人の手書きの売上げメモを読んでみよう。
これを一覧表にしてみるとどうだろうか?
6月15日 | 薄型さにーテレビ | テレビ | まり電器 |
6月15日 | 月立計算機 | PC | ゆっきーのPC |
6月15日 | ダコモフォーン | 携帯電話 | ともき電話取次店 |
6月15日 | サーテックPC | PC | やまがた電機 |
6月16日 | サムさんPC | PC | まる電器店 |
6月16日 | ダコモフォーン | 携帯電話 | おの商店 |
6月16日 | ぼうだフォーン | 携帯電話 | ともき電話取次店 |
6月16日 | サムさんPC | PC | ゆっきーのPC |
6月16日 | ダコモフォーン、ぼうだフォーン | 携帯電話 | おの商店 |
6月16日 | 薄型さにーテレビ | テレビ | やまがた電機 |
6月16日 | ラノボ思考版 | PC | まる電器店 |
6月17日 | サーテックPC、ラノボ思考版 | PC | ゆっきーのPC |
6月17日 | ラノボ思考版 | PC | まり電器 |
6月17日 | ぼうだフォーン | 携帯電話 | やまがた電機 |
これに関して第一正規化を行なう。2 つのデータが含まれているところを分解する。
6月15日 | 薄型さにーテレビ | テレビ | まり電器 |
6月15日 | 月立計算機 | PC | ゆっきーのPC |
6月15日 | ダコモフォーン | 携帯電話 | ともき電話取次店 |
6月15日 | サーテックPC | PC | やまがた電機 |
6月16日 | サムさんPC | PC | まる電器店 |
6月16日 | ダコモフォーン | 携帯電話 | おの商店 |
6月16日 | ぼうだフォーン | 携帯電話 | ともき電話取次店 |
6月16日 | サムさんPC | PC | ゆっきーのPC |
6月16日 | ダコモフォーン | 携帯電話 | おの商店 |
6月16日 | ぼうだフォーン | 携帯電話 | おの商店 | 6月16日 | 薄型さにーテレビ | テレビ | やまがた電機 |
6月16日 | ラノボ思考版 | PC | まる電器店 |
6月17日 | ラノボ思考版 | PC | ゆっきーのPC |
6月17日 | サーテックPC | PC | ゆっきーのPC |
6月17日 | ラノボ思考版 | PC | まり電器 |
6月17日 | ぼうだフォーン | 携帯電話 | やまがた電機 |
卸した取扱商品一覧と卸した店舗名の表に分けてみる。
6月15日 | 薄型さにーテレビ | テレビ |
6月15日 | 月立計算機 | PC |
6月15日 | ダコモフォーン | 携帯電話 |
6月15日 | サーテックPC | PC |
6月16日 | サムさんPC | PC |
6月16日 | ダコモフォーン | 携帯電話 |
6月16日 | ぼうだフォーン | 携帯電話 |
6月16日 | サムさんPC | PC |
6月16日 | ダコモフォーン | 携帯電話 |
6月16日 | ぼうだフォーン | 携帯電話 |
6月16日 | 薄型さにーテレビ | テレビ |
6月16日 | ラノボ思考版 | PC |
6月17日 | ラノボ思考版 | PC |
6月17日 | サーテックPC | PC |
6月17日 | ラノボ思考版 | PC |
6月17日 | ぼうだフォーン | 携帯電話 |
6月15日 | テレビ | まり電器 |
6月15日 | PC | ゆっきーのPC |
6月15日 | 携帯電話 | ともき電話取次店 |
6月15日 | PC | やまがた電機 |
6月16日 | PC | まる電器店 |
6月16日 | 携帯電話 | おの商店 |
6月16日 | 携帯電話 | ともき電話取次店 |
6月16日 | PC | ゆっきーのPC |
6月16日 | 携帯電話 | おの商店 |
6月16日 | 携帯電話 | おの商店 |
6月16日 | テレビ | やまがた電機 |
6月16日 | PC | まる電器店 |
6月17日 | PC | ゆっきーのPC |
6月17日 | PC | ゆっきーのPC |
6月17日 | PC | まり電器 |
6月17日 | 携帯電話 | やまがた電機 |
つぎに、部分従属変数を取り除く。A といえば B または C が該当する、 という状況ならば、A と B の表、A と C の表に分解する。
ここでは、この問屋にとって取引先が PC 取扱専門店、電話取扱専門店かどうか、 が分かる。卸した先をさらに分解すると
ゆっきーのPC | PC |
まる電器店 | PC |
おの商店 | 携帯電話 |
ともき電話取次店 | 携帯電話 |
やまがた電機 | PC |
やまがた電機 | テレビ |
やまがた電機 | 携帯電話 |
まり電器 | PC |
まり電器 | テレビ |
この例では、やまがた電機は得意先であり、 おの商店やともき電話取次店は携帯電話を専門に扱っていることが分かる。
一方、取扱った商品で表を分解すると
薄型さにーテレビ | テレビ |
月立計算機 | PC |
サーテックPC | PC |
サムさんPC | PC |
ラノボ思考版 | PC |
ダコモフォーン | 携帯電話 |
ぼうだフォーン | 携帯電話 |
となり、この店ではテレビと言えば、薄型さにーテレビとなる。このように、 あるキーを選ぶと必ず特定できるものを完全関数従属という。 取扱った商品の表でで商品を選ぶとかならずある商品区分に分解される。 このように、商品名を選ぶと必ず商品区分が分かるようなものを部分関数従属という。 部分関数従属をあらたに表にしなおすことを第二正規形と呼ぶ。
この問屋は、月立計算機は唯一ゆっきーの PC にのみ卸している。 すなわちこの問屋では、ゆっきーの PC といえば、月立計算機を卸す、 と分析できる。月立計算機は、月立工場からのみ納入されるとすると、 ゆっきーの PC から月立計算機の故障のクレームがあった場合は、 月立工場に直接連絡を取ればよい。すなわち、 連絡先一覧は月立計算機を選ぶと必ずどこにとってよいか分かる。 これらを表にし直すことを第 3 正規形という。
関係データベースを作るに際し、関係をまとめるために使われる図である。
E-R モデル:Entity (実体) と Relation (関連) に分けてデータベース化すること
E-R 図:E-R モデルを図で表したもの。 データモデルに独立なデータモデルを表現する方法
矢印に数が示されている場合はその対応の数を示すが、 一般に矢でないほうの対応する数は多く、矢のほうは 1 である。
実体 | ![]() |
|
属性 | ![]() |
|
関連 | ![]() |
|
直線 | ![]() |
1 対 1 |
矢印 | ![]() |
1 対多 |
両矢印 | ![]() |
多対多 |
E-R 図は、属性を関係づけるものである。
属性 | |||||
「名前」 | 「学籍番号」 | 「語学クラス」 | 「情報科目クラス」 | ||
組 | レコード 1 | 相田みつこ | c105901 | 中国語 | 情報 A |
レコード 2 | 飯島なおき | c105902 | 中国語 | 情報 B | |
レコード 3 | 内田外男 | c105903 | ロシア語 | 情報 C | |
レコード 4 | 江口洋子 | c105904 | ロシア語 | 情報 C | |
レコード 5 | 岡田増太 | c105905 | 韓国語 | 情報 A | |
レコード 6 | 鎌田鍬夫 | c105906 | 韓国語 | 情報 A | |
レコード 7 | 木村拓世 | c105907 | 英語 | 情報 C | |
レコード 8 | 熊本みかん | c105908 | 英語 | 情報 D | |
レコード 9 | 今朝羽根坊 | c105909 | 英語 | 情報 D |
E-R モデル:Entity (実体) と Relation (関連) に分けてデータベース化すること
E-R 図:E-R モデルを図で表したもの
データベース例
に対しての E-R 図は、属性を関係の矢印で結んだものである。
大量に質的データを取り扱うときには、計算機を用いる。 質的データを整理するには関係データベースを用いた、 SQL (Structured Query Language) を使う。
システムとしては PostgresQL, MySQL などいくつか流儀がある。