Документация на MySQL

         

Таблицы


# The Widget table. # # Detailed information on a widget. Linked to by Purchase_Order_Item # by way of the widget_id field. Linked to Widget_Color by way of # the widget_color field, and to the Widget_Size table by way of the # widget_size field. CREATE TABLE Widget_Table ( widget_id MEDIUMINT(8) NOT NULL AUTO_INCREMENT, widget_name CHAR(60) NOT NULL, widget_color_id MEDIUMINT(8) NOT NULL, widget_size_id MEDIUMINT(8) NOT NULL, widgets_on_hand SMALLINT NOT NULL, widget_price FLOAT(8,2) NOT NULL, commission_percent FLOAT(2,2) NOT NULL, PRIMARY KEY (widget_id), KEY (widget_name), KEY (widget_color_id,widget_size_id) );

Первая строка сообщает СУБД MySQL, что мы определяем таблицу по имени Widget_Table. Следующие шесть строк определяют поля, которые таблица содержит, тип данных, которые входят в них, и какие атрибуты эти поля имеют.

Прежде, чем Вы сможете создать эту таблицу, Вы должны создать пустую базу данных. В MySQL это выполнено посредством программы .

prompt> mysqladmin create Widget-DB

Одна из множества основных концепций в хорошем проекте реляционной базы данных это то, что Вы никогда не должны хранить избыточные данные. В случае Widget_Table это отражено в полях Widget_color_id и widget_size_id. Эти два поля могли бы быть строками. Взамен мы делаем их указателями на другие таблицы, которые будут содержать одну запись для каждого возможного значения, которое может содержать такое поле.

Это сделано по двум причинам:

  • Непротиворечивость
  • Централизация сложности

Первая причина - фактически подслучай второй. Гораздо проще поддержать непротиворечивость в базе данных, если Вы используете таблицы, чтобы искать значения. Это будет предохранять людей от создания прикладных программ, которые используют все от "L" до "HUGE", чтобы обозначить, что размер рассматриваемого объекта большой.

Widget_id поле - среда (3 байт) установленное по размеру целое число. Это имеет специальные атрибуты NOT NULL и AUTO_INCREMENT. NOT NULL является ANSI SQL стандартом и определяет что, когда кто-то вводит widget информацию в эту таблицу, они должны дать некоторое значение для этого поля. Если не дали, MySQL назначит полю значение по умолчанию. Конечно, если значение по умолчанию было определено, то будет использоваться оно, когда не задано никакого значения. Если же оно не определено, то поле получит значение, исходя из его типа.

AUTO_INCREMENT специфический атрибут MySQL. Если Вы вставляете ноль в это поле MySQL, автоматически назначит значение, которое на единицу выше, чем самое высокое предыдущее значение, назначенное к этому полю в этой таблице. Это простой метод для производства уникальных идентификаторов для нового widgets, поскольку они введены в таблицу.

Мы также определяем несколько ключей. Когда Вы назначаете полю атрибут AUTO_INCREMENT, Вы должны также определить это поле как первичный ключ. Вы можете иметь только один первичный ключ на таблицу. Только одно поле на таблицу может иметь AUTO_INCREMENT атрибут.

Мы также создаем вторичные индексы использованием слова KEY. Индексирование значительно увеличивает быстродействие запросов и объединений. Индексы могут включать больше чем одно поле. Если Вы имеете индекс, который включает больше чем одно поле, Вы не нуждаетесь в создании другого индекса с первым полем в составном индексе.

Мы определили Widget_Table. Теперь надо определить путь слежения за заказами. Для этой цели мы определяем таблицу Purchase_Order.




Содержание  Назад  Вперед