はじめに
このプロジェクトでは、主キー、外部キー、一意制約、既定値、チェック制約など、データベース スキーマにさまざまな制約を追加する方法を学びます。このプロジェクトが終了するとき、関係型データベースにおけるデータの整合性ルールの設計と強制方法をより深く理解するようになります。
👀 プレビュー

🎯 タスク
このプロジェクトで学ぶことは以下の通りです。
salgradeテーブルに複合主キーを作成する方法empテーブルのdeptnoフィールドに外部キーを指定する方法empテーブルのenameフィールドに重複がないように一意制約を使用する方法empテーブルのcommフィールドに既定値を設定する方法empテーブルのhiredateフィールドに 2022 年 2 月 28 日以降の採用日が入力されないようにチェック制約を使用する方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- データベース設計におけるデータ整合性制約の重要性を理解する
- MySQL データベースにさまざまな種類の制約を実装する
- データの品質と一貫性を維持するためのベスト プラクティスを適用する
- データベース制約に関連する問題のトラブルシューティングとデバッグを行う
MySQL サーバーを起動してデータベースをインポートする
このステップでは、MySQL サービスを起動して personnel.sql データベースをインポートする方法を学びます。以下の手順に従ってこのステップを完了します。
MySQL を起動する:
sudo /etc/init.d/mysql startpersonnel.sqlデータベースを MySQL にインポートする。ターミナルで以下のコマンドを実行することで行えます:mysql -u root < /home/labex/project/personnel.sql
このコマンドは、root ユーザーを使用して personnel.sql データベースを MySQL にインポートします。
「salgrade」テーブルに複合主キーを追加する
このステップでは、「salgrade」テーブルに複合主キーを追加する方法を学びます。以下の手順に従ってこのステップを完了します。
MySQL ターミナルにログインする:
mysql -uroot「personnel」データベースを使用する:
USE `personnel`;「salgrade」テーブルに複合主キーを追加し、「grade」、「losal」、「hisal」の各フィールドを複合主キーとする:
ALTER TABLE salgrade ADD PRIMARY KEY (grade, losal, hisal);
これにより、「grade」、「losal」、「hisal」の各フィールドを使用して、「salgrade」テーブルに複合主キーが作成されます。
「emp」テーブルに制約を追加する
このステップでは、以下のことを学びます。
- 「emp」テーブルの「deptno」フィールドに外部キーを指定し、「dept」テーブルの「deptno」フィールドを参照する方法。
- 「emp」テーブルの「name」フィールドの重複を防止するために一意制約を使用する方法。
- 既定値制約を使用して、「emp」テーブルの「comm」フィールドの既定値を 100 に設定する方法。
- チェック制約を使用して、「emp」テーブルの「hiredate」フィールドに 2022 年 2 月 28 日以降の採用日が入力されないようにする方法。
以下の手順に従ってこのステップを完了します。
「personnel」データベースを使用する:
USE `personnel`;「emp」テーブルの「deptno」フィールドに外部キーを指定し、「dept」テーブルの「deptno」フィールドを参照する:
ALTER TABLE emp ADD FOREIGN KEY (deptno) REFERENCES dept(deptno);「emp」テーブルの「ename」フィールドの重複を防止するために一意制約を使用する:
ALTER TABLE emp ADD UNIQUE (ename);既定値制約を使用して、「emp」テーブルの「comm」フィールドの既定値を 100 に設定する:
ALTER TABLE emp ALTER COLUMN comm SET DEFAULT 100;チェック制約を使用して、「emp」テーブルの「hiredate」フィールドに 2022 年 2 月 28 日以降の採用日が入力されないようにする:
ALTER TABLE emp ADD CHECK (hiredate <= '2022-02-28');
テーブル構造を表示する
このステップでは、コマンドを使用して salgrade と emp のテーブル構造を表示します。
salgradeテーブルの構造を表示する:desc salgrade;empテーブルの構造を表示する:desc emp;
以下の出力が表示されるはずです。
MariaDB [personnel]> desc salgrade;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| grade | int(4) | NO | PRI | NULL | |
| losal | double(7,2) | NO | PRI | NULL | |
| hisal | double(7,2) | NO | PRI | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.001 sec)
MariaDB [personnel]> desc emp;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| empno | int(4) | NO | PRI | NULL | |
| ename | varchar(20) | YES | UNI | NULL | |
| job | varchar(20) | YES | | NULL | |
| mgr | varchar(20) | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| sal | double(7,2) | YES | | NULL | |
| comm | double(7,2) | YES | | 100.00 | |
| deptno | int(4) | YES | MUL | NULL | |
+----------+-------------+------+-----+---------+-------+
8 rows in set (0.001 sec)
おめでとうございます!このプロジェクトを正常に完了しました。
まとめ
おめでとうございます!このプロジェクトを完了しました。LabEx でさらに多くの実験を行って、スキルを向上させることができます。



