Проверка почты на уникальное значение + наличие «@« не в первой позиции:
email VARCHAR(50) NOT NULL UNIQUE CHECK (position(‘@‘ in email) > 1)
Проверка даты рождения на диапазон от 01.01.1950 до текущей:
birth_date DATE NOT NULL CHECK (birth_date BETWEEN ‘1950-01-01’ AND CURRENT_DATE)
Задания для промежуточной аттестации:
1. Создать диаграмму по следующей предметной области:
Учебное заведение ведёт учёт студентов, преподавателей, учебных курсов и успеваемости. Система автоматизирует следующие бизнес-процессы:
- регистрация преподавателей и студентов;
- формирование каталога учебных курсов с закреплением за преподавателем;
- запись студентов на курсы (в течение семестра);
- фиксация итоговых оценок по каждому курсу;
- получение отчётов: нагрузка преподавателей, средний балл по курсам, студенты без оценок и т. д.
Сущности и их атрибуты:
1. teachers (id, full_name, department (кафедра), email);
2. students (id, full_name, group_name, birth_date, email);
3. courses (id, title, credits (академ. часы, максимум 144), teacher_id);
4. enrollments (запись на курс, т.к. между студентами и курсами связь многие ко многим) (id, student_id, course_id, grade (1-5), enrolled_at (дата зачисления на курс)).
2. Создать и заполнить таблицы (минимум 10 строк) со следующими ограничениями:
- Все атрибуты имеют ограничение NOT NULL;
- Проверка email на уникальность и содержание символа «@«;
- credits целое число от 0 до 144;
- birthday дата от 1963-01-01 до текущей;
- enrolled_at сделать текущей датой по умолчанию.
3. Продемонстрировать следующие запросы:
- Выборку уникальных значений (DISTINCT) department из таблицы teachers;
- Сортировку courses по атрибуту credits
- Фильтрация students, у которых birth_date раньше 2013-07-04;
- Максимальное, минимальное и среднее значение credits;
- Показать сколько студентов обучается в каждой группе, используя GROUP BY + ORDER BY
Ссылка на полезные материалы:
https://metanit.com/sql/postgresql/4.1.php
https://www.postgresql.org/docs/current/queries-table-expressions.html