Введение
В этом испытании вам предстоит спроектировать и создать таблицу employee_contacts в PostgreSQL для хранения контактных данных сотрудников. Важной задачей является обеспечение целостности данных путем выбора правильных типов данных и установки необходимых ограничений. Работа будет проходить в подготовленной среде, где уже имеется таблица employees.
Ваша задача заключается в подключении к базе данных PostgreSQL от имени пользователя postgres с помощью утилиты psql и выполнении SQL-команд для создания таблицы employee_contacts. Таблица должна содержать столбцы contact_id (первичный ключ с автоинкрементом), employee_id (внешний ключ, ссылающийся на таблицу employees), phone_number (уникальное значение) и email (обязательное поле, не допускающее пустых значений).
Создание таблицы сотрудников
Спроектируйте таблицу для хранения контактных данных сотрудников, обеспечив надежность данных с помощью корректных типов и ограничений.
Таблица employees уже создана для вас. Если вы её не обнаружили, вы можете создать её самостоятельно, используя следующую команду:
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL
);
Задачи
- Создайте таблицу с именем
employee_contactsв PostgreSQL. Таблица должна включать столбцы:contact_id(первичный ключ),employee_id(внешний ключ, ссылающийся на таблицуemployees),phone_number(уникальный) иemail(не может быть NULL). - Убедитесь, что столбец
employee_idкорректно ссылается на столбецemployee_idв таблицеemployees.
Требования
- Столбец
contact_idдолжен быть первичным ключом с автоматическим приращением (auto-incrementing). - Столбец
phone_numberдолжен содержать только уникальные значения. - Столбец
emailне должен допускать значенийNULL. - Столбец
employee_idдолжен быть внешним ключом (foreign key), ссылающимся на таблицуemployees. - Выполните SQL-команды через интерфейс
psql.
Примеры
Таблицы employees и employee_contacts должны иметь следующую структуру:

Table "public.employees"
Column | Type | Collation | Nullable | Default
-------------+-----------------------+-----------+----------+------------------------------------------------
employee_id | integer | | not null | nextval('employees_employee_id_seq'::regclass)
first_name | character varying(50) | | |
last_name | character varying(50) | | |
Indexes:
"employees_pkey" PRIMARY KEY, btree (employee_id)
Referenced by:
TABLE "employee_contacts" CONSTRAINT "employee_contacts_employee_id_fkey" FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
Table "public.employee_contacts"
Column | Type | Collation | Nullable | Default
----------------+------------------------+-----------+----------+--------------------------------------------------
contact_id | integer | | not null | nextval('employee_contacts_contact_id_seq'::regclass)
employee_id | integer | | |
phone_number | character varying(20) | | |
email | character varying(100) | | not null |
Indexes:
"employee_contacts_pkey" PRIMARY KEY, btree (contact_id)
"employee_contacts_phone_number_key" UNIQUE CONSTRAINT, btree (phone_number)
Foreign-key constraints:
"employee_contacts_employee_id_fkey" FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
Подсказки
- Используйте оператор
CREATE TABLEдля создания таблицы. - Используйте тип данных
SERIALдля столбцаcontact_id, чтобы автоматически генерировать уникальные целочисленные значения. - Используйте ограничение
PRIMARY KEYдля определения первичного ключа. - Используйте ограничение
UNIQUE, чтобы гарантировать уникальность данных в столбцеphone_number. - Используйте ограничение
NOT NULL, чтобы запретить пустые значения в столбцеemail. - Используйте ограничение
FOREIGN KEYдля установления связи между столбцомemployee_idв таблицеemployee_contactsи столбцомemployee_idв таблицеemployees. - Не забудьте подключиться к базе данных PostgreSQL с помощью команды
sudo -u postgres psqlперед выполнением SQL-запросов.
Резюме
В этом испытании вы научились создавать таблицу PostgreSQL под названием employee_contacts в заданной среде. Процесс включал проектирование структуры таблицы со столбцами contact_id (первичный ключ, автоинкремент), employee_id (внешний ключ к таблице employees), phone_number (уникальность) и email (обязательность заполнения).
Для решения задачи потребовалось подключиться к базе данных PostgreSQL под пользователем postgres через psql и выполнить SQL-команды для настройки таблицы и её ограничений, что обеспечило целостность данных и правильные связи между таблицами.


