Обзор вопросов по языка програмиированию C# и технологии NET
Цель нормализации — структурировать данные так, чтобы избежать дублирования, обеспечить целостность и упростить поддержку.
Проблемы без нормализации:
Примеры аномалий:
Суть: каждая ячейка таблицы содержит только одно значение, таблица плоская.
Требования:
Пример:
Плохо:
| Student | Courses |
|---------|----------------|
| Alice | Math, English |
Хорошо:
| Student | Course |
|---------|---------|
| Alice | Math |
| Alice | English |
Суть: таблица в 1NF и все неключевые поля зависят полностью от первичного ключа, а не от его части.
Требования:
Пример:
Плохо:
| OrderID | ProductID | ProductName | Quantity |
|---------|-----------|-------------|---------|
ProductName зависит только от ProductID, а не от всего ключа (OrderID+ProductID) → нарушение 2NF
Хорошо:
OrderDetails:
| OrderID | ProductID | Quantity |
Products:
| ProductID | ProductName |
Суть: таблица в 2NF и нет транзитивных зависимостей (неключевые поля не зависят друг от друга).
Плохо:
| StudentID | DeptID | DeptName |
DeptName зависит от DeptID, который не является ключом таблицы → транзитивная зависимость
Хорошо:
Students:
| StudentID | DeptID |
Departments:
| DeptID | DeptName |
Суть: сильная версия 3NF, все детерминанты — ключи.
Суть: нет многозначных зависимостей (multi-valued dependencies).
Суть: нет избыточных данных из-за соединений (join dependencies).
✨Dvurechensky✨