Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсач / Наволоцкий_1302_v2.docx
Скачиваний:
0
Добавлен:
27.12.2025
Размер:
2.47 Mб
Скачать

2.3. Обоснование нормализации (3нф)

При проектировании базы данных была выполнена нормализация до уровня Третьей Нормальной Формы (3НФ). Это необходимо для устранения избыточности данных, предотвращения аномалий при обновлении и обеспечения логической целостности [1].

Выполнение требований нормализации:

1. Первая Нормальная Форма (1НФ):

  • Требование: Все атрибуты должны быть атомарными (неделимыми), отсутствуют повторяющиеся группы.

  • Реализация: В таблицах отсутствуют поля, содержащие списки значений (например, «10V, 20mA»). Характеристики компонента вынесены в отдельную таблицу [Stock].ComponentParams, где каждый параметр хранится в отдельной строке. Таблица [Stock].Components содержит только уникальный первичный ключ ComponentID.

2. Вторая Нормальная Форма (2НФ):

  • Требование: Таблица находится в 1НФ, и каждый неключевой атрибут полностью зависит от всего первичного ключа.

  • Реализация: Так как все таблицы имеют простой (не составной) первичный ключ (ID), условие 2НФ выполняется автоматически. Например, атрибут Description в таблице [Stock].Components зависит именно от конкретного компонента (ComponentID), а не от какой-либо его части.

3. Третья Нормальная Форма (3НФ):

  • Требование: Таблица находится во 2НФ, и отсутствуют транзитивные зависимости (неключевые атрибуты не должны зависеть от других неключевых атрибутов).

  • Реализация: В главной таблице [Stock].Components отсутствуют атрибуты, зависящие друг от друга.

    • Пример устранения транзитивной зависимости: Если бы мы хранили название производителя и адрес его сайта прямо в таблице компонентов, то адрес сайта зависел бы от названия производителя (Component -> ManufacturerName -> Website).

    • Для устранения этого нарушения сущности Производитель, Категория и Тип Корпуса были вынесены в отдельные справочные таблицы. В таблице [Stock].Components хранятся только ссылки (ID) на эти справочники.

Таким образом, структура базы данных полностью удовлетворяет требованиям 3НФ.

3. Создание базы данных

Физическая реализация базы данных «CircuitDB» выполнена в среде Microsoft SQL Server 2012 Express Edition. Создание базы данных осуществляется с помощью DDL-скрипта, который не полагается на настройки по умолчанию, а явно определяет параметры физического хранения файлов.

Для обеспечения производительности и возможности независимого управления хранилищем, структура базы данных разделена на два логических файла:

  1. Файл данных (Primary Data File, .mdf) — содержит основные таблицы, индексы и системные представления.

  2. Файл журнала транзакций (Log File, .ldf) — фиксирует все изменения данных для обеспечения целостности и возможности восстановления (ACID).

Реализация выполнена командой CREATE DATABASE с указанием файловых групп:

CREATE DATABASE CircuitDB

ON PRIMARY

(

NAME = N'CircuitDB_Data',

FILENAME = N'C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\CircuitDB.mdf',

SIZE = 10MB,

MAXSIZE = UNLIMITED,

FILEGROWTH = 5MB

)

LOG ON

(

NAME = N'CircuitDB_Log',

FILENAME = N'C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\CircuitDB_log.ldf',

SIZE = 5MB,

MAXSIZE = 2GB,

FILEGROWTH = 1MB

);

Обоснование выбранных параметров:

  • Пути к файлам (FILENAME): Файлы размещаются в системной директории экземпляра SQL Server, однако предусмотрена возможность их разнесения на физически разные диски для ускорения операций ввода-вывода.

  • Начальный размер (SIZE): Установлен в 10 МБ для данных и 5 МБ для журнала, что достаточно для развертывания структуры и начального набора данных.

  • Автоматическое увеличение (FILEGROWTH): Настроен фиксированный шаг прироста (5 МБ), что предотвращает сильную фрагментацию файловой системы, которая могла бы возникнуть при слишком частом увеличении файла маленькими порциями.

Перед созданием базы данных скрипт выполняет проверку на наличие существующей версии с таким же именем. В случае обнаружения, старая база переводится в режим SINGLE_USER (для принудительного разрыва соединений) и удаляется, что гарантирует корректную работу инсталлятора.

Соседние файлы в папке курсач