14.テーブル定義,一対多の関係,多対多の関係, 外部キー,索引(インデックス),データベース操作
今日学んでもらうこと ◆ 「データベースエンジニア」として活躍できるための大事な知識 1.「何か」と「何か」の関係を記録するのは,どうしたらよいの? (復習)ER図,テーブル定義について,授業中に復習します 2.データベース処理を高速化できる技術 3.データベース操作 のコマンド
14-1 テーブル定義
データベースの構築 データベース操 作、問い合わせ テーブル定義 データベース生成 (データ定義ともいう) ※ 最初,データベースは空 ※ 最初,テーブルは空 データベース生成 ※ 最初,データベースは空 ※ データベースシステムには, たくさんのデータベースを作る ことができる
テーブル定義とは(再掲) リレーショナルデータベースにおいて、 ・テーブル名 ・各フィールドのフィールド名(属性名) ・各フィールドのデータ型 などを定義すること
SQL でのテーブル定義例 テーブル名:学科 ID 学科名 学部名 1 情報 工 2 スマート テーブルの例 ※ 今日、初めて教える大事なこと primary key ・・・ 主キーの指定 SQL でのテーブル定義例 (Access 2013の画面)
create table 学科 ( ID integer, 学科名 char, 学部名 char, primary key(ID) ); SQL での主キーの指定 ◆ primary key ・・・ 主キー ノートページ create table 学科 ( ID integer, 学科名 char, 学部名 char, primary key(ID) ); ※ 他の書き方もあります
主キーは大切 create table 学科 ( ID integer, 学科名 char, 学部名 char, ◆ 主キーは、データ管理のために重要 ◆ SQL の create table を使ってテーブル定義するとき、 定義したいテーブルに、主キーがあるなら、必ず primary key(・・・) を書く create table 学科 ( ID integer, 学科名 char, 学部名 char, primary key(ID) );
14-2 一対多の関係
テーブル定義での注意点 何かと何かの対応関係に、注意する必要あり ◆1対1 日本の結婚制度 ◆1対多 日本の結婚制度 ◆1対多 「小学生」は、1つの「小学校」にしか所属できない。 「小学校」には、たくさんの「小学生」がいる。 ◆多対多 顧客が商品を注文する(1対1でも1対多でもない) ※ いまから説明します
1対多の対応のイメージ ノートページ A小学校 B小学校
ER図での1対多の書き方の例 n 1 小学校 小学生 所属 1対多であることを、ER図の中に書き込むと: ※ この書き方を Peter Chen 記法という ほかの書き方もある
テーブル定義に至るストーリー例 1. 学生名簿のデータベースを新しく作りたいと考えた 2.「学生」と「学科」に関する ER 図を描いた 3. テーブル定義を行った
データの例 学生と学科 学科テーブルは次のよ うに決めた(決定) 学生については ・氏名 ・学生番号 を記録したい ID 学科名 学部名 1 データの例 学生と学科 学科テーブルは次のよ うに決めた(決定) 学生については ・氏名 ・学生番号 を記録したい ID 学科名 学部名 1 情報 工 2 機械 ※ 主キーは ID
ER 図の例 学生と学科 ◆ それぞれの学生は、1つの学科に所属する ◆ 学科には、複数の学生が所属する 1 n 学科 所属 学生 1対多の対応 1 n 学科 所属 学生
データの例 学生と学科 学生テーブル 学科テーブル ID 学科名 学部名 1 情報 工 2 機械 学生番号 氏名 所属 1 XX 2 YY データの例 学生と学科 学生テーブル 学科テーブル ID 学科名 学部名 1 情報 工 2 機械 学生番号 氏名 所属 1 XX 2 YY 3 AA 4 BB ※ 主キーは ID ※ 主キーは学生番号
データの例 学生と学科 学生テーブル 学科テーブル ID 学科名 学部名 1 情報 工 2 機械 学生番号 氏名 所属 1 XX 2 YY データの例 学生と学科 学生テーブル 学科テーブル ID 学科名 学部名 1 情報 工 2 機械 学生番号 氏名 所属 1 XX 2 YY 3 AA 4 BB ※ 主キーは ID ※ 主キーは学生番号 t 1 n 学科 所属 学生
1対多の場合のテーブル定義 実体Xのための テーブル1個 実体Yのための テーブル1個 1 n X Z Y ※ Yは実体 ※ Xは実体 フィールド1つを含める 1 n X Z Y ※ Yは実体 ※ Xは実体 ※ Z は X と Y の間の 関連
14-3 多対多の関係
多対多の対応のイメージ ノートページ りんご Aさん みかん Bさん メロン
ER図での多対多の書き方の例 m n 顧客 商品 購入 多対多であることを、ER図の中に書き込むと: ※ この書き方を Peter Chen 記法という. ほかの書き方もある
データの例 顧客と商品 顧客テーブルは次のよ うに決めた 商品テーブルは次のよ うに決めた ID 顧客名 1 X 2 Y ID 商品名 単価 データの例 顧客と商品 顧客テーブルは次のよ うに決めた 商品テーブルは次のよ うに決めた ID 顧客名 1 X 2 Y ID 商品名 単価 1 りんご 100 2 みかん 50 3 メロン 500 ※ 主キーは ID ※ 主キーは ID
データの例 顧客と商品 顧客テーブル 購入テーブル 商品テーブル ID 商品名 単価 1 りんご 100 2 みかん 50 3 メロン データの例 顧客と商品 顧客テーブル 購入テーブル 商品テーブル ID 商品名 単価 1 りんご 100 2 みかん 50 3 メロン 500 顧客ID 商品ID 1 3 2 ID 顧客名 1 X 2 Y ※ 主キーは ID ※ 主キーは ID n m 顧客 購入 商品
データの例 顧客と商品 顧客テーブル 購入テーブル 商品テーブル ID 商品名 単価 1 りんご 100 2 みかん 50 3 メロン データの例 顧客と商品 顧客テーブル 購入テーブル 商品テーブル ID 商品名 単価 1 りんご 100 2 みかん 50 3 メロン 500 顧客ID 商品ID 1 3 2 ID 顧客名 1 X 2 Y ※ 主キーは ID ※ 主キーは ID n m 顧客 購入 商品
多対多の場合のテーブル定義 実体Xのための テーブル1個 関連Zのための テーブル1個 実体Yのための テーブル1個 n m X Z Y ※ Z は X と Y の間の 関連
ER図とテーブル定義 ◆ ER図に関連の種類を書き込む 1対1 1対多 多対多 ◆ 実体1つにテーブル1つが基本 ◆ 実体1つにテーブル1つが基本 ◆ 1対多対応については、フィールドを1つ追加 ◆ 多対多対応については、テーブル1つを追加 ノートページ
14-4 外部キー
(参考)外部キーの例 学生テーブル 学科テーブル ID 学科名 学部名 1 情報 工 2 スマート 学生番号 氏名 所属 1 XX 2 YY 3 AA 4 BB ※ 主キーは ID ※ 主キーは学生番号 外部キーとは、 他のテーブルの主キーを参照している フィールドのこと t
(参考)外部キーの存在をコンピュータに教えたいときは 学生テーブル 学科テーブル ID 学科名 学部名 1 情報 工 2 スマート 学生番号 氏名 所属 1 XX 2 YY 3 AA 4 BB ※ 主キーは ID ※ 主キーは学生番号 外部キーとは、 他のテーブルの主キーを参照している フィールドのこと t
14-5 索引(インデックス)
インデックス(索引)のイメージ 見出し語 場所 アセンブラ 35 データベース 110 マシンラーニング 169 インデックス(索引) ノートページ 見出し語 場所 アセンブラ 35 データベース 110 マシンラーニング 169 インデックス(索引) データ本体
インデックス(索引)とは インデックス(索引)とは, テーブルの特定の処理を高速にするための仕掛け ノートページ 但し、別の処理が遅くなる
SQL を用いたインデックス(索引)作成例 create index <インデックス名> on テーブル名(フィールド名)
14-6 データベース操作
3種類のデータベース操作 ◆ 新しいレコードの挿入 ◆ 条件に合致するレコードの削除 ◆ 既存のデータの更新
3種類のデータベース操作 操作の種類 SQL 新しいレコードの挿入 INSERT INTO 条件に合致するレコードの削除 ノートページ 操作の種類 SQL 新しいレコードの挿入 INSERT INTO 条件に合致するレコードの削除 DELETE FROM WHERE 既存のデータの更新 UPDATE SET WHERE