ро видавництвах (
Publishers ). p> Параметри таблиці товарів
Books описані в таблиці 3.
Таблиця 3. Поля таблиці книг (Books).
Поле таблиці
Тип даних
Опис
Id
MEDIUMINT UNSIGNED
Унікальний ідентифікатор товару
Category
SMALLINT UNSIGNED
Категорія, до якої стосується ця книга
Name
VARCHAR (255)
Назва книги
Author
SMALLINT UNSIGNED
Автор книги
Publisher
SMALLINT UNSIGNED
Видавництво
ISBN
CHAR (13)
Унікальний номер книги ISBN
ImageHREF
VARCHAR (255)
Шлях до файлу зображення обкладинки книги
Synopsis
TEXT
Короткий опис
PagesCount
SMALLINT
Число сторінок
PublicationDate
YEAR
Дата публікації
AppearDate
DATE
Час надходження книги в магазин
Price
DECIMAL (6,2)
Ціна книги
Типи даних для полів визначені відповідно з особливостями реальних властивостей товару і специфічними властивостями бази даних MySQL. Так, для назви книги (поле Name ) визначена максимальна довжина 255 символів, і використовується тип VARCHAR , а не CHAR , оскільки кількість літер у назві книг може бути різним. Використання полів змінної довжини дозволяє уникнути зберігання непотрібною інформації.
Взагалі кажучи, питання не так однозначна, оскільки браузери видаляють подвійні пробіли в відповідності зі специфікацією HTML, а таблиці з постійною довжиною запису обробляються швидше таблиць із змінною довжиною запису. Але в нашому випадку тип змінної довжини (VARCHAR, TEXT) використовується і в інших полях таблиці, тому використання типу CHAR не вплине якісно на швидкість обробки записів. p> Довжина поля визначається максимально можливими або достатніми для більшості записів значеннями. Так, для полів назви книги (поле Name ) і короткого описи (поле Synopsis ) визначена довжина 255 символів, щоб гарантувати правильне уявлення найменування та опису товару. У той же час для поля ISBN 13 символів достатньо, щоб точно описати унікальний ISBN-номер книги.
Номер у даному випадку описується в символьному вигляді, оскільки ISBN може мати вигляд як "1-123-12345-1", так і "1-1234-1234-1". p> Файли з зображеннями розробники MySQL рекомендують зберігати у вигляді зовнішніх файлів на диску, а в базі даних MySQL вказувати тільки шляхи до цих файлів - це істотно збільшує швидкість роботи бази даних та програми в цілому, дозволяє кешувати зображення на стороні HTTP-сервера. Максимальна довжина шляху файлу в більшості операційних систем обмежується 255 символами. Для описи числа сторінок (поле PagesCount ) досить передбачити тип SMALLINT , використовує 2 біти або діапазон від -32768 до +32767. Нам зовсім не потрібно так багато, але наступний менший тип TINYINT відповідає діапазону -128 до +127, або максимально 255 (у разі беззнакового типу), а цього недостатньо. Дата публікації (поле PublicationDate ) описана як тип YEAR , оскільки інтерес представляє саме рік публікації. У той же час для часу надходження книги в магазин (поле AppearDate ) вибраний тип DATE , так як по цьому полю буде проводитись пошук найбільш нових книг (наприклад, надійшли за останній тиждень). Ціна книги зберігається в полі Price з типом DECIMAL (6,2) , для даного проекту цього достатньо. Поля Author (Інформація про автора) і Publisher (інформація про видавництво, випустило книгу) описані як SMALLINT UNSIGNED , вони є посиланнями на записи в таблицях Authors і Publishers , тобто зовнішніми ключами.
Зовнішній ключ - поле чи набір полів однієї таблиці, які є ключем іншої таблиці; використовується для індексації логічних зв'язків між таблицями. p> Запис про книгу однозначно ідентифікуються за допомогою унікального поля Id , яке є первинним ключем таблиці.
Основні вибірки з таблиці Books будуть проводитися за категоріями (поле Category ), оскільки книги однозначно прив'язані до категорії, до якої вони належать, з урахуванням дати появи книги в магазині (поле AppearDate ), тому...