2K Views
January 12, 22
スライド概要
リレーショナルデータベースの基本(スライド資料とプログラム例)
https://www.kkaneko.jp/de/ds/index.html
ds-1. データベースとは,データベースシステムとは,情報とデータ
ds-2. SQL,属性のデータ型,テーブル定義,問い合わせ(クエリ)
ds-3. データベース設計、異状、正規化
ds-4. 問い合わせ(クエリ)
ds-5. 集計・集約
ds-6. 並べ替え(ソート)
ds-7. 結合
ds-8. データベースの異状,分解と結合
ds-9. 主キー,参照整合性制約,従属
ds-10. 中間まとめ,データベースの応用,データベースの種類
ds-11. SQL のIN,副問い合わせ
ds-12. データベースの AND,OR,NOT
ds-13. データベース操作,トランザクション,リカバリ,ロック,同時実行制御
ds-14. 従属,正規形,正規化
ds-15. さまざまなデータベース
YouTube 再生リスト「リレーショナルデータベースの基本」
https://youtube.com/playlist?list=PLwoDcGBEg9WGKPP6dExr8DcUf9nV2kYGD
金子邦彦研究室ホームページ:
https://www.kkaneko.jp/index.html
金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko
2. SQL,属性のデータ型,テーブル 定義,問い合わせ(クエリ) URL: https://www.kkaneko.jp/de/ds/index.html 金子邦彦 謝辞:この資料では「いらすとや」のイラストを使用しています 1
① キャリア面での成長 ② データベースを用いた意思決定のスキル向上 ③ 自己成長と問題解決能力の向上 現代のデジタル化されたビジネス環境において価値があり、 個人および組織の成功に寄与 2
アウトライン 1. データベースシステムの基本概念 2. リレーショナルデータベースの特 性 3. テーブルの構造 4. 問い合わせ(クエリ)の役割 5. SQL 6. SQL によるテーブル定義 7. SQL による問い合わせ(クエリ) 3
2-1. データベースシステムの 基本概念 4
データベースとは データベースは、特定のテーマや目的に従って収集され た大量のデータ 取引 記入 データ収集 データベース 計測 撮影 データ保存 銀行、商店、交通機関、電話会社などさまざま 5
データベースシステムとは データベースシステムは,データベースを扱う IT のシステム データベースシステム = データベース(データの集まり) + データベース管理システム(ソフトウエア) 【主要目的】 大量のデータを安全かつ効率的に保存、管理、検索、共有す ることで、迅速な業務実行と正確な意思決定が可能になる。 6
2-2. リレーショナルデータ ベースの特性 7
リレーショナルデータベースと他のデータベース の違い リレーショナルデータベース • データをテーブルと呼ばれる表形式で保存 (この形式は、エクセルのワークシートに似ている) • SQL 言語を使って、データの管理と検索が行える • テーブル形式でデータを整理することで、データの構造化、 整合性、永続性が保証される。 他のデータベース • 「NoSQL」などの別の種類のデータベースでは、データ形 式がより柔軟である。 • データ形式は柔軟であるが、データの構造化と整合性に関 する能力はリレーショナルデータベースより制限される。 8
リレーショナルデータベースの仕組み • データをテーブルと呼ばれる表形式で保存 • テーブル間は関連で結ばれる。複雑な構造を持ったデータ を効率的に管理すること可能に。 関連 9
リレーショナルデータベースが普及している理由 • 使いやすい • 信頼性が高い • データをテーブルと呼ばれる表形式で保存(エクセルに似 ていてなじみやすい) • データの管理と検索が、SQL 言語を使って、簡単に行える 10
2-3. テーブルの構造 11
テーブルと属性 テーブル ID テーブル名:商品 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 「ID」と「商品名」と「単 価」の属性 12
テーブルの属性(列)と行 属性(列) • データの種類に対応する • ID、商品名、単価など 行 • 属性に基づいた具体的な データの集まり • 「1 みかん 50」など 13
属性のデータ型 ID 1 2 3 商品名 みかん りんご メロン 整数で オートナンバー INTEGER AUTOINCREMENT 短いテキスト CHAR 属性名 単価 50 100 500 テーブル の本体 整数 INTEGER ← SQL のキーワード それぞれの属性のデータ型 ※オートナンバーは,自動で 1,2,3 のよ うに通し番号が付くもの 14
属性のデータ型 Access の主なデータ 型 SQL のキーワー ド 短いテキスト 長いテキスト 数値 NULL CHAR TEXT INTEGER, REAL 日付/時刻 Yes/No DATETIME BIT, BOOL 空値 文字列 文字列 整数や浮動小数 点数 日付や時刻など ブール値 ※ 整数は INTEGER, 浮動小数点数(小数付きの 数)は REAL ※ 短いテキストは半角 255文字分までが目安 それ以上になる可能性があるときは長いテキスト 15
テーブルのセル セル • 属性と行が交差したところ に位置する • セルには、1つの値だけが 入る • セルに入る値は、属性の データ型に応じたものでな ければならない 16
テーブルの性質 ① テーブル名:福山駅行き 時 8 8 8 12 17 17 リレーショナルデータベースで 扱えないテーブルの例 分 0 20 45 30 20 40 時 8 12 17 □ 分 0, 20, 45 30 20, 40 1つのセルに複数の値を 入れることはない ☑ リレーショナルデータベースでは、 1つのセルに1つの値 17
テーブルの性質 ② テーブル名:福山駅行き 時 8 8 8 12 17 17 リレーショナルデータベースで 扱えないテーブルの例 分 時 0 20 45 30 20 40 ☑ リレーショナルデータベースでは、 □ 1つのセルに1つの値 分 8 12 17 0 20 45 30 20 40 マルチカラムにはしない 18
まとめ 属性(列) • データの種類を表す(例:ID、商品 名)。 • 各属性は特定のデータ型を持つ (例:整数)。 行: • 属性に基づいてデータを格納。例: 「1, みかん, 50」。 セル: • 属性と行が交差する点に位置する。 一つのセルには一つの値のみ。 19
2-4. 問い合わせ(クエリ)の 役割 20
問い合わせ(クエリ)とは何か • 問い合わせ(クエリ)は、データベースから必要なデータ を検索、加工するための指令のこと。 • リレーショナルデータベースシステムにおいては、問い合 わせ(クエリ)は、 SQL を使用して実行できる。 21
問い合わせの目的と用途 1.データの検索: 何らかの条件に合致するデータを見つけ出 す 2.データの加工: 不要なデータは表示しない、集計・集約や 計算、並べ替え(ソート)、複数テーブルの結合など 3.データの挿入: データベースに新規データを追加 4.データの更新: すでに存在するデータの変更 5.データの削除: 不要なデータの除去 22
問い合わせ(クエリ)の仕組み 問い合わせ(クエリ) の最終結果 問い合わせ (クエリ) データベースシステム 23
問い合わせ(クエリ)の仕組み • 発行: 「問い合わせ」をデータベースシステムに送信。 • 解析・取得: 「問い合わせ」が解析され、必要なデータが データベースから読み込まれる。 • 加工: 計算、集計・集約、並べ替え(ソート)、結合など のさまざまな加工が行われる。 • 返却: 結果を、ユーザーやアプリケーションに送る。 24
問い合わせ(クエリ)の役割まとめ 問い合わせ(クエリ)はデータベースからデータを取得・操 作する指令。リレーショナルデータベースシステムでは、通 常は、SQLを使用。 目的と用途 • 検索: 条件に合ったデータを抽出 • 加工: 集計・集約、並べ替え(ソート)、結合など • 挿入、更新、削除: 新規データの追加、既存データの修正、 不要データの除去。 問い合わせはデータの効率的な検索、加工、管理に不可欠 25
2-5. SQL 26
SQL SQL は、リレーショナルデータベースシステムで、 問い合わせ(クエリ)や、その他、さまざまな機能 を実行できる 人間が SQL を作成し、実行 プログラムの中で SQL の機能を利用 27
SQL の重要性 • 問い合わせ:SQLを使用してデータの検索、加工、挿入、 更新、削除が行える。 • テーブル定義:SQLでデータベースのテーブル構造を定義 することができる。 • 簡潔さ:少量のSQLで複雑なデータ操作が可能。 • 汎用性:多くのリレーショナルデータベースで対応し、業 界標準として広く採用されている。 • 柔軟性:データの並べ替え(ソート)、集計・集約など、 多様な操作が可能。 • 性能:小規模から大規模なデータベースに対応し、高いパ フォーマンスを発揮。 リレーショナルデータベースシステムの主要機能 28
問い合わせ(クエリ)の例 ① データの検索 SQL 結果 元データ 29
問い合わせ(クエリ)の例 ② 集計・集約,並べ替え(ソート) SQL 集計・集約 SQL 並べ替え(ソート) 30
問い合わせ(クエリ)の例 ③ 2つのテーブルの結合 商品 ID 1 2 3 4 商品名 単価 みかん 50 りんご 100 りんご 150 メロン 500 SQL select * from 商品, 購入 購入 名前 ID 1 2 X Y 商品 3 1 結果 31
SQLの実用例 ① SQL コマンドによるデータベースの利用 データ検索、給与が50,000以上の従業員の情報を全て取得 SQL: SELECT * FROM employees WHERE salary > 50000; データ挿入、名前が'John'、年齢が30、給与が55,000の新しい従業員を追加 SQL: INSERT INTO employees (name, age, salary) VALUES ('John', 30, 55000); データ削除、年齢が60より上の従業員のデータを削除 SQL: DELETE FROM employees WHERE age > 60; ② プログラム中の処理の一部を SQL で実行 注文処理、ユーザーIDが1で商品IDが101の商品を2個注文します。 SQL: INSERT INTO orders (user_id, product_id, quantity) VALUES (1, 101, 2); ③ データ分析での SQL の役割 2022年1月1日から2022年1月31日までの売上合計を計算 SQL: SELECT SUM(sales_amount) FROM sales WHERE date BETWEEN '202201-01' AND '2022-01-31'; 32
SQL 活用のビジョン データ管理 • リアルタイム情報: ウェブサービスやアプリケーションでリアルタ イムにデータを参照・更新。 例: オンラインショッピングサイトでの在庫確認 データの自動分析 • 自動化: 定期的なレポート作成、データのクリーニングなどを自動 化。 例: 毎月の売上レポートの自動生成 データの安全性と一貫性 • リレーショナルデータベースシステムのトランザクションの機能 を活用 例: 銀行での送金処理 データの共有 • リレーショナルデータベースを他社と共有 例: 在庫データをサプライヤーと共有。SQLでデータアクセス 33
SQL の機能概要 問い合わせ • select: データの検索・加工する • insert: 新しい行をテーブルに挿入 • update: 条件に一致する行を更新 • delete: 条件に一致する行を削除 • group by: データを条件でグループ化(集計・集約のため) • order by: データを昇順・降順で並べる テーブル定義 • create table: テーブル定義 その他多数の機能 別の回で詳細を説明 34
SQL の未来展望 • AIとの連携 AI が SQL コマンドを自動生成。高度な分析。 • リアルタイム分析 携帯無線通信を活用。リアルタイムでのデータ分析や 共有がより便利に 35
SQL の文法 大文字小文字 • SQLは大文字・小文字を区別しない。 • SELECTとselectは同じ。 改行 • SQL文は途中で改行しても問題ない。 • 改行はコードの可読性を高める。 セミコロン (;) • 一つのSQL文のみの場合、末尾の;は省略可能。 • 2つ以上のSQL文を連ねる場合は、;で文を区切る必要があ る。 36
SQL まとめ SQLの基本機能 • 問い合わせ: select • テーブル定義: create table • 簡潔さ: 多機能であり、短い SQL でもさまざまな機能を使える • 汎用性: 複数のリレーショナルデータベースシステムで使用可能。 実用例 • データを最新に保つための操作: insert, detete など。 • データ分析: 売上、トレンド分析。 活用のビジョン • データ管理: リアルタイムでデータを利用、更新。 • 自動化: レポート生成。 文法の特性 • 大文字小文字: SQL は、大文字、小文字を区別しない • セミコロン: 複数文では必須。 37
2-6. SQL によるテーブル定義 38
データベースの構築手順 ID ID データベース データベース 生成 設計 ※ 最初,デー タベースは空 購入 者 商品 ID 名前 数量 ID 購入 者 「こういうテーブルを使い たい」と設定するだけなの で、テーブルは空 数量 1 X 1 10 2 Y 2 5 ID 名前 単価 テーブル定義 商品 ID 単価 1 みかん 50 2 りんご 100 3 りんご 150 データ追加 39
テーブル定義とデータの追加 ① テーブル定義を行う データベース内でデータをどのように格納するかをデザイン (設計)し、データベースシステムで設定する • テーブル名の指定 • 属性名の指定 • 属性のデータ型の指定: ト」など 例、「数字」、「短いテキス • データの整合性を保つための制約の指定も可能: 「同じ番号は2度現れない」など 例、 ② 続いて、テーブルに実際のデータを追加 テーブル定義で設定した属性、データ型、制約に従ってデー タベースを整備 40
テーブル定義とデータの追加 ① テーブル定義 • テーブル名:商品 • 属性名:ID、商品名、単価 • 属性のデータ型:数値、短いテキスト、数値 • データの整合性を保つための制約:なし ② 続いて、テーブルに実際のデータを追加 商品名 ID 半角の数値 単価 1 みかん 50 2 りんご 100 短いテキスト 半角の数値 41
テーブル定義を行う SQL 文 create table テーブルを定義する。 例 create table テーブル名 (列1 型1, 列2 型2); 42
SQL によるテーブル定義 • テーブル名:商品 • 属性名:ID、商品名、単価 • 属性のデータ型:数値、短いテキスト、数値 • データの整合性を保つための制約:なし ID 商品名 単価 半角の数値 短いテキスト 半角の数値 create table 商品 ( ID autoincrement, 商品名 char, 単価 integer ); SQL文 ※ Access では 「integer autoincrement」と 書かずに「autoincrement」 43
SQL によるテーブル定義 テーブル名:商品 ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 create table 商品 ( ID autoincrement, 商品名 char, 単価 integer ); 区切りの半角カンマ SQL文 ※ Access では 「integer autoincrement」と 書かずに「autoincrement」 44
2-7. SQL による問い合わせ (クエリ) 45
問い合わせ(クエリ)を行う SQL 文 select 問い合わせ(クエリ)のための基本的な命令。 例:select * from テーブル名; where 条件を指定して行を選択する。 例:select * from テーブル名 where 列1 = 値1; 46
SQLの使い方 ID 1 2 3 名前 単価 みかん 50 りんご 100 りんご 150 リレーショナルデータベースシステムに コマンドを送る データ ベース データベース 利用者 結果が返ってくる
問い合わせ(クエリ)のバリエーション ① select * from 商品; ② select 商品名, 単価 from 商品; ③ select 商品名, 単価 from 商品 where 単価 > 80; SQLは簡潔で単純 48
問い合わせ(クエリ)のバリエーション select * from 商品 問い合わせ(クエリ) のコマンド 元のテーブルのまま表示 商品テーブル ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 49
問い合わせ(クエリ)のバリエーション select 商品名, 単価 from 商品 問い合わせ(クエリ) のコマンド 必要な属性を選ぶ(射影) 商品テーブル ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 50
問い合わせ(クエリ)のバリエーション select 商品名, 単価 from 商品 where 単価 > 80; 問い合わせ(クエリ) のコマンド 必要な属性を選び(射影), 行を絞り込む(選択) 商品テーブル ID 商品名 単価 1 みかん 50 2 りんご 100 3 メロン 500 51
SELECT * FROM <テーブル名> 元の単一テーブルをそのまま出力 ID 1 2 3 4 名前 単価 みかん 50 りんご 100 SELECT * FROM 商品; りんご 150 メロン 500 ID 1 2 3 4 名前 単価 みかん 50 りんご 100 りんご 150 メロン 500 52
SELECT <属性名リスト> FROM <テーブル名> 属性を限定する ID 1 2 3 4 名前 単価 みかん 50 りんご 100 りんご 150 メロン 500 SELECT 名前, 単価 FROM 商品; SELECT 名前 FROM 商品; 名前 単価 みかん 50 りんご 100 りんご 150 メロン 500 名前 みかん りんご りんご メロン 53
WHERE 付き 行の選択 ID 1 2 3 4 名前 単価 みかん 50 りんご 100 りんご 150 メロン 500 SELECT 名前, 単価 FROM 商品 WHERE 単価 > 80; 名前 単価 りんご 100 りんご 150 メロン 500 54
全体まとめ① 2-1. データベースシステムの基本概念 • データベースは大量のデータの集まりで、データベースシステムはそれ を扱うITのシステム。 • データベースシステムの主要な目的は、データの安全な管理、効率的な 検索、共有によって業務の迅速化と正確な意思決定を可能にすること。 2-2. リレーショナルデータベースの特性 • テーブル形式でデータを保存し、SQL言語を使用してデータの管理と検 索を行う。 • データは構造化され、整合性と永続性を保証。 • リレーショナルデータベースは使いやすく、信頼性が高いため普及して いる。 2-3. テーブルの構造 • テーブルは属性(列)と行から構成され、属性はデータ型を持つ。 • 属性のデータ型は整数、文字列など。 • セルには、1つの値だけが入る。セルの値は、属性のデータ型に従う。 55
全体まとめ② 2-4. 問い合わせ(クエリ)の役割 • データベースからデータを検索、加工などするための指令 • 主な目的はデータの検索、加工、挿入、更新、削除 2-5. SQL • SQLはリレーショナルデータベースシステムで使用される言語 • 問い合わせ(select)、データ挿入(insert)、データ更新(update)、 データ削除(delete)などがあり、不可欠なもの 2-6. SQLによるテーブル定義 • テーブル名、属性名、属性のデータ型、制約などを指定。 • create table テーブル名 (列1 型1, 列2 型2); のようになる。 2-7. SQLによる問い合わせ • select, from, where により、射影や選択などを行う。 56
① キャリア面での成長 データベース管理およびSQLスキルは、多くの産業や職種で 非常に重要です。データアナリスト、データベース管理者、 ソフトウェアエンジニアなどの職種において、SQLスキルを 持つことはキャリア面での成長につながります。 ② データベースを用いた意思決定のスキル向上 データベースとSQLの理解は、データベースを利用した意思 決定に不可欠です。データを収集、整理、分析し、意思決定 に活かす能力は、リーダーシップ力を強化します。データ分 析を通して、洞察を得ることことは、戦略的な意思決定のス キル向上につながります。 ③ 自己成長と問題解決能力の向上 SQLを学ぶことは、問題解決能力の向上につながります。 SQLを考えるプロセスは、論理的思考を養います。これらス キルの向上で、自己成長が促進されます。また、新しい技術 やツールを学びたいという意欲向上につながります。 現代のデジタル化されたビジネス環境において価値があり、 個人および組織の成功に寄与 57
自習 自習1.データベースシステムの基本概念 • 目標:データベースシステムの基本的な理解を深める • 課題: インターネットや授業の資料を用いて、以下のトピックについて自習し、 自分の言葉でまとめてください。 1. データベースとは何か? 2. データベースシステムの主要な目的は何か? 3. データベースシステムの重要性 ヒント:インターネットなどで調べ、自分自身で要点をまとめるとき、 理解を深めるために、実際の例やアプリケーションも意識して調べてみ てください。 (提出の必要はありません) 58
自習 自習2.リレーショナルデータベースの特性 • 目標:リレーショナルデータベースの特性を理解について理解を深める • 課題: インターネットや授業の資料を用いて、以下のトピックについて自習し、 自分の言葉でまとめてください。 1. リレーショナルデータベースと他のデータベースの違いは何か? 2. リレーショナルデータベースの仕組みについて説明してみてください。 ヒント:リレーショナルデータベースと他のデータベース(例: NoSQL)の違いや、リレーショナルデータベースのテーブル構造に焦点 を当てて学習しましょう。自主的に、好奇心を持って行動することは、 自立力の向上にも大切です。 (提出の必要はありません) 59
自習 自習3.テーブル定義 • 目標: テーブル定義について理解を深める • 課題: ①まず、テーマを決めてください。自分が興味を持てるものを自由に 決めてください。 図書館、学生管理、在庫管理など ②①で決めたテーマには、どのようなデータが必要ですか ③②を考えながら、テーブル定義(テーブル名や属性名)を考察して みてください ヒント:将来の授業で「テーブル定義」の実際にやり方を学んだら、 Access 等を使って、テーブル定義にもチャレンジすることで、自分で考 えたテーブル名や属性名が良さそうか、確認できます。 (提出の必要はありません) 60