Конструирование и реализация ограничений базы данных

MySQLBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь добавлять различные ограничения в схему базы данных, включая первичные ключи, внешние ключи, уникальные ограничения, значения по умолчанию и ограничения проверки. В конце этого проекта у вас будет лучше понимание того, как проектировать и обеспечивать соблюдение правил целостности данных в реляционной базе данных.

👀 Предварительный просмотр

Предварительный просмотр ограничений схемы базы данных

🎯 Задачи

В этом проекте вы научитесь:

  • Как создать составной первичный ключ на таблице salgrade
  • Как указать внешний ключ на поле deptno в таблице emp
  • Как использовать уникальное ограничение для предотвращения дублирования в поле ename в таблице emp
  • Как установить значение по умолчанию для поля comm в таблице emp
  • Как использовать ограничение проверки для предотвращения ввода дат приема на работу позже 28 февраля 2022 года в поле hiredate в таблице emp

🏆 Достижения

После завершения этого проекта вы сможете:

  • Разобраться в важности ограничений целостности данных в проектировании базы данных
  • Реализовать различные типы ограничений в базе данных MySQL
  • Применить наилучшие практики для поддержания качества и согласованности данных
  • Отлаживать и устранять проблемы, связанные с ограничениями базы данных

Запустите сервер MySQL и импортируйте базу данных

В этом шаге вы научитесь запускать службу MySQL и импортировать базу данных personnel.sql. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Запустите MySQL:

    sudo /etc/init.d/mysql start
    
  2. Импортируйте базу данных personnel.sql в MySQL. Вы можете сделать это, выполнив следующую команду в терминале:

    mysql -u root < /home/labex/project/personnel.sql
    

Эта команда импортирует базу данных personnel.sql в MySQL с использованием пользователя root.

Добавьте составной первичный ключ в таблицу ‘salgrade’

В этом шаге вы научитесь добавлять составной первичный ключ в таблицу salgrade. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Войдите в терминал MySQL:

    mysql -uroot
    
  2. Используйте базу данных personnel:

    USE `personnel`;
    
  3. Добавьте составной первичный ключ в таблицу salgrade, используя поля grade, losal и hisal в качестве составного первичного ключа:

    ALTER TABLE salgrade
    ADD PRIMARY KEY (grade, losal, hisal);
    

Это создаст составной первичный ключ на таблице salgrade, используя поля grade, losal и hisal.

Добавьте ограничения в таблицу ‘emp’

В этом шаге вы научитесь:

  • Как указать внешний ключ на поле 'deptno' в таблице 'emp', которое ссылается на поле 'deptno' в таблице 'dept'.
  • Как использовать уникальные ограничения для предотвращения дублирования поля 'name' в таблице 'emp'.
  • Как использовать ограничение значения по умолчанию для установки значения по умолчанию поля 'comm' в таблице 'emp' равным 100.
  • Как предотвратить ввод даты приема на работу после 28 февраля 2022 года в поле 'hiredate' таблицы 'emp' с использованием ограничения проверки.

Следуйте шагам ниже, чтобы выполнить этот шаг.

  1. Используйте базу данных personnel:

    USE `personnel`;
    
  2. Укажите внешний ключ на поле deptno в таблице emp, ссылаясь на поле deptno в таблице dept:

    ALTER TABLE emp
    ADD FOREIGN KEY (deptno) REFERENCES dept(deptno);
    
  3. Используйте уникальное ограничение для предотвращения дублирования в поле ename в таблице emp:

    ALTER TABLE emp
    ADD UNIQUE (ename);
    
  4. Используйте ограничение значения по умолчанию для установки значения по умолчанию поля comm в таблице emp равным 100:

    ALTER TABLE emp
    ALTER COLUMN comm SET DEFAULT 100;
    
  5. Используйте ограничение проверки для предотвращения ввода дат приема на работу позже 28 февраля 2022 года в поле hiredate в таблице emp:

    ALTER TABLE emp
    ADD CHECK (hiredate <= '2022-02-28');
    

Просмотреть структуру таблицы

В этом шаге вы будете использовать команды для отображения структуры таблиц salgrade и emp:

  1. Показать структуру таблицы salgrade:

    desc salgrade;
    
  2. Показать структуру таблицы 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, чтобы улучшить свои навыки.

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться