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
   104   105   106   107   108   109   110   111   112   113   114