Комментарии

Первичные, внешние ключи и атрибут автоматического приращения
( 0 Голосов )

Первый столбец рассматриваемой здесь таблицы определяется следующим образом:

"id"   INTEGER NOT NULL  auto_increment

Как правило, первый столбец таблицы выделяется для идентификатора, как показано в приведенной выше строке кода, выполняя особую роль в таблице. Далее указываются тип данных INTEGER и два атрибута: NOT NULL и AUTO_INCREMENT. В частности, атрибут NOT NULL обозначает, что в данном столбце непременно должно храниться какое-нибудь значение, тогда как атрибут AUTOINCREMENT имеет особое назначение и связан с определением PRIMARY KEY первичного ключа, следующим в сценарии непосредственно за определением последнего столбца таблицы.

Первичный ключ имеет совершенно однозначное значение для каждой строки таблицы. Если попытаться ввести в таблицу новую строку, в которой повторяется значение уже существующего первичного ключа (в данном случае — значение, такое же, как и у имеющегося уже идентификатора), то будет выдано сообщение об ошибке и операция ввода строки в таблицу завершится неудачно. Первичные ключи полезны тем, что по ним совершенно однозначно выбираются отдельные строки из таблицы. Как правило, столбец с первичным ключом не изменяется. Он содержит идентификатор отдельной строки, при условии, что она присутствует в таблице.

Первичные ключи нередко используются в качестве внешних ключей. Внешний ключ — это столбец таблицы А с таким же значением, как и у первичного ключа в таблице В. Например, в таблице # weblinks базы данных Joomla имеется столбец cat id. Он содержит внешний ключ к таблице # categories, где столбец id содержит первичный ключ. В выборочных данных присутствует категория Joomla Specific Links с идентификатором 32, а в таблице # weblinks значение внешнего ключа в столбце catid совпадает со значением идентификатора в столбце id таблицы # categories. Поэтому когда веб-ссылка назначается для категории Joomla Specific Links, в ее столбце catid устанавливается значение 32, совпадающее с идентификатором в столбце id таблицы # categories. Как будет показано далее в этой главе, внешние ключи служат для соединения нескольких таблиц в одном запросе базы данных.

Если значение каждого первичного ключа должно быть однозначным и не повторяющимся во всей таблице, то как правильно выбрать идентификатор, который еще не используется в другой строке? Для этой цели служит атрибут AUTOINCREMENT. Он указывает базе данных создать автоматически однозначное значение для столбца id (как правило, следующее еще не использовавшееся целое значение). И когда мы вводим в таблицу новую строку, то нам уже не нужно беспокоиться о том, чтобы значение идентификатора было однозначным. Мы можем оставить его не установленным или же установить в нем пустое значение NULL. Следующее еще не использовавшееся целое значение идентификатора будет получено в базе данных MySQL автоматически, обеспечив тем самым его однозначность в столбце id.

Но в сценариях базы данных joomla. sql и sampledata.sql принят другой подход: значения для столбцов первичных ключей указываются специально. Это особый случай, когда заранее известно, что работа с базой данных начинается с пустой таблицы, а следовательно, для столбцов первичных ключей можно указать значения специально, зная, что они окажутся однозначными. А когда база данных уже используется, тогда неизвестно, какие именно значения идентификаторов уже используются в ней, и поэтому необходимо, чтобы она сама выбирала эти значения.

Каждую таблицу принято определять с первичным ключом. Как правило, для этого подходит указанная выше схема: тип данных INTEGER, атрибуты NOT NULL и AUTO_ INCREMENT и вполне определенный первичный ключ. Подробнее об этом речь пойдет далее. Глядя на определения остальных столбцов в рассматриваемом здесь примере, можно обнаружить в них типы данных VARCHAR, TEXT, TINYINT и DATETIME.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости