Page 109 - 4636
P. 109
Вибір відповідних ключів
Переконайтеся в тому , що обрані ключі унікальні. У даному випадку ми створили спеціальні
ключі для клієнтів (CustomerID) і для замовлень (OrderID), оскільки у цих реальних об'єктів може не
виявитися ідентифікатора, який гарантовано є унікальним. Для книг створювати подібний
ідентифікатор не потрібно, він у них вже є - це його номер ISBN. Для таблиці Order_Items можна, за
бажанням, додати один ключ, проте комбінація атрибутів OrderID і ISBN буде унікальною, якщо
замовлення двох і більше примірників однієї і тієї ж книги розглядається як один рядок. З цієї причини
в таблицю Order_Items включений стовпець Quantity .
Уникнення проектів з великою кількістю пустих атрибутів
Якщо виникає необхідність добавити в базу даних рецензію на книги, то існує, хоча б два
варіанти, як це зробити. Обидва вони представлені на рис. 5.7.
Books (книги)
ISBN Author (Автор) Title (Назва) Price Review
(Ціна) (Рецензія)
5-8459-0046-8 Майкл Морган Java2.Посібник користувача 88.40
5-8459-1082-X Крістофер Негус Linux. Біблія користувача 98.20
5-8459-1134-6 Марина Смоліна CorelDrawX3. Самовчитель 68.20
Books_Reviews (Рецензії на книги)
ISBN Review
(Рецензія)
Рисунок 5.7 – Створення поля Review (або таблиці для рецензій)
Перший варіант передбачає додавання стовпця Review у таблицю Books. У такому випадку
кожну книгу буде супроводжувати поле з рецензією. Якщо в базі даних багато книг і рецензент не має
наміру робити огляд їх усіх, у багатьох рядках цей атрибут не матиме значення (або, як кажуть, буде
мати порожнє значення).
Наявність великої кількості нульових значень в базі даних - погана практика. Це означає зайве
місце на жорсткому диску, проблеми з підрахуванням підсумкових сум та виконанням інших функцій
над числовими стовпцями. Коли користувач бачить у таблиці нульове значення, він не знає, чи є даний
атрибут незначущим, чи наявна у базі даних помилка, або дані просто ще не введено .
Більшості проблем з нульовими значеннями можна уникнути , скориставшись іншим підходом
до проектування . Для цього можна використовувати другий варіант, представлений на рис. 5.7. Тут в
таблиці Book_Reviews перераховуються тільки книги і наводяться їх рецензії.
Зверніть увагу, що в основі цього підходу лежить ідея рецензування книг єдиним рецензентом,
тобто між таблицями книг і рецензій існує відношення "один до одного ". Якщо ви хочете
підтримувати кілька рецензій для однієї і тої ж книги, виникне відношення "один до багатьох", і в
якості початкового проекту необхідно вибрати другий варіант. Крім того, якщо для книги
підтримується одна рецензія, можна використовувати ISBN як первинний ключ у таблиці
Book_Reviews. За наявності багатьох рецензій для кожної книги необхідно ввести унікальний
ідентифікатор для кожної рецензії.
Типи таблиць
Як правило, бази даних складаються з двох типів таблиць:
прості таблиці, що описують реальні об'єкти. вони можуть мати ключі до інших простих
об'єктів, які підтримують відношення типу "один до одного" і "один до багатьох". Наприклад, один
106