Administreerimise konspekt

📌 Роли пользователей баз данных

  • Пользователь БД – работает с данными в рамках предоставленных прав.
  • Проектировщик – создает таблицы, права доступа и структуру БД.
  • Программист – пишет код, в т.ч. хранимые процедуры.
  • Администратор – обеспечивает стабильную и безопасную работу для всех пользователей.

🧑‍💼 Типы администраторов баз данных (DBA)

  • Системный администратор – отвечает за резервное копирование, восстановление и производительность.
  • Архитектор БД – разрабатывает и оптимизирует структуру и интерфейсы базы.
  • Аналитик БД – проводит анализ, прогнозирование, сбор и загрузку данных.
  • Администратор хранилища данных – следит за корректностью расчётов, доступом и логикой хранилища.

Дополнительно: программист БД, аналитик производительности, админ web-узла и др.


❓ Вопрос

Администратор базы данных (DBA) — это владелец базы данных?
👉 Нет, не обязательно.

💼 Кто такой владелец базы данных?

Владелец — это создатель базы данных или тот, кто официально назначен владельцем.
У него есть максимальные права на эту БД: он может:

  • полностью управлять структурой,
  • удалять всё или передавать права другим,
  • менять администратора или ограничивать его действия.

📌 Пример в жизни:
Владелец — как хозяин квартиры. Он может:

  • дать кому-то ключи,
  • пустить администратора,
  • продать квартиру или поменять замки.

🧑‍🔧 Кто такой администратор базы данных (DBA)?

Администратор — это специалист, который обслуживает базу данных. Он не обязательно её создавал и не обязательно её “владелец”.

💡 Его задача — следить, чтобы всё работало:

  • база была доступна,
  • данные защищены,
  • пользователи имели нужные права,
  • всё работало быстро и безопасно.

📌 Пример:
Администратор — это управляющий многоквартирным домом.
Он:

  • следит за системой отопления,
  • вызывает ремонтников,
  • заботится о безопасности.

Но он не владеет домом — он работает в интересах владельцев.


⚖️ Разница: Владелец vs Администратор

ХарактеристикаВладелец БДАдминистратор БД (DBA)
Кто это?Создатель или юридический владелецТехнический специалист
Может удалить базу?✅ Да❌ Не всегда
Отвечает за обслуживание?❌ Не обязательно✅ Да
Контролирует политику прав✅ Полностью✅ Частично или по поручению
Получает доступ по умолчанию✅ Всегда❌ Только если назначен

🧠 Почему это важно понимать?

Потому что:

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

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


💬 Итого:

Администратор базы данных не обязан быть владельцем.
Он может управлять БД только в рамках полномочий, которые ему дал владелец или организация.
Владелец – это “глава”, админ – “техник”, обеспечивающий её работоспособность.


🔧 Задачи администрирования баз данных

  1. Первоначальная загрузка
    Проектирование форм ввода, загрузка, контроль, создание модулей.
  2. Защита от несанкционированного доступа
    • Регистрация пользователей, назначение паролей.
    • Ограничение доступа к данным (GRANT, REVOKE).
    • Шифрование, тестирование защиты.
  3. Защита от потери данных
    • Резервное копирование.
    • Восстановление после сбоев.
  4. Работа с пользователями
    • Обучение, консультирование, сбор обратной связи.
    • Анализ эффективности и развитие системы.

🔐 Основные задачи администратора

  • Настройка политики доступа.
  • Обеспечение безопасности и производительности базы данных.

🛡 Потребности безопасности

  1. Конфиденциальность (Confidentiality)
    – Доступ только уполномоченным.
    – Управление через GRANT, REVOKE.
  2. Доступность (Availability)
    – Обеспечение бесперебойного доступа.
    – Использование RAID, резервное копирование.
  3. Целостность (Integrity)
    – Данные из надежных источников, не искажены.
    – Включает действительность, согласованность, правильность.

⚠️ Риски безопасности

  • Человеческий фактор → все аспекты (Ц, Д, К).
  • Физические сбои (оборудование) → Целостность, доступность.
  • Сбои в ОС → Ц, Д, К.
  • Ошибки СУБД → К, Ц, Д.

📝 Домашнее задание

📘 Ключи в реляционных базах данных

🔑 1. Primary Key (Первичный ключ)

Определение: Поле (или комбинация полей), однозначно идентифицирующее каждую строку в таблице.
Особенности:

  • Не может содержать NULL
  • Должен быть уникальным

Пример:
В таблице Students поле StudentID может быть первичным ключом.

sqlКопироватьРедактироватьCREATE TABLE Students (
  StudentID INT PRIMARY KEY,
  Name VARCHAR(100)
);

🌍 2. Foreign Key (Внешний ключ)

Определение: Поле, которое ссылается на первичный ключ в другой таблице.
Особенности:

  • Обеспечивает ссылочную целостность
  • Может содержать NULL, если связь не обязательна

Пример:

sqlКопироватьРедактироватьCREATE TABLE Orders (
  OrderID INT PRIMARY KEY,
  StudentID INT,
  FOREIGN KEY (StudentID) REFERENCES Students(StudentID)
);

🧭 3. Unique Key (Уникальный ключ)

Определение: Поле, значения которого должны быть уникальны, но может содержать NULL.
Особенности:

  • Может быть несколько уникальных ключей в таблице
  • NULL допустим, в отличие от первичного ключа

Пример:

sqlКопироватьРедактироватьCREATE TABLE Employees (
  EmployeeID INT PRIMARY KEY,
  Email VARCHAR(100) UNIQUE
);

🎯 4. Simple Key (Простой ключ)

Определение: Ключ, состоящий из одного поля.
Пример: EmployeeID — простой ключ.


🧩 5. Composite Key (Составной ключ)

Определение: Ключ, состоящий из двух или более полей, совместно образующих уникальное значение.
Пример:

sqlКопироватьРедактироватьCREATE TABLE CourseRegistrations (
  StudentID INT,
  CourseID INT,
  PRIMARY KEY (StudentID, CourseID)
);

🧱 6. Compound Key (Сложный ключ)

Определение: По сути синоним Composite Key. Однако в некоторых источниках подчеркивают, что составные ключи включают поля, которые могут быть ключами по отдельности.


💡 7. Superkey (Суперкюч)

Определение: Любая комбинация полей, которая однозначно идентифицирует строку. Может содержать лишние поля.
Пример:
(StudentID, Name) — суперкюч, если StudentID уже уникален.


🎓 8. Candidate Key (Кандидат в ключи)

Определение: Минимальный суперключ. Может быть выбран в качестве Primary Key.
Особенности:

  • Все поля, которые могут быть Primary Key
  • Не содержит лишних данных

Пример:
StudentID и Email — оба кандидаты, если уникальны.


🧪 9. Alternate Key (Альтернативный ключ)

Определение: Любой кандидат, не выбранный как Primary Key.
Пример:
Если StudentID — Primary Key, то Email будет Alternate Key.


📌 Таблица-сравнение

Тип ключаУникальностьNULL допустимСоставнойСвязь между таблицами
Primary Key✅ Да❌ Нет✅ Может❌ Нет
Foreign Key❌ Нет✅ Может✅ Может✅ Да
Unique Key✅ Да✅ Может✅ Может❌ Нет
Simple Key✅ Да❌ Обычно нет❌ Нет❌ Нет
Composite Key✅ Да❌ Обычно нет✅ Да❌ Нет
Superkey✅ Да❌ Нет✅ Может❌ Нет
Candidate Key✅ Да❌ Нет✅ Может❌ Нет
Alternate Key✅ Да❌ Нет✅ Может❌ Нет

🔄 COMMIT, ROLLBACK, ROLLFORWARD — это команды для управления транзакциями в базах данных

Что такое транзакция?

Представь, ты переводишь деньги через онлайн-банк. Сначала система должна:

  1. Списать деньги с одного счёта.
  2. Зачислить деньги на другой счёт.

Обе операции должны выполниться вместе — это и есть транзакция. Если произойдёт ошибка после первого шага, нужно всё отменить. А если всё прошло успешно, надо подтвердить.

Теперь разберём команды:


COMMIT — «Подтвердить изменения»

Представь, ты делаешь покупки в интернет-магазине и нажимаешь кнопку «Оформить заказ». До этого момента ты мог что-то менять, отменять, выбирать. Но после нажатия кнопки — всё подтверждено, заказ отправлен, изменения сохранены.

Так и в БД: COMMIT говорит:

«Всё, что сделано до этого момента — сохранить навсегда.»

Зачем это нужно?

  • Чтобы зафиксировать успешные действия.
  • Чтобы другие пользователи видели эти изменения.

Пример в жизни базы данных:
Ты добавил 10 новых клиентов в таблицу. Всё проверил. Вводишь COMMIT — и они официально сохраняются в системе.


ROLLBACK — «Откатить назад»

Это как кнопка «Отмена» или «Назад». Если ты заметил ошибку до сохранения (COMMIT), можно откатить все изменения и вернуть базу в исходное состояние.

Пример:
Ты случайно удалил таблицу или обновил не те строки — вводишь ROLLBACK, и система говорит:

«Окей, забудем, что ты это делал.»

Очень полезно при ошибках или неправильных операциях, пока ты их ещё не подтвердил.


🔁 ROLLFORWARD — «Восстановить данные после сбоя»

Это используется не вручную, а обычно при восстановлении после аварии.
Допустим:

  • Ты делал резервное копирование в 10:00.
  • В 12:00 что-то сломалось.

Ты можешь восстановить данные из резервной копии (состояние на 10:00), а затем ROLLFORWARD применит все изменения, которые произошли между 10:00 и 12:00, используя журнал транзакций.

То есть:

«Мы возвращаем базу в живое состояние, как будто ничего не случилось.»


🧠 Data Mining — поиск закономерностей в данных

Представь огромную таблицу в Excel с миллионами строк — кто, что, где и когда покупал.

Человек не сможет увидеть закономерности, но компьютер может!

Data Mining (в переводе — «добыча данных») — это процесс, при котором система автоматически ищет интересные связи, закономерности, повторяющиеся шаблоны.

📌 Примеры:

  • Магазины: «Те, кто покупает кошачий корм, часто покупают и игрушки для кошек.»
  • Банки: «Клиенты, взявшие кредит на авто, через год чаще берут страховку.»

Такой анализ помогает принимать решения, строить прогнозы, делать рекламу точнее.


🗄 Data Warehouse (Хранилище данных) — как большой склад для аналитики

Это не обычная база, где идут ежедневные операции.
Это — как огромный архив, куда стекаются данные из разных источников для анализа.

Представь:

  • У компании есть отдел продаж, бухгалтерия, HR, склад.
  • Все они работают в своих программах.
  • Но руководству нужно видеть всё в одном месте: отчёты, тренды, сравнение по годам.

Data Warehouse:

  • собирает данные из разных систем (например, раз в день),
  • чистит, объединяет, структурирует,
  • хранит в формате, удобном для отчётов.

📊 На основе этих данных можно строить:

  • диаграммы,
  • отчёты,
  • прогнозы.

💡 В кратком виде:

ТерминЧто этоПример
COMMITСохраняет изменения«Оформить заказ»
ROLLBACKОткатывает изменения«Отмена ввода»
ROLLFORWARDВосстанавливает данные после сбоя«Вернуть после аварии»
Data MiningПоиск скрытых закономерностей в данных«Анализ покупательских привычек»
Data WarehouseБольшое хранилище для аналитики«Центр сбора данных всей компании»