Upload
yuka-obu
View
313
Download
0
Embed Size (px)
Citation preview
データベースの設計について•データベース設計はシステム設計の一部
業務の分析
要件定義
基本設計
論理設計
詳細設計
今の業務はどうなっているのか
何をしたいのか
どんなシステムにすべきか
どのように実現するか
方法を明確にする
データベース設計はこの段階に含まれるデータベースの設計=データベースの構造を設計する
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
データの型や長さを決める(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の基礎知識(2)•SQL文は最後に「;」が入力されるまでがひとつのSQL文として扱われる
•「;」の後にEnterキーを押すことで実行される
•長いSQL文の場合は、途中でEnterキーを押してもOK(「;」が入力されるまでが1文)
17
SQLiteの基礎知識(4)•識別子
-テーブル名、カラム名、データベース名
•SQLiteのキーワード- Database、Table、Create、Selectなどなど
•SQLiteのキーワードは識別子に使用しない
19
データベースの作成(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