Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГАК-2026.docx
Скачиваний:
1
Добавлен:
16.06.2026
Размер:
2.66 Mб
Скачать

2. Принцип целостности данных

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

Целостность обеспечивается через ограничения (constraints):

  • Целостность сущностей — первичный ключ уникален и не NULL.

  • Ссылочная целостность — внешние ключи указывают на существующие записи.

  • Доменная целостность — значения полей соответствуют типу и допустимым диапазонам.

  • Пользовательские ограничения — бизнес-правила (например, "дата увольнения не может быть раньше даты приёма").

В более широком смысле принцип целостности требует, чтобы СУБД гарантировала сохранность данных при сбоях (ACID).

3. Принцип минимизации избыточности

Данные не должны дублироваться без необходимости. Избыточность приводит к:

  • лишним затратам дискового пространства;

  • риску противоречий (если одну копию изменили, а другую забыли);

  • замедлению операций обновления.

Нормализация — основной инструмент борьбы с избыточностью. Однако в современных NoSQL-решениях иногда сознательно идут на денормализацию ради производительности, но это всегда компромисс.

4. Принцип непротиворечивости

Данные в разных местах не должны противоречить друг другу. Если информация дублируется (вынужденно), должны быть механизмы синхронизации.

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

5. Принцип стандартизации и унификации

Желательно использовать стандартные подходы к проектированию и стандартные языки (SQL) для повышения переносимости и упрощения сопровождения.

Это касается:

  • именования таблиц и полей;

  • использования общепринятых типов данных;

  • соблюдения нормальных форм;

  • документирования схемы.

6. Принцип доступности и производительности

База данных должна обеспечивать доступ к данным за приемлемое время. Это достигается:

  • индексированием (ускорение поиска);

  • оптимизацией запросов (анализ плана запроса);

  • кэшированием (хранение часто используемых данных в памяти);

  • репликацией (копии данных на разных серверах для распределения нагрузки);

  • партиционированием (разбиение больших таблиц на части).

7. Принцип безопасности

Данные должны быть защищены от:

  • несанкционированного доступа (аутентификация, авторизация);

  • перехвата (шифрование каналов);

  • физической потери (резервное копирование, репликация).

СУБД предоставляют механизмы разграничения прав доступа на уровне пользователей и ролей.

8. Принцип целостности при параллельном доступе

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

9. Принцип расширяемости

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

10. Принцип соответствия предметной области

Модель данных должна адекватно отражать реальную предметную область. Это базовый принцип: если модель не соответствует реальности, база будет бесполезной.

Часть 2. Современные системы управления базами данных (СУБД)

1. Классификация современных СУБД

Современные СУБД можно разделить на несколько категорий:

Категория

Описание

Представители

Реляционные (SQL)

Таблицы, строгие схемы, ACID

Oracle, MySQL, PostgreSQL, MS SQL Server, SQLite

Документные (NoSQL)

JSON-документы, гибкая схема

MongoDB, CouchDB, Firebase

Ключ-значение (NoSQL)

Простые пары ключ-значение

Redis, Memcached, DynamoDB

Колоночные (NoSQL)

Данные по колонкам, для аналитики

Cassandra, HBase, ClickHouse

Графовые (NoSQL)

Узлы и рёбра для связей

Neo4j, Amazon Neptune

Временные ряды (Time Series)

Для метрик и логов

InfluxDB, Prometheus, TimescaleDB

NewSQL

SQL + горизонтальное масштабирование

CockroachDB, YugabyteDB, Google Spanner

Мультимодельные

Поддержка нескольких моделей

PostgreSQL (с JSON), ArangoDB, OrientDB