РНР программирование

 Главная       Программа телепередач, энциклопедии и многие другие справочные материалы

 

                                          стр. 1. 2. 3. 4. 5. 6.

 

Давайте теперь аналогичным образом создадим другие таблицы.

Следующей по порядку идет таблица forums, в которой содержатся данные о разделах форума.

Примечание

Для удобства на форуме может быть создано несколько различных разделов. К примеру, на форуме по языкам программирования для того, чтобы не смешивать темы, относящиеся к различным языкам, имеет смысл создать следующие разделы: С++, PHP, Java и т. д.

В таблице forums присутствуют следующие поля: первичный ключ (id_forum), название раздела (name), правила форума (rule), краткое описание форума (logo), порядковый номер (pos), флаг, принимающий значение 1, если форум скрытый и 0, если общедоступный (hide).

Вот SQL-запрос, создающий таблицу forums

mysql> CREATE TABLE forums (
  id_forum int(6) NOT NULL auto_increment,
  name text,
  rule text,
  logo text,
  pos int(6) default NULL,
  hide int(1) default NULL,
  PRIMARY KEY  (id_forum)
) TYPE=MyISAM;

Структура форума может быть следующей: имеются список разделов, переход по которым приводит посетителя к списку тем раздела. При переходе по теме посетитель приходит к обсуждению этой темы, состоящих из сообщений других посетителей. Теперь создадим таблицу themes, содержащую темы форума:

mysql> CREATE TABLE themes (
  id_theme int(11) NOT NULL auto_increment,
  name text,
  author text,
  id_author int(6) default NULL,
  hide int(1) default NULL,
  time datetime default NULL,
  id_forum int(2) default NULL,
  PRIMARY KEY (id_theme)
) TYPE=MyISAM;

В таблице themes присутствуют следующие поля: первичный ключ (id_theme), название темы (name), автор темы (author), внешний ключ к таблице авторов (id_author), флаг, принимающий значение 1, если тема отмечена скрытой и 0, если отображается (hide) - это поле необходимо для модерирования, время добавления темы (time), внешний ключ к таблице форумов (id_forum), для того чтобы определить к какому разделу форума относится данная тема.

В таблице themes нормализация проведена частично, она содержит два внешних ключа: id_author и id_forum для таблиц посетителей и списка форумов, в тоже время в ней дублируется имя автора author, присутствующее также в таблице посетителей authors под именем name. Этот случай является примером денормализации предназначенной для того, чтобы не запрашивать каждый раз таблицу авторов при выводе списка тем и их авторов, чтобы обеспечить приемлемую скорость работы форума.

Создадим последнюю таблицу posts, в которой хранятся сообщения:

mysql> CREATE TABLE posts (
  id_post int(11) NOT NULL auto_increment,
  name text,
  url text,
  file text,
  author text,
  id_author int(6) default NULL,
  hide int(1) default NULL,
  time datetime default NULL,
  parent_post int(11) default NULL,
  id_theme int(11) default NULL,
  PRIMARY KEY  (id_post)
) TYPE=MyISAM;

В таблице posts присутствуют следующие поля: первичный ключ (id_post), тело сообщения (name), необязательная ссылка на ресурс, которую автор сообщения может ввести при добавлении сообщения (url), путь к файлу прикрепляемому к сообщению (file), имя автора (author), внешний ключ к таблице авторов (id_author), флаг, принимающий значение 1, если сообщение отмечено как скрытое и 0, если он отображается (hide) - это поле необходимо для модерирования, время добавления сообщения (time), сообщение ответом на которое является данное сообщение (parent_post), если это первое сообщение в теме - это поле равно 0, внешний ключ к тем (id_theme), для того чтобы определить к какой теме относится сообщение.

Убедимся, что все таблицы успешно созданы, выполнив команду SHOW TABLES.

DESCRIBE

Команда DESCRIBE показывает структуру созданных таблиц и имеет следующий синтаксис:

DESCRIBE tаble_name

Здесь tаble_name - имя таблицы структура которой запрашивается.

Замечание

Команда DESCRIBE не входит в стандарт SQL и является внутренней командой СУБД MySQL.

Давайте посмотрим, к примеру, структуру таблицы forums, выполнив следующий SQL-запрос:

mysql> DESCRIBE forums;

После выполнения этой команды, интерпретатор mysql выведет следующую таблицу

ALTER TABLE

Команда ALTER TABLE позволяет изменить структуру таблицы. Эта команда позволяет добавлять и удалять столбцы, создавать и уничтожать индексы, переименовывать столбцы и саму таблицу. Команда имеет следующий синтаксис:

ALTER TABLE table_name alter_spec

Параметр alter_spec имеет значения, представленные в таблице

Синтаксис

Описание команды

ADD create_definition [FIRST|AFTER column_name]

Добавление нового столбца create_definition. create_definition представляет собой название нового столбца и его тип. Конструкция FIRST добавляет новый столбец перед столбцом column_name. Конструкция AFTER добавляет новый столбец после столбца column_name. Если место добавления не указано, по умолчанию столбец добавляется в конец таблицы.

ADD INDEX [index_name] (index_col_name,...)

Добавление индекса index_name для столбца index_col_name. Если имя индекса index_name не указывается, ему присваивается имя совпадающее с именем столбца index_col_name.

ADD PRIMARY KEY (index_col_name,...)

Делает столбец index_col_name или группу столбцов первичным ключом таблицы.

CHANGE old_col_name new_col_name type

Изменение столбца с именем old_col_name на столбец с именем new_col_name и типом type.

DROP col_name

Удаление столбца с именем col_name.

DROP PRIMARY KEY

Удаление первичного ключа таблицы.

DROP INDEX index_name

Удаление индекса index_name.

Добавим в таблицу forums новый столбец test, разместив его после столбца name.

mysql> ALTER TABLE forums ADD test int(10) AFTER name;

Выполнив команду DESCRIBE forums, можно увидеть, что столбец test успешно добавлен после столбца name

Давайте переименуем созданный столбец test в текстовый столбец new_test

mysql> ALTER TABLE forums CHANGE test new_test text;

Как видно из рисунка, столбец успешно переименован:

При изменении только типа столбца, а не его имени, указание имени все-равно необходимо, хотя в этом случае оно будет фактически повторяться.

mysql> ALTER TABLE forums CHANGE new_test new_test int(5) not null;

Результат выполнения этого запроса приведен на рисунке:

 

Теперь удалим столбец new_test:

mysql> ALTER TABLE forums DROP new_test;

Как видно из рисунка, после удаления этого столбца таблица forums приобрела исходную структуру:

DROP TABLE

Команда DROP TABLE предназначена для удаления одной или нескольких таблиц:

DROP TABLE table_name [ ,table_name,...]

К примеру, для удаления таблицы forums нужно выполнить следующий SQL-запрос:

mysql> DROP TABLE forums;

                                                                            

 

1. Что такое PHP?

1. 1. Применение РНР при программировании сайтов

1.2. Программа регистрации и авторизации на вашем сайте

1.3. Программа регистрации и авторизации на сайте с шифрованием пароля

2. Глава посвящена программированию
вообще и программированию в частности
сайтов

3. MySQL элементы управления и взаимодействие с PHP

4. Русский перевод файла "httpd.conf" Для Apache 2.0

5. Русский перевод файла "php.ini"

 

главная                                                                                                                                                              стр. 1. 2. 3. 4. 5. 6.