SlideShare a Scribd company logo
1 of 25
Download to read offline
データベース技術
第5回(2015.10.27)
1
データベース設計の手順
•データとその関連(ER)を分析する
•表を作る
•表を正規化する
- 第一正規形
- 第二正規形
- 第三正規形
2
データとその関連(ER)の分析
•ERモデル
- 現実世界をEntity(実体)とRelationship(関連)  
という概念を使って考える
- 現状の世界からにEntity(実体)をとらえる
• 例:商品(商品コード、商品名、単価)
• 例:輸出先(輸出先コード、輸出先名)
- 実体同士のRelationship(関連)について考える
• 例:売上
3
ERモデル
•Entity(実体)とRelationship(関連)
商品
商品コード
商品名
単価
輸出先
輸出先コード
輸出先名
売上 個数
M
N
・多数の商品が多数の輸出先
 に売られる
・多数の輸出先は多数の商品
 を買っている
多対多の関係
※商品がひとつの場合、
 1対多の関係となります
※商品ひとつ輸出先ひとつの場合、
 1対1の関係となります
4
非正規形
•繰り返し項目が排除されていない表
•リレーショナルデータベースでは、非正規形の
表はうまく処理できない
報告書コード 日付 輸出先コード 輸出先名 商品コード 商品名 単価 個数
1101 3/5 12 アメリカ
101 メロン ¥800 1,100
1101 3/5 12 アメリカ
102 いちご ¥150 300
1102 3/7 23 中国 103 りんご ¥120 1,700
1103 3/8 25 フランス 104 レモン ¥200 500
1行分のデータの中に2つの商品のデータが存在する
正規化する:1行に1つの値が入る表にすること
5
正規化
•現実世界のデータをリレーショナルデータベース
の表に落とし込む作業
•1行に1つの値が入る表の形にする
•非正規形の表をデータの矛盾が発生しないよう
複数の表に分割する
6
第一正規形
•表を2次元の単純な表としたもの
•1行に1つの値が入るようにした表
報告書コード 日付 輸出先コード 輸出先名
1101 3/5 12 アメリカ
1102 3/7 23 中国
1103 3/8 25 フランス
報告書コード 商品コード 商品名 単価 個数
1101 101 メロン ¥800 1,100
1101 102 いちご ¥150 300
1102 103 りんご ¥120 1,700
1103 104 レモン ¥200 500
「売上」表 「売上明細」表(第一正規形①) (第一正規形②)
7
第二正規形(1)
•主キーによってほかの列の値が決まるように 
した表
•関数従属している
- 「ある列の値によってほかの列の値が決まる」こと
•第二正規形では、主キーにほかの列が関数従属
するように表を分割する
8
第二正規形(2)
•主キーによって他の列の値がきまる
- 「商品」表は、「商品コード」列の値が決まると 
「商品名」と「単価」の値が決まる
- 「売上明細」表は、「報告書コード」列と「商品コー
ド」列の値が決まると「個数」の値が決まる
商品コード 商品名 単価
101 メロン ¥800
102 いちご ¥150
103 りんご ¥120
104 レモン ¥200
報告書コード 商品コード 個数
1101 101 1,100
1101 102 300
1102 103 1,700
1103 104 500
「商品」表 「売上明細」表(第二正規形①) (第二正規形②)
9
第三正規形
•各項目の値が、主キーのみで決まる表
•推移従属している
- 「ある列の値にによって間接的にほかの列の値が  
決まる」こと
•第三正規形では、推移従属を除くように表を 
分割する
報告書コード 日付 輸出先コード
1101 3/5 12
輸出先コード 輸出先名
12 アメリカ
「売上」表(第三正規形①) 「輸出先」表(第三正規形②)
10
第三正規形にした表
•リレーショナルデータベースではこの表を使う
報告書コード 日付 輸出先コード
1101 3/5 12
1102 3/7 23
1103 3/8 25
輸出先コード 輸出先名
12 アメリカ
23 中国
25 フランス
「売上」表 「輸出先」表
商品コード 商品名 単価
101 メロン ¥800
102 いちご ¥150
103 りんご ¥120
104 レモン ¥200
報告書コード 商品コード 個数
1101 101 1,100
1101 102 300
1102 103 1,700
1103 104 500
「商品」表「売上明細」表
参照
参照
参照
11
データベースの設計について
•データベース設計はシステム設計の一部
業務の分析
要件定義
基本設計
論理設計
詳細設計
今の業務はどうなっているのか
何をしたいのか
どんなシステムにすべきか
どのように実現するか
方法を明確にする
データベース設計は
この段階に含まれる
データベースの設計
=データベースの構造を設計する
12
スキーマ
• データベースの構造をスキーマと呼ぶ
• スキーマは3つの構造に分類される
- 概念スキーマ
• 論理的な構造を定義する
• ER図の作成、テーブルの設計、論理設計、概念設計
- 外部スキーマ
• ユーザから見たデータベースを定義する
• ビューの設計
- 内部スキーマ
• コンピュータ内部から見たデータベースを定義する
• 物理的な部分を定義する
• 容量、メモリ設計、物理設計、物理配置設計、インデックス設計
13
概念スキーマ
•データの論理的な構造を設計する段階
- 現実世界をいかにコンピュータに置き換えるか考える
- 情報の流れを分析し、データベース化する部分を決定
•表を作って正規化する
•ER図を書く
•各テーブルのデータの型や長さを決定する
14
表を作って正規化する
•例:果物の輸出に関するデータ
報告書コード 日付 輸出先コード
1101 3/5 12
1102 3/7 23
1103 3/8 25
輸出先コード 輸出先名
12 アメリカ
23 中国
25 フランス
「売上」表 「輸出先」表
商品コード 商品名 単価
101 メロン ¥800
102 いちご ¥150
103 りんご ¥120
104 レモン ¥200
報告書コード 商品コード 個数
1101 101 1,100
1101 102 300
1102 103 1,700
1103 104 500
「商品」表「売上明細」表
15
ER図を書く
商品コード
商品名
単価
輸出先コード
輸出先名
報告書コード
日付
輸出先コード
「商品」表
「輸出先」表「売上」表
1
*
1*
報告書コード
商品コード
個数
「売上明細」表
1*
16
データの型や長さを決める(1)
•データ型(MySQLの場合の一部)
型 説明
INT 整数型(別名:INTEGER)
DOUBLE 浮動小数点数型
DATE 日付型(フォーマット:'YYYY-MM-DD')
DATETIME 日付時刻型(フォーマット:'YYYY-MM-DD HH:MM:SS')
TIME 時刻型(フォーマット:'HH:MM:SS')
CHAR
文字列型(指定文字数以下の文字を格納した場合は末尾
に空白を付け加える)
VARCHAR
文字列型(指定文字数以下の文字を格納しても空白を加
えない)
17
データの型や長さを決める(2)
•制約の種類
制約 説明
PRIMARY KEY
主キー。一意に行を指定可能であることを保証する。
複数列指定でもOK。NULLデータは扱えない。
FOREIGN KEY
外部キー。外部のテーブルの主キーを指定する。
表と表の関係を明示するために使う。
UNIQUE
値の重複禁止を保証する。
ただし、NULL値は複数OK。
CHECK
挿入される値をチェックし、該当しないものははじ
く。(例:CHECK(社員ID > 0) =>マイナス値は不可)
NOT NULL NULL値でないことを保証する。
18
データの型や長さを決める(3)
「輸出先」表
「売上」表
フィールド名 データ型 長さ 制約
報告書コード INT 10 PRIMARY KEY, NOT NULL, AUTO_INCREMENT
日付 DATE NOT NULL
輸出先コード INT 3 FOREIGN KEY
フィールド名 データ型 長さ 制約
輸出先コード INT 3 PRIMARY KEY, NOT NULL
輸出先名 VARCHAR 40 NOT NULL
※ AUTO_IMCREMENT:自動的に連番が格納される
※ PRIMARY KEYを指定すると、自動的にNOT NULL, UNIQUEと判断される。
 ここでは NOT NULLを明示している。
19
データの型や長さを決める(3)
「商品」表
フィールド名 データ型 長さ 制約
商品コード INT 4 PRIMARY KEY, NOT NULL
商品名 VARCHAR 40 NOT NULL
単価 INT 10
「売上明細」表
フィールド名 データ型 長さ 制約
報告書コード INT 10 PRIMARY KEY, NOT NULL
商品コード INT 4 PRIMARY KEY, NOT NULL
個数 INT 5 NOT NULL
※「売上明細」表は報告書コードと商品コードを主キーとしている(複合キー)。
 これは扱い難い場合があるので、明細IDなどを主キーとして設けることもある。
20
スキーマ
• データベースの構造をスキーマと呼ぶ
• スキーマは3つの構造に分類される
- 概念スキーマ
• 論理的な構造を定義する
• ER図の作成、テーブルの設計、論理設計、概念設計
- 外部スキーマ
• ユーザから見たデータベースを定義する
• ビューの設計
- 内部スキーマ
• コンピュータ内部から見たデータベースを定義する
• 物理的な部分を定義する
• 容量、メモリ設計、物理設計、物理配置設計、インデックス設計
21
外部スキーマ
•ユーザから見やすいデータベースを設計する
- 概念スキーマで設計された表は効率の良い形だが、 
ユーザにはわかり難い
- 外部スキーマではユーザが扱いやすい「見える」表
(ビュー View)を定義する
日付 輸出先コード 商品コード 個数
3/5 12 101 1,100
3/6 25 102 300
日付 輸出先名 商品名 個数
3/5 アメリカ メロン 1,100
3/6 フランス いちご 300
わかり難い
わかりやすい
22
内部スキーマ
•コンピュータ内部の物理的な設計を行う
- ディスクのどこに作成するか?
- データベースのファイル名は?
- データサイズはどのくらいか?
- バックアップメディアは何を使うか?
•ハード的な仕様の決定は重要
- データベースの処理速度に大きな影響を持つ場合がある
23
データベースの設計について
•データベース設計はシステム設計の一部
業務の分析
要件定義
基本設計
論理設計
詳細設計
今の業務はどうなっているのか
何をしたいのか
どんなシステムにすべきか
どのように実現するか
方法を明確にする
データベース設計は
この段階に含まれる
データベースの設計
・概念スキーマ ←今ここ
・外部スキーマ
・内部スキーマ
24
Work:概念スキーマを作成する
•各自でテーマを決定する
•データベースの概念スキーマを定義しましょう
- 表を作って正規化する
- ER図を書く
- 各テーブルのデータの型や長さを決定する
25

More Related Content

Viewers also liked

Terminology for The Medical Transcriptionist II
Terminology for The Medical Transcriptionist IITerminology for The Medical Transcriptionist II
Terminology for The Medical Transcriptionist II
Nicholas Hendren
 
л1ст уя 2012
л1ст уя 2012л1ст уя 2012
л1ст уя 2012
STUYAKMMT
 

Viewers also liked (13)

Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 
Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 
GCEMED2012 - Anagrafe della Bicicletta [Ciclospazio]
GCEMED2012 - Anagrafe della Bicicletta [Ciclospazio]GCEMED2012 - Anagrafe della Bicicletta [Ciclospazio]
GCEMED2012 - Anagrafe della Bicicletta [Ciclospazio]
 
Terminology for The Medical Transcriptionist II
Terminology for The Medical Transcriptionist IITerminology for The Medical Transcriptionist II
Terminology for The Medical Transcriptionist II
 
Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 
Easter wreath scripture eggs microsoft
Easter wreath scripture eggs microsoftEaster wreath scripture eggs microsoft
Easter wreath scripture eggs microsoft
 
1cambridge english proficiency_1_for_updated_exam_student_s_b
1cambridge english proficiency_1_for_updated_exam_student_s_b1cambridge english proficiency_1_for_updated_exam_student_s_b
1cambridge english proficiency_1_for_updated_exam_student_s_b
 
Tutorías virtuales
Tutorías virtualesTutorías virtuales
Tutorías virtuales
 
л1ст уя 2012
л1ст уя 2012л1ст уя 2012
л1ст уя 2012
 
Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 
Learn Graphology, the Art of Handwriting Reading
Learn Graphology, the Art of Handwriting ReadingLearn Graphology, the Art of Handwriting Reading
Learn Graphology, the Art of Handwriting Reading
 
データベース技術 14(Database 14)
データベース技術 14(Database 14)データベース技術 14(Database 14)
データベース技術 14(Database 14)
 
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
 

More from Yuka Obu

企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために
Yuka Obu
 

More from Yuka Obu (17)

データベース技術 13(Database 13)
データベース技術 13(Database 13)データベース技術 13(Database 13)
データベース技術 13(Database 13)
 
データベース技術 12(Database 12)
データベース技術 12(Database 12)データベース技術 12(Database 12)
データベース技術 12(Database 12)
 
データベース技術 11(Database 11)
データベース技術  11(Database 11)データベース技術  11(Database 11)
データベース技術 11(Database 11)
 
データベース技術 10(Database 10)
データベース技術 10(Database 10)データベース技術 10(Database 10)
データベース技術 10(Database 10)
 
データベース技術 9(Database 9)
データベース技術 9(Database 9)データベース技術 9(Database 9)
データベース技術 9(Database 9)
 
データベース技術 8(Database_8)
データベース技術 8(Database_8)データベース技術 8(Database_8)
データベース技術 8(Database_8)
 
データベース技術 7(Database 7)
データベース技術 7(Database 7)データベース技術 7(Database 7)
データベース技術 7(Database 7)
 
データベース技術 6(Database_6)
データベース技術 6(Database_6)データベース技術 6(Database_6)
データベース技術 6(Database_6)
 
データベース技術 3(Database_3)
データベース技術 3(Database_3)データベース技術 3(Database_3)
データベース技術 3(Database_3)
 
データベース技術 2(Database_2)
データベース技術 2(Database_2)データベース技術 2(Database_2)
データベース技術 2(Database_2)
 
データベース技術 1(Database_1)
データベース技術 1(Database_1)データベース技術 1(Database_1)
データベース技術 1(Database_1)
 
ソーシャルメディアワークショップ1
ソーシャルメディアワークショップ1ソーシャルメディアワークショップ1
ソーシャルメディアワークショップ1
 
企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために
 
Sns 2
Sns 2Sns 2
Sns 2
 
Twitter in Hitachiohta 3
Twitter in Hitachiohta 3Twitter in Hitachiohta 3
Twitter in Hitachiohta 3
 
Twitter in Hitachiohta 2
Twitter in Hitachiohta 2Twitter in Hitachiohta 2
Twitter in Hitachiohta 2
 
Twitter in Hitachiohta 1
Twitter in Hitachiohta 1Twitter in Hitachiohta 1
Twitter in Hitachiohta 1
 

データベース技術 5(Database_5)