Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Пример реляции в таблице
Реляционная модель данных представляет информацию в виде набора таблиц (отношений), где каждая строка — это кортеж, а каждый столбец — атрибут с определенным типом данных. Давайте рассмотрим конкретный пример.
Таблица "Сотрудники" (Employees)
Это классическая таблица, которая может существовать в любой HR-системе. Она содержит информацию о работниках компании.
| employee_id | first_name | last_name | department_id | hire_date | salary |
|---|---|---|---|---|---|
| 1 | Иван | Петров | 3 | 2020-05-15 | 85000 |
| 2 | Мария | Сидорова | 2 | 2019-11-20 | 92000 |
| 3 | Алексей | Иванов | 3 | 2021-03-10 | 78000 |
| 4 | Ольга | Кузнецова | 1 | 2018-08-01 | 110000 |
Разбор структуры реляции
Эта таблица является отношением и соответствует всем требованиям реляционной модели:
- Уникальное имя отношения:
Employees. - Атрибуты (столбцы): Каждый имеет уникальное имя в пределах таблицы и домен (тип данных):
* `employee_id` — уникальный идентификатор (INTEGER, PRIMARY KEY).
* `first_name` и `last_name` — строки (VARCHAR).
* `department_id` — целое число, ссылающееся на другую таблицу "Отделы" (FOREIGN KEY).
* `hire_date` — дата (DATE).
* `salary` — числовое значение (DECIMAL).
- Кортежи (строки): Каждая строка представляет собой уникальный набор значений, описывающий одного сотрудника. В данном примере таблица содержит 4 кортежа.
- Первичный ключ (Primary Key): Атрибут
employee_idгарантирует, что каждый кортеж уникален. Его значение не может бытьNULLи не должно повторяться. - Степень отношения: Количество атрибутов. Здесь степень равна 6.
- Кардинальность отношения: Количество кортежей. Здесь кардинальность равна 4.
Связь с другими отношениями (таблицами)
Ключевой принцип реляционной модели — связь между таблицами через ключи. Поле department_id в нашей таблице является внешним ключом (Foreign Key). Оно ссылается на первичный ключ (id) другой таблицы — предположим, Departments. Это позволяет избежать дублирования данных и обеспечивает целостность.
Таблица "Отделы" (Departments):
CREATE TABLE Departments (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
location VARCHAR(100)
);
Пример данных для Departments:
INSERT INTO Departments (id, name, location) VALUES
(1, 'Бухгалтерия', 'Москва'),
(2, 'IT', 'Санкт-Петербург'),
(3, 'Продажи', 'Новосибирск');
Таким образом, мы можем соединить (JOIN) эти две таблицы, чтобы получить полную информацию:
SELECT
e.first_name,
e.last_name,
d.name as department_name,
e.salary
FROM Employees e
JOIN Departments d ON e.department_id = d.id;
Результат запроса:
| first_name | last_name | department_name | salary |
|---|---|---|---|
| Иван | Петров | Продажи | 85000 |
| Мария | Сидорова | IT | 92000 |
| Алексей | Иванов | Продажи | 78000 |
| Ольга | Кузнецова | Бухгалтерия | 110000 |
Важные свойства реляции из примера:
- Отсутствие упорядоченности строк: Данные в таблице
Employeesне упорядочены. При запросе мы можем сортировать их как угодно (например, поsalary). - Отсутствие дублирующих кортежей: Благодаря первичному ключу
employee_idв таблице не может быть двух полностью одинаковых строк. - Атомарность значений: Каждое значение в ячейке (
salary,first_name) является неделимым (атомарным). Мы не храним, например, полное имя в одном поле — оно разделено на два атрибута, что соответствует первой нормальной форме (1NF).
Этот пример наглядно показывает, как реляционная модель организует данные в строгие, логически связанные структуры, что является фундаментом для большинства современных систем управления базами данных (СУБД), таких как PostgreSQL, MySQL, Oracle.