Анотація: При проектуванні інформаційних систем предметна область відображається моделями даних декількох рівнів. У будь-якому випадку повинні бути присутніми логічний і фізичний рівні. На логічному рівні об'єкти в просторі станів є сутностями і пов'язані між собою через відносини. На фізичному рівні сутності представляються у вигляді таблиць, а відносини - у вигляді обмежень зовнішнього ключа. На занятті присутній великий теоретичний матеріал, що дозволяє більш глибоко зрозуміти принципи побудови відносин, розібратися в їх типах і визначити, який тип відносин найбільш підходить для вирішення практичних завдань.
Ви навчитеся:
- створювати відношення;
- змінювати ставлення;
- перейменовувати відношення;
- видаляти відношення.
Поняття про відносини
Більшість баз даних призначені для моделювання певної частини реального світу, яку називають простором станів (problem space). На логічному рівні об'єкти в просторі станів є сутностями (entities) і пов'язані між собою через відносини (relationships). На фізичному рівні Microsoft SQL Server являє суті у вигляді таблиць, а відносини - у вигляді обмежень зовнішнього ключа. які визначають зовнішні ключі.
Багато хто думає, що реляційні бази даних називаються "реляційними" ( "relational"), оскільки між таблицями встановлюються відносини (relationships). Насправді ця назва походить від англійського терміна "relation", що означає "відношення", який був введений доктором Е.Ф.Коддом для опису об'єкта, який в SQL Server реалізований у вигляді таблиці.
Існує три типи відносин: один-до-одного. при якому кожен рядок таблиці пов'язана з нулем або одним рядком іншої таблиці; один-ко-многим. при якому кожен рядок таблиці пов'язана з нулем, однією або кількома рядками іншої таблиці; і багато-до-багатьох, при якому кожен рядок першої таблиці пов'язана з нулем, однією або кількома рядками другої таблиці, а кожен рядок другої таблиці може бути пов'язана з нулем, однією або кількома рядками першої таблиці.
Відносини один-до-одного зустрічаються досить рідко. Як правило, вони використовуються в разі, коли набір атрибутів застосовується до невеликої кількості примірників сутності. Наприклад, лише мала частина колективу співробітників компанії може бути учасниками команди з софтболу. Проектувальник бази даних може помістити всі атрибути софтбольного команди в окрему таблицю, а потім створити відношення один-до-одного між нею і таблицею співробітників.
З іншого боку, відносини один-ко-многим досить широко поширені. У нашому прикладі бази даних відношення один-ко-многим існує між таблицею PlantParts і таблицею Oils - будь-який рядок в таблиці PlantParts може бути пов'язана з нулем, однією або кількома рядками таблиці Oils.
Відносини багато-до-багатьох також зустрічаються досить часто. У нашому прикладі ставлення багато-до-багатьох існує між таблицею Properties і таблицею Oils - будь-який вид масла може мати кілька властивостей, а будь-яку властивість може ставитися до декількох видів масла.
SQL Server. подібно до інших систем керування базами даних, оформляє відносини один-до-одного і один-до-багатьох безпосередньо, а для реалізації відносин багато-до-багатьох використовує вузлову таблицю. Вузлова таблиця складається з первинних ключів таблиць з кожної зі сторін відносини. Ставлення один-ко-многим встановлюється між вузловий таблицею і кожної з оригінальних таблиць. Відносини багато-до-багатьох вирішуються з використанням вузлової таблиці.
зворотні відносини
Більшість відносин в базі даних встановлюють між двома різними таблицями. Однак буває, коли таблиця зв'язується сама з собою або через ставлення один-до-одного, або через ставлення один-ко-многим. Подібні відносини називаються зворотними відносинами.
Зворотні відносини найчастіше застосовуються для реалізації ієрархій. Типовий приклад - ієрархія співробітників в організації. Співробітник може бути підпорядкований менеджеру, а менеджер, в свою чергу, може як співробітник мати вищого менеджера. Це відношення оформляється шляхом включення первинного ключа таблиці співробітників в якості шпальти таблиці і установки поворотного відносини один-ко-многим.
На рівні таблиці відношення оформляється шляхом включення унікального ідентифікатора, зазвичай первинного ключа, з таблиці на стороні одного (головну таблицю, або таблицю первинного ключа) в таблицю на стороні багатьох (залежну таблицю, або таблицю зовнішнього ключа). Цей ідентифікатор називається зовнішнім ключем.
Примітка. Унікальний ідентифікатор, який використовується в якості зовнішнього ключа, зазвичай є первинним ключем головною таблиці, проте він також може бути будь-яким стовпцем або групою стовпців, які були оголошені унікальними.
SQL Server може контролювати відносини, які ви встановили в базі даних, здійснюючи обслуговування цілісності відносин. За замовчуванням SQL Server буде відкидати будь-які зміни в первинному ключі рядки з головної таблиці, яка має пов'язані рядки в залежною таблиці.
Увага. Деякі схеми баз даних можуть бути досить складними. Використання каскадних вилучень і змін може полегшити супровід складних структур даних, але SQL Server вимагає, щоб каскадирование не було круговим. Наприклад, видалення рядка в таблиці А може привести до видалення рядка в таблиці В, що, в свою чергу, викличе видалення рядка в таблиці С. Однак не допускається встановлювати такий режим каскадування, при якому видалення рядка в таблиці З призведе до видалення рядка в таблиці А.