高校情報Ⅰ データベースの基礎と活用(リレーショナルデータベース・SQL入門)(3か月目第2週)

高校情報Ⅰと実践活用
★本サイトの取り組み方★
まなびの目標🎯を理解し、使われる場面をイメージしましょう。
②最後の確認クイズ💡で、学んだことをしっかりチェックしましょう。

まなびの目標🎯
データベースがなぜ大切で、どのような場面で役立つのかを理解する。
・たくさんの情報を整理するリレーショナルデータベースの仕組みを理解する。
データベースと情報をやり取りする言語SQLの基本(SELECT、FROM、WHERE)を習得する。




1. データベースとは何か?

スマートフォンに入っている連絡先、図書館にある本のリスト、ネットショップの商品一覧など、これらはすべて、たくさんの情報(データ)が集まったものです。
このように多くの情報を使いやすく、効率的に整理し、必要な時にすぐに取り出せるように保管しておくための仕組みが、データベースです。
図書館で特定の本を探す際、本の名前や作者名ですぐに検索できるのは、本の情報がデータベースにきちんと整理されているからです。

(身の回りのデータベースの例:音楽配信サービスの楽曲リスト、オンラインゲームのユーザーデータ、気象庁の観測データなど)

2. なぜデータベースが必要か?

「情報を整理するだけなら、Excelのような表計算ソフトでも十分ではないか」と考える人もいるかもしれません。確かに、少量の情報であれば表計算ソフトも非常に便利です。しかし、扱う情報量が膨大になったり、複数の人が同時に情報を利用したり、そして何よりもデータの正確さや安全性が非常に重要になったりする場面では、ただ情報を記録するだけでは不十分です。。

大量のデータはデータベースに保存され、データベース管理システムDBMS:Database Management System)で効率的かつ安全に管理・運用されています。

DBMSって何?
DBMSとは、データベースを作成し、利用し、そして安全に維持・管理するための専門のソフトウェアのことです。私たちが直接データベースのファイル(データ)を触るのではなく、このDBMSを通してデータベースにアクセスし、様々な操作を行います。DBMSがあるおかげで、私たちは複雑なことを考えなくても、簡単かつ安全にデータベースを利用できるのです。(有名なDBMSには、MySQL、PostgreSQL、Oracle Database、Microsoft SQL Serverなどがあり、この記事でPythonと連携して使うSQLiteも、ファイルベースで手軽に使えるDBMSの一種です。)

DBMSが支える!データベースの重要な特性とメリット
データの独立性 (Independence):
データベースの内部構造(データの保存方法など)が変わっても、利用するプログラムへの影響を最小限に抑える仕組みです。これにより、システムの変更や改良がしやすくなります。
データの一貫性 (Consistency) と 整合性 (Integrity):
データが常に矛盾なく正しい状態(一貫性)で、かつ、決められたルール通りに正確な値(整合性)として保たれることです。DBMSは、データの入力チェックや関連データの自動更新などを通じて、データの信頼性を守ります。
データの機密性 (Confidentiality / Security):
許可された人だけが情報にアクセスでき、不正な閲覧や改ざんからデータを保護することです。DBMSは、IDやパスワードによる利用者確認や、操作権限の管理機能でデータの安全を守ります。
データの可用性 (Availability):
システム障害が発生してもデータが失われず、必要な時にいつでもデータを利用できる状態を保つことです。DBMSは、バックアップや障害からの復旧機能により、安定したデータ利用を支えます。

その他の特徴的な機能
・高速なデータ検索:大量のデータの中からでも、必要な情報を素早く見つけ出せます。
・複数ユーザーによる同時利用:多くの人が同時にアクセスしても、データの矛盾が起きないように管理します。

このようにDBMSが提供する様々な機能によって、データベースは単なる情報の入れ物ではなく、信頼性が高く、効率的にデータを管理・活用するための強力なシステムになっています。現代社会において、DBMSデータベースは情報を支える上で非常に重要な役割を担います。

3. リレーショナルデータベースの基礎

データベースには様々な種類がありますが、現在最も広く利用されているのがリレーショナルデータベース (RDB)と呼ばれるタイプです。この方式では、情報を表(テーブル)の形で整理・管理します。

表計算ソフトのと似た形式ですが、リレーショナルデータベースではより厳密なルールに基づいてデータが構造化され、効率的かつ整合性を保ったデータ管理が可能になります。

3.1 表の構成要素:レコードとフィールド(行と列)

リレーショナルデータベースは、主に以下の要素で構成されます。
(レコード)一件分のデータを表します。例えば、生徒名簿という表であれば、生徒一人ひとりの情報が一行(一レコード)に相当します。
(フィールド または カラム)データの項目を表します。生徒名簿であれば、学籍番号、氏名、クラス、といった項目がそれぞれ一列(一フィールド)に相当します。

以下の部員名簿表の例をご覧ください。

この表では、各行が部員一人の情報(レコード)であり、部員IDや氏名などがデータの項目(フィールド)です。

3.2 データを一意に識別:主キー

表内の多数のデータ(レコード)の中から、特定のレコードを一意に識別するために非常に重要な役割を果たすのが主キー (Primary Key)です。

一意に識別・・・とは、間違いなくこれ一つだけを選ぶことができる!重複がない!ことです💡

主キーは、各レコードを他と重複することなく、ただ一つに特定するための特別なフィールドとして定義されます。これは、スポーツ選手の背番号のように、各選手を区別するための一意な番号に例えることができます。

📢 主キーの主な制約(ルール)
一意性制約 (Unique)主キーの値は、同じ表の中で重複してはいけません(例:同じ学籍番号を持つ生徒は存在しない)。
非NULL制約 (NOT NULL)主キーの値は、必ず設定されている必要があり、空(NULL)であってはいけません。

先の部員名簿表の例では、部員IDが主キーとして適しています。氏名は同姓同名の可能性があるため主キーには向きませんが、部員IDは各部員を一意に識別できます💡

※複数のキーで主キーとなるキーを複合キーと呼びます!例えば、学年+出席番号で”一意に識別できる”場合、など。




4. SQLとは何か?

データベースに情報を格納したり、検索したり、更新したりするためには、データベースと「対話」するための共通言語が必要です。そのための専用言語が、SQL (エスキューエルまたはシークェル) です。

SQLは「Structured Query Language(構造化問い合わせ言語)」の略称で、リレーショナルデータベースを操作するための標準的な言語として広く利用されています。

クエリ (Query)とは、問い合わせ質問といった意味です。SQLを用いることで、データベースに対して「このような情報が欲しい」という要求を伝えることができます。

リレーショナルデータベースのキホン操作:選択・射影・結合

SQLを学ぶ前に、リレーショナルデータベースで情報を取り出すときの基本的な考え方(操作の種類)を3つ知っておくと、SQLの理解がぐっと深まります。
選択 (Selection)
表の中から、特定の条件に合う行(レコード)だけを選び出す操作です。例えば、部員名簿表から2年生の部員だけを取り出すようなイメージです。(SQLでは、主にWHERE句を使ってこの操作を行います。)
射影 (Projection)
表の中から、必要な列(フィールド)だけを選び出す操作です。例えば、部員名簿表から氏名と部活動の列だけを取り出すようなイメージです。(SQLでは、主に SELECT句で取り出す列を指定することでこの操作を行います。)
結合 (Join)
複数の表を、関連する列(例えば共通のIDなど)を使ってつなぎ合わせ、一つの大きな表のようにして情報を取り出す操作です。(SQLでは、主に FROM句で複数のテーブルを指定し、WHERE句や専用のJOIN句で結合条件を指定してこの操作を行います。)

SQLのSELECT文は、これらの選択射影、そして結合の操作を組み合わせて、データベースから目的の情報を柔軟に取り出すことができる強力なツールなのです。

 

5. SQLでデータを検索する

それでは、SQLを使ってデータベースから情報を取り出す方法を具体的に見ていきましょう。
ここでは、先ほどの部員名簿 (club_members)表を例に、SQLの基本操作を学びます。
サンプル表:部員名簿 (club_members)

member_id name grade club_name
101 山田 太郎 2 サッカー部
102 鈴木 花子 1 吹奏楽部
103 佐藤 次郎 2 サッカー部
104 伊藤 さくら 3 美術部
105 高橋 健太 1 サッカー部

5.1 基本の命令:SELECT と FROM

データを取り出す際の基本的なSQL文の形式は以下の通りです。

SELECT 表示したい列名 
FROM 表名;

SELECTの後には取得したいデータの項目(列、フィールド名)をカンマで区切って記述します。表の全ての項目を取得したい場合は、アスタリスク* を使用します。
FROMの後にはどの表からデータを取り出すか(表名)を指定します。SQL文の最後にはセミコロン ; を記述するのが一般的です(環境によっては省略可能な場合もあります)。

例1:部員名簿 (club_members)から氏名(name)と部活動(club_name)の列だけを取り出す

SELECT name, club_name 
FROM club_members;

実行結果イメージ:

name club_name
山田 太郎 サッカー部
鈴木 花子 吹奏楽部
佐藤 次郎 サッカー部
伊藤 さくら 美術部
高橋 健太 サッカー部

 

例2:部員名簿 (club_members)の全ての情報を取り出す

SELECT * 
FROM club_members;

実行結果イメージ: 上記のサンプル表全体が表示

5.2 条件を指定:WHERE句による絞り込み

特定の条件に合致するデータだけを取得したい場合には、WHERE句を使用します。
WHEREの後には絞り込みたい条件式を記述します。

SELECT 表示したい列名
FROM 表名
WHERE 条件式;

例3:部員名簿 (club_members)からサッカー部の部員の情報だけを取り出す

SELECT * 
FROM club_members 
WHERE club_name = 'サッカー部';

💡文字列データを条件として指定する場合は、通常シングルクォーテーション”か、ダブルクオーテーション””で囲みます。)

実行結果イメージ:

部員ID 氏名 学年 部活動
101 山田 太郎 2 サッカー部
103 佐藤 次郎 2 サッカー部
105 高橋 健太 1 サッカー部

 

例4:「部員名簿」から「1年生」で、かつ「サッカー部」の部員の情報を取り出す

複数の条件を組み合わせる場合は、AND(両方の条件を満たす)や OR(どちらかの条件を満たす)といった論理演算子を使用します。

SELECT * 
FROM club_members 
WHERE grade = 1 AND club_name = 'サッカー部';

実行結果イメージ:

部員ID 氏名 学年 部活動
105 高橋 健太 1 サッカー部

このように、SQLを使うことで、必要な情報だけを取り出すことができます。

6. データベースの活用事例

皆さんが日常的に利用しているスマートフォンアプリやインターネットサービス、店舗の販売システムなど、現代社会の様々な場面でデータベースが活用されています。

データベースの主な活用例

  • ソーシャルネットワーキングサービス (SNS):ユーザーアカウント情報、投稿内容、友人関係、メッセージ履歴などを管理。
  • オンラインショッピングサイト:膨大な商品情報、在庫状況、顧客の注文履歴、配送情報などを管理。
  • 金融機関のシステム (ATMなど):口座情報、取引履歴、残高などを正確かつ安全に管理。
  • 図書館の蔵書管理システム:書籍情報、貸出・返却状況、利用者情報などを管理。
  • 教育機関の学籍・成績管理システム:生徒・学生情報、履修科目、成績、出欠状況などを管理。
  • 気象情報サービス:過去の気象データや最新の観測データ、天気予報データなどを蓄積・提供。

データベースは、大量の情報を効率的かつ安全に管理し、私たちの生活を支える重要な役割を担っています。

💡SQLを実際使ってみる、という記事も後日アップ予定です!

7. まとめ

今回は、大量の情報を整理・活用するためのデータベースの基本的な概念と、その中でも広く使われているリレーショナルデータベース、そしてデータベースを操作するための言語SQLについて学習しました。
・データベースは、多くの情報を効率的に、そして安全に管理・利用するための仕組みです。
・リレーショナルデータベースでは、情報を表の形式で整理し、行(レコード)と列(フィールド)を用いてデータを扱います。
・各データ(レコード)を一意に識別するための主キーは非常に重要な概念です。
・データベースから特定の情報を取り出すためには、SQLを使用します。
・SELECT 列名 FROM 表名 WHERE 条件式;が、SQLでデータを検索・抽出する際の基本的な構文です。

データベースとSQLの基礎を理解することは、情報を効果的に活用する上で非常に役立ちます。

8. 確認クイズ

Q1. データベースの主な役割として、最も適切なものはどれですか?

  • コンピュータを動かすための基本的なプログラム
  • インターネットで情報を検索する技術
  • たくさんの情報を整理して、必要な時に取り出しやすくする仕組み

正解!正解!

不正解!不正解!

たくさんの情報を整理して、必要な時に取り出しやすくする仕組み

ヒント:多くのデータを効率よく扱うための「情報の保管庫」のようなものです!

Q2. リレーショナルデータベースの表において、「レコード」とは何を表しますか?

  • 1件のデータのこと(行)
  • データの項目のこと(列)
  • 表全体のこと

正解!正解!

不正解!不正解!

1件のデータのこと(行)

ヒント:例えば、クラス名簿なら生徒一人ひとりの情報がこれにあたります。

Q3. 表の中の「主キー」が持つ最も重要な役割は何ですか?

  • 各レコードを他と区別なくまとめて扱うための番号
  • データの内容を説明するための補足情報
  • 各レコードを一意に識別するための、重複しない特別な項目

正解!正解!

不正解!不正解!

各レコードを一意に識別するための、重複しない特別な項目

ヒント:各データに付けられた、ただ一つの「背番号」のようなものです!

Q4. SQLとは、主に何をするためのものですか?

  • リレーショナルデータベースに指示を出し、データを操作するための言語
  • コンピュータの動作速度を上げるためのプログラム
  • データを新しくウェブページに表示する命令

正解!正解!

不正解!不正解!

リレーショナルデータベースに指示を出し、データを操作するための言語

ヒント:データベースと「対話」するための標準的な言葉です!

Q5. 部員名簿 (club_members)表から氏名 (name)の列を取り出すための正しいSQL文はどれですか?

  • FROM club_members SELECT name;
  • SELECT name WHERE club_members;
  • SELECT name FROM club_members;

正解!正解!

不正解!不正解!

SELECT name FROM club_members;

ヒント:「何を取り出すか(SELECT)」を最初に指定し、「どの表から(FROM)」が続くのが基本形です!

確認クイズは、いかがでしたでしょうか?今回の学習内容が、皆さんの情報活用能力を高める一助となれば幸いです。閲覧いただき、ありがとうございました!

※本記事 教科書該当範囲

教科書名 該当章
新編情報Ⅰ(東京書籍) 4章 37. データベースの活用, 38.さまざまなデータモデル
最新情報I(実教出版) 第5章 2節 データの活用5
高校情報ⅠJavaScript(東京書籍) 第4章 21. 情報システムを支えるデータベース, 22. データベースの仕組み
高校情報ⅠPython(東京書籍) 第4章 23. 個人による安全対策, 24. 安全のための情報技術

本サイトは、教科書をベースに構成しています。使える「情報Ⅰ」を目指し、毎週月曜日に新しい記事を発信予定です。

高校情報Ⅰ 情報セキュリティ(3か月目第1週)
★本サイトの取り組み方★ ①まなびの目標🎯を理解し、使用するケースを学ぶ。②最後の確認クイズ💡でインプットを確認する。まなびの目標🎯・情報を守る3つの基本(機密性・完全性・可用性)を理解しよう・情報を安全にやり取りする仕組みを知ろう・危険か...
高校情報Ⅰ ネットワークとインターネットの仕組み(2か月目第4週)
★本サイトの取り組み方★①まなびの目標🎯を理解し、使用するケースを学ぶ。②最後の確認クイズ💡でインプットを確認する。🎯 まなびの目標・ネットワークとインターネットの基本的な考え方を理解しよう・サーバとクライアントの役割を説明できるようになろ...

本記事に対し、お気づきの点ございましたらお問い合わせよりご連絡頂けますと幸いです。




コメント

タイトルとURLをコピーしました