30
データベース技術 6回(2015.11.31

データベース技術 6(Database_6)

Embed Size (px)

Citation preview

データベース技術第6回(2015.11.3)

1

データベースの設計について•データベース設計はシステム設計の一部

業務の分析

要件定義

基本設計

論理設計

詳細設計

今の業務はどうなっているのか

何をしたいのか

どんなシステムにすべきか

どのように実現するか

方法を明確にする

データベース設計はこの段階に含まれるデータベースの設計=データベースの構造を設計する

2

スキーマ•データベースの構造をスキーマと呼ぶ

•スキーマは3つの構造に分類される-概念スキーマ

• 論理的な構造を定義する• ER図の作成、テーブルの設計、論理設計、概念設計

-外部スキーマ• ユーザから見たデータベースを定義する• ビューの設計

-内部スキーマ• コンピュータ内部から見たデータベースを定義する• 物理的な部分を定義する• 容量、メモリ設計、物理設計、物理配置設計、インデックス設計

3

概念スキーマ•データの論理的な構造を設計する段階

-現実世界をいかにコンピュータに置き換えるか考える-情報の流れを分析し、データベース化する部分を決定

•表を作って正規化する

•ER図を書く

•各テーブルのデータの型や長さを決定する

4

表を作って正規化する•例:果物の輸出に関するデータ

報告書コード 日付 輸出先コード

1101 3/5 121102 3/7 231103 3/8 25

輸出先コード 輸出先名

12 アメリカ23 中国25 フランス

「売上」表 「輸出先」表

商品コード 商品名 単価101 メロン ¥800102 いちご ¥150103 りんご ¥120104 レモン ¥200

報告書コード 商品コード 個数1101 101 1,1001101 102 3001102 103 1,7001103 104 500

「商品」表「売上明細」表

5

ER図を書く

商品コード商品名単価

輸出先コード輸出先名

報告書コード日付輸出先コード

「商品」表

「輸出先」表「売上」表

1

1*

報告書コード商品コード個数

「売上明細」表

1*

6

データの型や長さを決める(1)

「輸出先」表

「売上」表フィールド名 データ型 長さ 制約報告書コード 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を明示している。

7

データの型や長さを決める(2)

「商品」表フィールド名 データ型 長さ 制約商品コード 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などを主キーとして設けることもある。

8

外部スキーマ•ユーザから見やすいデータベースを設計する

-概念スキーマで設計された表は効率の良い形だが、 ユーザにはわかり難い

-外部スキーマではユーザが扱いやすい「見える」表(ビュー View)を定義する

日付 輸出先コード 商品コード 個数3/5 12 101 1,1003/6 25 102 300

日付 輸出先名 商品名 個数3/5 アメリカ メロン 1,1003/6 フランス いちご 300

わかり難い

わかりやすい9

内部スキーマ•コンピュータ内部の物理的な設計を行う

-ディスクのどこに作成するか?

-データベースのファイル名は?

-データサイズはどのくらいか?

-バックアップメディアは何を使うか?

•ハード的な仕様の決定は重要-データベースの処理速度に大きな影響を持つ場合がある

10

データベースの設計について•データベース設計はシステム設計の一部

業務の分析

要件定義

基本設計

論理設計

詳細設計

今の業務はどうなっているのか

何をしたいのか

どんなシステムにすべきか

どのように実現するか

方法を明確にする

データベース設計はこの段階に含まれるデータベースの設計・概念スキーマ ←今ここ・外部スキーマ・内部スキーマ

11

Work:概念スキーマを作成する•各自でテーマを決定する•データベースの概念スキーマを定義しましょう

-表を作って正規化する- ER図を書く-各テーブルのデータの型や長さを決定する

•manabaにコメントを記載しました

•コメントを確認し修正をしてみましょう

•修正後のファイルを提出

先週の

12

データベースを構築する(1)•DBMS(Database Management System)を使う

- SQLによるアクセス機能• SQLにより条件指定、ソートなど高度な検索が可能

-高速な検索機能• インデックスを持つことにより、高速に検索可能

-排他制御機能• 行単位、ファイル単位のロック機能により、排他制御が可能

-トランザクション管理機能• トランザクション単位の更新や復帰が可能

-ログ管理機能• アクセスログにより復旧が可能

13

データベースを構築する(2)•代表的なRDMBS

- Oracle Database(Oracle社)

- SQL Server(Microsoft社)

- PostgreSQL(オープンソース)

- Microsoft Access(Microsoft社)

- MySQL(オープンソース)

- SQLite(パブリックドメイン)

14

SQLの機能•SQL:リレーショナルデータベースを操作するためのデータベース言語-データ定義言語DDL(Data Definition Language)

• 表を作成する、変更する、削除する

-データ操作言語DML(Data Management Language)• データを入力する、抽出する、削除する、変更する

-データ制御言語DCL(Data Control Language)• ユーザのアクセスなどを管理する

15

SQLiteの基礎知識(1)•コマンドラインツールを使って操作する

•起動方法:SQLiteアイコンをクリック

※大学の環境とは見た目が違います

16

SQLiteの基礎知識(2)•SQL文は最後に「;」が入力されるまでがひとつのSQL文として扱われる

•「;」の後にEnterキーを押すことで実行される

•長いSQL文の場合は、途中でEnterキーを押してもOK(「;」が入力されるまでが1文)

17

SQLiteの基礎知識(3)•長いSQL文の場合は、途中でEnterキーを押してもOK(「;」が入力されるまでが1文)

18

SQLiteの基礎知識(4)•識別子

-テーブル名、カラム名、データベース名

•SQLiteのキーワード- Database、Table、Create、Selectなどなど

•SQLiteのキーワードは識別子に使用しない

19

SQLiteを操作してみよう•SQLiteを起動する

•接続中のデータベースを確認する

•接続していたデータベースから切断する

•データベースを作成する

•テーブルを作成する

20

接続中のデータベースの確認•「.database」コマンドを実行する

-「.database」と入力しEnterキーを押す

データベース名

ファイル名データベースの内容を記録する

21

接続中のデータベースから切断•「.exit」コマンドを実行する

-「.exit」と入力しEnterキーを押す

22

データベースの作成(1)•コマンドプロンプト上で下記のように入力する

- sqlite3 データベース名

-例:sqlite3 shop.sqlite3

23

データベースの作成(2)•コマンドで指定する「データベース名」

-「データベース名」で指定したデータベースが存在しなければ自動で新規作成され、接続する

- SQLiteが設置してあるディレクトリ(フォルダ)に「データベース名」で指定したファイルが作成さる(環境により変わることがあります)

24

データベースの作成(3)•データベースのファイルの設置場所

-自分の指定した場所にデータベースのファイルを設置したい場合は、パス付きで指定する

-例:sqlite3 d:\sqlite\db\sample.sqlite3

•データベース名は任意の文字列でOK- myfriend- myfriend.db- myfriend.sqlite- myfriend.sqlite3-推奨:何のファイルかわかるように拡張子をつける

25

テーブルの作成(1)•基本構文

- CREATE TABLE テーブル名(カラム名1, カラム名2, ...);

•テーブルとカラム-名前には任意の名前を指定できる

-テーブルには少なくとも1つのカラムが必要

•練習:下記を実行してみましょう- create table countries(id, name);

26

テーブルの作成(2)•カラムにデータ型を指定してテーブルを作成

- CREATE TABLE テーブル名(カラム名1 データ型, カラム名2 データ型, ...);

•練習:下記を実行してみましょう- create table items(id integer, name text);

27

SQLiteのデータ型•SQLiteでは、カラムのデータ型指定は必須ではない

•SQLiteで指定できるデータ型型 説明

TEXT テキストINTEGER 符号付整数

REAL 浮動小数点数NONE 入力データをそのまま格納

NUMERIC 上記以外

28

テーブルの確認•テーブル一覧を表示する

-「.tables」コマンドを実行

•テーブルの構造を確認-「.schema」コマンドを実行

-テーブル作成時のCreate文が表示される29

参考文献•SQLite入門 http://www.dbonline.jp/sqlite/

30