MySQL - 複合キー

こんにちは、データベース愛好家の皆さん!今日は、MySQLの複合キーの世界に一緒に飛び込んでみましょう。プログラミングが初めてであっても心配しないでください。この概念をステップバイステップで案内します。お気に入りの飲み物を片手に、一緒に見ていきましょう!

MySQL - Composite Key

複合キーとは?

本題に入る前に、まず複合キーとは何かを理解しましょう。巨大な図書館を整理するとき、単なる書名だけで UNIQUE に識別できると考えるかもしれません。しかし、同じ書名を持つ二冊の本があったらどうでしょうか?そこで複合キーが役立ちます!

複合キーは、二つ以上の列の組み合わせでテーブルの行を UNIQUE に識別するものです。書名と著者の名前の両方を使うことで、正確な本を特定することができます。

MySQLで複合キーの作成

複合キーが何かを理解したので、次にMySQLでそれを作成する方法を見てみましょう。図書館のテーブルを使ってこの概念を説明します。

ステップ1: 複合キーを持つテーブルの作成

CREATE TABLE library (
book_title VARCHAR(100),
author_name VARCHAR(50),
publish_year INT,
ISBN VARCHAR(13),
PRIMARY KEY (book_title, author_name)
);

この例では、libraryというテーブルを作成しています。複合キーはbook_titleauthor_nameの組み合わせで形成されています。これは、同じ書名や同じ著者を持つ複数の本が存在するかもしれませんが、書名と著者の組み合わせは UNIQUE でなければなりません。

ステップ2: データの挿入

図書館にいくつかの本を追加してみましょう:

INSERT INTO library (book_title, author_name, publish_year, ISBN)
VALUES
('The Great Gatsby', 'F. Scott Fitzgerald', 1925, '9780743273565'),
('To Kill a Mockingbird', 'Harper Lee', 1960, '9780446310789'),
('1984', 'George Orwell', 1949, '9780451524935'),
('Pride and Prejudice', 'Jane Austen', 1813, '9780141439518');

重複のエントリを試してみると:

INSERT INTO library (book_title, author_name, publish_year, ISBN)
VALUES ('The Great Gatsby', 'F. Scott Fitzgerald', 2000, '1234567890123');

MySQLはエラーをスローします。なぜなら、'The Great Gatsby'と'F. Scott Fitzgerald'の組み合わせはすでにテーブルに存在するからです。

MySQLで複合キーの削除

時々、複合キーを削除する必要があるかもしれません。心配しないでください。それほど恐ろしいことではありません。図書館の整理方法を変えるようなものです。

以下のように複合キーを削除します:

ALTER TABLE library
DROP PRIMARY KEY;

このコマンドは、libraryテーブルからプライマリーキー制約を削除します。しかし、注意してください。これにより、行のUNIQUEな識別子がなくなります。重複のエントリが発生する可能性があります。

クライアントプログラムでの複合キーの使用

次に、MySQLクライアントプログラムを使って複合キーをどのように扱うかを見てみましょう。ここではMySQLコマンドラインクライアントを使用しますが、他のクライアントプログラムでも同様の概念が適用されます。

1.まず、MySQLサーバーに接続します:

mysql -u your_username -p

2.データベースを選択します:

USE your_database_name;

3.新しいテーブルを作成し、複合キーを設定します:

CREATE TABLE students (
student_id INT,
course_id INT,
enrollment_date DATE,
grade FLOAT,
PRIMARY KEY (student_id, course_id)
);

この例では、各行が特定の科目に登録している学生を表すstudentsテーブルを作成しています。複合キーはstudent_idcourse_idで形成されています。これにより、学生が同じ科目に二度登録することはできません。

4.データを追加します:

INSERT INTO students (student_id, course_id, enrollment_date, grade)
VALUES
(1, 101, '2023-09-01', 85.5),
(1, 102, '2023-09-01', 92.0),
(2, 101, '2023-09-01', 78.5),
(2, 103, '2023-09-02', 88.0);

重複のエントリを試してみると:

INSERT INTO students (student_id, course_id, enrollment_date, grade)
VALUES (1, 101, '2023-09-15', 90.0);

クライアントプログラムはエラーメッセージを表示します。なぜなら、複合キー制約を违反しているからです。

結論

おめでとうございます!MySQLの複合キーの世界への第一歩を踏み出しました。複合キーはデータのUNIQUE性と整理を保つための強力なツールです。一つの列だけではUNIQUEに識別できない場合に特に便利です。

データベース管理の旅を続ける中で、複合キーの有用性を実感するでしょう。データの整合性を保ち、テーブル間の関係を確立するために特に役立ちます。

引き続き練習を続け、すぐに複合キーの作成と管理をプロのように行えるようになるでしょう!データベースの世界は人生と同様に、時には二つ(またはそれ以上)の組み合わせが一つより良いことがあります。

メソッド 説明
CREATE TABLE ... PRIMARY KEY (column1, column2) 複合キーを持つテーブルを作成
ALTER TABLE ... ADD PRIMARY KEY (column1, column2) 既存のテーブルに複合キーを追加
ALTER TABLE ... DROP PRIMARY KEY テーブルからプライマリーキー(複合キーも含む)を削除
INSERT INTO ... VALUES ... データを追加し、複合キー制約を尊重
SELECT ... WHERE column1 = value1 AND column2 = value2 複合キーを使ってデータをクエリ

ハッピーコーディングを!そして、あなたのデータベースがいつも整理されて効率的であることを祈っています!

Credits: Image by storyset