データベース管理システム(DBMS)- 関連データモデル
こんにちは、データベース愛好家の皆さん!今日は、関連データモデルの世界に興味深く飛び込んでみましょう。あなたの近所の親切なコンピュータ教師として、私はデータベース管理システム(DBMS)のこの基本概念をガイドします。プログラミングが初めての方でも心配しないでください。基本から始めて、少しずつ進めていきます。コーヒーを片手に、さあ、潜り込んでみましょう!
概念
関連データモデルとは?
巨大な図書館を整理するとしましょう。あなたには本、著者、ジャンル、出版社があります。これらの情報を効率的に追跡するにはどうしたらいいでしょうか?ここで関連データモデルが役立ちます!
関連データモデルは、データベース内でデータを構造化する方法で、情報を表(関係とも呼びます)に整理し、行と列で構成されています。これは、相互に接続されたシリーズのスプレッドシートを作成するようなものです。
以下に例で説明します:
CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(100),
AuthorID INT,
GenreID INT,
PublisherID INT
);
CREATE TABLE Authors (
AuthorID INT PRIMARY KEY,
Name VARCHAR(50),
BirthDate DATE
);
この例では、2つの表:BooksとAuthorsを作成しています。各表には、異なる属性を説明する列(フィールド)があります。BookID
とAuthorID
は、それぞれの表の各レコードのユニークな識別子です。
関連モデルの主要なコンポーネント
-
表(関係):データを保持する主要な構造です。図書館の例では、BooksとAuthorsが表です。
-
属性(列):表のエンティティのプロパティを表現します。例えば、TitleとNameは属性です。
-
タプル(行):表の各行は、エンティティの単一のレコードまたはインスタンスを表現します。
-
ドメイン:属性の許容される値の集合です。例えば、BookIDのドメインは正の整数かもしれません。
-
キー:レコードをユニークに識別し、表間の関係を確立するための特別な属性です。
キーの種類
キーについて詳しく見ていきましょう:
キー種類 | 説明 | 例 |
---|---|---|
プライマリキー | 表の各レコードをユニークに識別 | Books表のBookID |
外部キー | 他の表のプライマリキーを参照 | Books表のAuthorID |
候補キー | プライマリキーとして使用可能なキー | ISBNの本 |
複合キー | 複数の列で構成されるキー | (CourseID, StudentID)の授業登録表 |
関係
関連モデルの最も強力な機能の一つは、表間の関係を確立する能力です。主に3つの種類があります:
- 1対1(1:1):Table Aの各レコードがTable Bの1レコードに関連付けられます。
例:
CREATE TABLE Passport (
PassportID INT PRIMARY KEY,
PassportNumber VARCHAR(20),
ExpiryDate DATE,
CitizenID INT UNIQUE,
FOREIGN KEY (CitizenID) REFERENCES Citizens(CitizenID)
);
- 1対多(1:N):Table Aの1レコードがTable Bの複数のレコードに関連付けられます。
例:
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
- 多対多(M:N):Table Aの複数のレコードがTable Bの複数のレコードに関連付けられます。
例:
CREATE TABLE StudentCourses (
StudentID INT,
CourseID INT,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
制約
さて、制約について話しましょう。データの整合性と一貫性を保つための規則です。これらは、本を適切に分類し、棚に並べる図書館司書のようなものです。
制約の種類
制約種類 | 説明 | 例 |
---|---|---|
NOT NULL | 列がNULL値を持つことができないようにします | Name VARCHAR(50) NOT NULL |
UNIQUE | 列のすべての値が異なるようにします | Email VARCHAR(100) UNIQUE |
プライマリキー | 表の各レコードをユニークに識別 | StudentID INT PRIMARY KEY |
外部キー | 表間の参照整合性を確保します | FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID) |
CHECK | 列のすべての値が特定の条件を満たすようにします | CHECK (Age >= 18) |
DEFAULT | 列にデフォルト値を設定します | Balance DECIMAL(10,2) DEFAULT 0.00 |
以下に制約を実行する例を示します:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Email VARCHAR(100) UNIQUE,
Age INT CHECK (Age >= 18),
EnrollmentDate DATE DEFAULT CURRENT_DATE,
DepartmentID INT,
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);
この例では:
-
StudentID
はプライマリキーです。 -
Name
はNULLにすることができません。 -
Email
は各学生ごとにユニークです。 -
Age
は18歳以上である必要があります。 -
EnrollmentDate
は指定しない場合、当前日付が設定されます。 -
DepartmentID
はDepartments表を参照する外部キーです。
これらの制約は、データの整合性と一貫性をデータベース全体に保つ助けになります。図書館の規則のように、本を適切に分類し、ユニークに識別し、正しい著者や出版社にリンクさせるものです。
関連データモデルの導入が終わり、あなたがこのデータ管理アプローチの強力で組織的な一面を理解し始めていることを願っています。データベースの学習は旅です。すべてがすぐに理解できない場合でも心配しないでください。テーブルの作成、関係の確立、制約の設定を練習してください。間もなく、プロのように効率的で強固なデータベース構造を設計できるようになるでしょう!
次のレッスンでは、SQLを使用してこれらの関連構造をクエリする方法を深く掘り下げます。それまでに、データモデリングを楽しんでください!
Credits: Image by storyset