Зачем нужна база данных?
В файловой системе каждый отдел хранит свои файлы. Из-за этого возникают проблемы:
- Избыточность данных: одни и те же данные хранятся много раз и занимают лишнее место.
- Несогласованность данных: одну копию обновили, другие нет, и они противоречат друг другу.
- Трудно искать и делиться: на каждый новый вопрос нужна новая программа.
- Слабая защита: трудно управлять тем, кто что видит.
- Изоляция и зависимость данных: файлы бывают в разных форматах, а если изменить структуру файла, программы ломаются.
База данных — это упорядоченный набор связанных данных, хранящийся в одном месте, чтобы им можно было делиться, поддерживать их согласованность и защищать.
Система управления базами данных (СУБД)
СУБД — это программа, которая создаёт, хранит, обновляет, ищет и ведёт базу данных, а ещё решает, кто может ею пользоваться. Примеры: MySQL, Oracle, PostgreSQL, SQLite, Microsoft Access.
Преимущества: меньше избыточности, согласованность, одновременная работа многих пользователей, защита паролями и правами доступа, резервные копии и восстановление, лёгкий поиск с помощью языка запросов (SQL).
Где это встречается каждый день: банки, продажа железнодорожных билетов, школьные журналы, интернет-магазины, больницы.
Реляционная модель: отношение, атрибут, кортеж, домен
В реляционной модели данных данные хранятся в таблицах.
- Отношение: таблица с именем, например STUDENT.
- Атрибут: столбец, например Name.
- Кортеж: строка, то есть одна полная запись.
- Домен: набор допустимых значений атрибута, например Class ∈ {9, 10, 11, 12}.
- Степень: число атрибутов (столбцов).
- Мощность: число кортежей (строк).
Правила: у каждого столбца своё уникальное имя; порядок строк и столбцов не важен; нет двух абсолютно одинаковых строк; в каждой ячейке одно значение (или NULL, то есть значение неизвестно).
Ключи: потенциальный, первичный и альтернативный
- Потенциальный ключ: атрибут (или набор атрибутов), значение которого уникально в каждой строке и никогда не равно NULL. В таблице их может быть несколько.
- Первичный ключ: тот единственный потенциальный ключ, который выбрали для определения строк. Он не может быть NULL и не может повторяться.
- Альтернативный ключ: каждый потенциальный ключ, который не выбрали первичным.
Пример: STUDENT(AdmNo, Name, Class, Email). Name повторяется, Class повторяется, значит, ключами они не являются. AdmNo и (если он всегда заполнен и у всех разный) Email — потенциальные ключи. Выбираем AdmNo первичным ключом; Email становится альтернативным ключом.
Полезно знать и это: составной ключ использует два или более столбцов вместе (например, Class + RollNo); внешний ключ — это столбец одной таблицы, который ссылается на первичный ключ другой таблицы и так связывает их.
Попробуй сам: найди ключ в школьном пропуске
Возьми школьный пропуск или проездной. Выпиши все поля (имя, класс, номер по списку, номер личного дела, телефон). Для каждого задай два вопроса: может ли у двух учеников быть одинаковое значение? Может ли оно быть пустым? Запиши, какие поля — потенциальные ключи, а какое ты выбрал бы первичным. Потом проверь ту же идею в шаге 6 в 3D.
Главные формулы и определения
- Отношение = таблица; атрибут = столбец; кортеж = строка
- Степень = число столбцов; мощность = число строк
- Потенциальный ключ: уникальный + не NULL
- Первичный ключ = выбранный потенциальный ключ; альтернативные ключи = остальные
Разобранные примеры
1. В таблице 5 столбцов и 30 строк. Найди её степень и мощность.
Степень = 5, мощность = 30.
2. В таблицу 4 × 10 (степень 4, мощность 10) добавили 2 строки и 1 столбец. Каковы новые значения?
Степень = 5, мощность = 12.
3. EMPLOYEE(EmpID, Name, Aadhaar, Dept). Определи потенциальные, первичный и альтернативный ключи.
EmpID и Aadhaar уникальны → потенциальные ключи. Выбираем EmpID первичным ключом; Aadhaar — альтернативный ключ. Name и Dept могут повторяться.
4. Почему Name нельзя сделать первичным ключом в STUDENT?
У двух учеников может быть одинаковое имя, поэтому оно не определяет строку однозначно.
5. Укажи домен атрибута Gender, который хранится одной буквой.
{"M", "F", "O"} (или те коды, которые разрешила школа).
Частые ошибки
- Называть столбец кортежем. Кортеж = строка; атрибут = столбец.
- Говорить, что степень — это число строк. Степень считает столбцы.
- Думать, что в таблице может быть только один потенциальный ключ. Их может быть много, но первичный ключ только один.
- Разрешать NULL в столбце первичного ключа.