ify"> Якщо має місце зв'язок N: N, то в будь-якому випадку необхідно формування трьох попередніх відносин: по одному - для кожної з суті, одне - для зв'язку. span>
2.2.2 Перевірка попередніх відносин на соответсвие нормальним формам
У курсовому проекті потрібно, щоб всі використовувані таблиці БД на відповідність нормальній формі Бойса-Кодда. p align="justify"> Розглянемо виконання цієї умови на прикладі однієї таблиці Покупці. Покажемо послідовний перехід від однієї нормальної форми до іншої:
1. Дане відношення знаходиться в 1НФ, оскільки в ньому кожне значення, що міститься на перетині рядка і колонки, що не расчленяемо на кілька значень.
2.Данило ставлення знаходиться в 2НФ, оскільки кожен не ключовий атрибут функціонально повно залежить від первинного ключа - номер покупця. p>. Дане відношення знаходиться в 3НФ, так як кожен не ключовий атрибут залежить тільки від первинного ключа номер покупця і не виникає інформаційної надмірності та аномалій. p>. Дане відношення знаходиться в БКНФ, тому що в ньому відсутні функціональні залежності атрибутів складеного ключа від неключових атрибутів. Ця умова виконується за замовчуванням, так як в даній таблиці ключ не є складеним. p align="justify"> Аналогічним чином перевіряються всі інші таблиці.
2.2.3 Побудова схеми даних
В
Рис. 15. Схема даних
2.2.4 Завдання приватних обмежень цілісності
При розробці даного клієнт-серверного додатку було забезпечено контроль цілісності даних по 3-рівневої схемою:
. Контроль цілісності зв'язку. p align="justify">. Рівень збережених процедур. Щоб обмежити можливості користувача по доступу до бази даних, у тому числі і до вчинення небажаних і шкідливих дій, всі операції, доступні користувачеві, були оформлені у вигляді збережених процедур. p align="justify">. Рівень клієнтського додатку. Перед викликом збережених процедур додаток самостійно перевіряє семантику деяких переданих параметрів. p align="justify"> Частковий додатки, який є прикладом забезпечення цілісності третього рівня:
val (edit1.Text, x, z1); edit11.Text <>'' val (edit11.Text, x, z2)
else z2: = 0; (z1 = 0) and (z2 = 0)
and (edit1.Text <>'') and (edit3.Text <>'') begin. Parameters.ParamValues ​​['@ nazv']: = Edit2.Text;. Parameters.ParamValues ​​['@ fio']: = Edit3.Text;. Parameters.ParamValues ​​['@ adr']: = Edit4.Text; edit11.Text <>''. Parameters.ParamValues ​​['@ tel']: = введення ');
...
Даний фрагмент містить обробник виключень, який запобігає помилку SQL Server при некоректно введеному номері пок...