- •Тема 3 реляційна модель даних та її складові частини
- •3.1 Структура реляційної бд
- •3.2 Елементи реляційної моделі
- •3.3 Фундаментальні властивості відношень
- •Відсутність кортежів-дублікатів
- •2. Відсутність впорядкованості кортежів
- •3.Відсутність впорядкованості атрибутів
- •4. Атомарність значень атрибутів
- •3.4 Цілісність сутностей і посилань
- •3.5 Базисні засоби маніпулювання реляційними даними
- •3.5.1 Реляційна алгебра
- •3.5.2 Реляційне числення
3.3 Фундаментальні властивості відношень
Зупинимося тепер на деяких важливих властивостях відношень, які виходять з приведених раніше означень:
Відсутність кортежів-дублікатів
Та властивість, що відносини не містять кортежів-дублікатів, виходить з визначення відношення як множини кортежів. У класичній теорії множин за визначенням кожна множина складається з різних елементів.
З цієї властивості витікає наявність у кожного відношення так званого первинного ключа - набору атрибутів, значення яких однозначно визначають кортеж відношення. Для кожного відношення принаймні повний набір його атрибутів володіє цією властивістю. Проте при формальному визначенні первинного ключа потрібне забезпечення його "мінімальності", тобто в набір атрибутів первинного ключа не повинні входити такі атрибути, які можна відкинути без збитку для основної властивості - однозначно визначати кортеж. Поняття первинного ключа є виключно важливим у зв'язку з поняттям цілісності баз даних. Первинний ключ таблиці використовується для унікальної ідентифікації кожного рядка таблиці і може містити в собі один або більш стовпців. Таким чином, для кожного первинного ключа існує точно один рядок і навпаки. Первинний ключ може включати будь-який стовпець таблиці. Ключ, що складається з декількох атрибутів, називається складовим ключем.
При виборі первинного ключа доцільно використовувати наступні правила:
необхідно вибрати стовпець або декілька стовпців, чиї значення залишатимуться унікальними, оскільки значення первинного ключа не повинні мінятися.
Єдина функція, яку повинен нести первинний ключ, - унікальна відмінність одного рядка від іншої; нічого іншого йому не властиво.
Краще якщо первинний ключ буде коротким і числовим. Короткі ключі простіше набирати, а для числових ключів простіше призначати наступне значення.
СУБД підтримують спеціальний тип даних - лічильник, призначений для генерації і зберігання унікальних ключів. Цей тип даних привласнюється полям, що є первинними або унікальними ключами.
Унікальний ключ має ті ж властивості, що і первинний, проте виконує інші функції - повинен забезпечувати унікальність, а первинний ключ - ідентифікацію рядка.
Наприклад, робота може вимагати, щоб у кожного співробітника був різний номер телефону. Отже, стовпець сотр_телефон повинен бути оголошений унікальним ключем. Як первинний ключ його вибрати не можна, оскільки співробітники можуть переміщатися усередині організації і їх телефонні номери можуть мінятися. На відміну від первинних ключів, таблиця може містити декілька унікальних ключів. Унікальний ключ може також бути складений з декількох стовпців і називатися складовим унікальним ключем.
У багатьох практичних реалізаціях РСУБД допускається порушення властивості унікальності кортежів для проміжних відношень, що породжуються неявно при виконанні запитів. Такі відношення є не множинами, а мультимножиною, що у ряді випадків дозволяє добитися певних переваг, але іноді приводить до серйозних проблем.
