Схема БД в Друпале — структурированный массив, представляющий одну или более таблиц, и их связанные ключи и индексы. Схема определяется хуком (), который обычно находится в файлеmodulename.install.
Реализовав () и описав в нем таблицы, которые должен создавать модуль, можно легко создавать и удалять эти таблицы во всех поддерживаемых СУБД. Отпадает необходимость работать с разными диалектами SQL для создания или изменения таблиц в поддерживаемых СУБД.
Хук () должен вернуть ассоциативный массив, ключи которого соответствуют таблицам, которые определяет модуль.
Определены следующие ключи:
'description': Строка, описывающая эту таблицу и ее назначение. Ссылки на другие таблицы должны быть заключены в фигурные скобки. Например, поле описания таблицывыглядит так: ‘Хранит информацию о заголовке и теле каждой{node}поревизионно.’'fields': Ассоциативный массив ('fieldname' => specification), описывающий столбцы таблицы БД. Спецификация также представляет собой массив. Определены следующие параметры спецификации:
'description': Строка, описывающая это поле и его назначение. Ссылки на другие таблицы должны быть заключены в фигурные скобки. Например, описание поляvidтаблицы node может выглядеть так: ‘Всегда содержит самое большое (самое релевантное) значение{}.vidдля данногоnid.’'type': Общий/базовый тип данных:'varchar','int','serial'’float’,'numeric','text','blob'или'datetime'. Большинство типов просто «указывают» на соответствующе типы данных СУБД. Для автоинкрементных полей используется спецификатор'serial', который расширяется до'int auto_increment'в MySQL.'size': Размер данных:'tiny','small','medium','normal','big'. Это своеобразная подсказка по поводу того, какое самое большое значение будет хранить данное поле, определяющая также, какой из типов данных СУБД будет использоваться (например, в MySQL — TINYINT, INT или BIGINT).'normal', значение по умолчанию, определяет базовый тип (например, INT, VARCHAR, BLOB, и т.д. в MySQL).
Не все размеры доступны для различных типов данных. В описании () даны возможные комбинации.
'not null': Если true, значенияNULLв данном столбце будут запрещены. По умолчанию значение false.'default': Значение поля по умолчанию. Здесь нужно обратить внимание на следующее:'','0'и 0 — различные значения. Если для поля типа'int'значением по умолчанию было задано'0', это не сработает, поскольку'0'есть строка, содержащая символ 0, а не целое число.'length': Максимальная длина поля типов'varchar'или'text'. Для других типов данных игнорируется.'unsigned': Булевская переменная, показывающая, является ли один из типов'int','float'или'numeric'знаковым или беззнаковым. По умолчанию false. Для остальных типов данных игнорируется.'precision','scale': Для полей типа'numeric'показывает точность (число значащих цифр) и масштаб (десятичные цифры после запятой). Оба значения обязательны. Для остальных типов данных игнорируются.
Все параметры, кроме 'type', опциональны, не считая того, что для столбцов типа 'numeric' должны быть указаны значения 'precision' и 'scale'.
'primary key': Массив из одного или более спецификаторов ключевых столбцов (см. ниже), которые формируют первичный ключ.'unique keys': Ассоциативный массив уникальных ключей ('keyname' => specification). Каждая спецификация есть массив из одного или более спецификаторов ключевых столбцов (см. ниже), которые формируют уникальный ключ таблицы.'indexes': Ассоциативный массив индексов ('indexame' => specification). Каждая спецификация есть массив из одного или более спецификаторов ключевых столбцов (см. ниже), которые формируют индекс таблицы.
Спецификатор ключевого столбца есть либо строка с именем столбца, либо массив из двух элементов — имени столбца и длины, определяющей префикс данного столбца.
В качестве примера приведем подмножество определения схемы таблицы 'node' CMS Drupal. Имеется четыре поля ('nid', 'vid', 'type' и 'title'), первичный ключ — поле 'nid', уникальный ключ 'vid' - поле'vid', и два индекса - 'nid' (поле 'nid') и 'node_title_type' (поле 'title' и 4 первых байта поля 'type'):
$schema['node'] = (
'fields' => (
'nid' => ( 'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE
),
'vid' => ( 'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0
),
'type' => ( 'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => ''
),
'title' => ( 'type' => 'varchar',
'length' => 128,
'not null' => TRUE,
'default' => ''
),
),
'primary key' => ( 'nid' ),
'unique keys' => ( 'vid' => ( 'vid' ) ),
'indexes' => (
'nid' => ( 'nid' ),
'node_title_type' => ( 'title', ( 'type', 4 ) ),
),
);
Смотри также
()
Функции
| Имя | Описание |
|---|---|
includes/ |
Добавляет новое поле в таблицу. |
includes/ |
Добавляет индекс. |
includes/ |
Добавляет первичный ключ. |
includes/ |
Добавляет уникальный ключ. |
includes/ |
Создает новую таблицу из описания таблицы в нотации Друпала. |
includes/ |
Генерирует SQL-код для создания новый таблицы из описания схемы Друпала. |
includes/ |
Удаляет поле в таблице БД. |
includes/ |
Удаляет индекс в таблице БД. |
includes/ |
Удаляет первичный ключ. |
includes/ |
Удаляет таблицу из БД. |
includes/ |
Удаляет уникальный ключ. |
includes/ |
Return an array of field names from an array of key/index column specifiers. |
includes/ |
Устанавливает значение по умолчанию для поля таблицы БД. |
includes/ |
Убирает у поля значение по умолчанию. |
includes/ |
Возвращает id последнего вставленного ряда. Можно безопасно использовать в thread safe режиме. |
includes/ |
Переименовывает таблицу БД. |
includes/ |
This maps a generic data type in combination with its data size to the engine-specific data type. |
includes/ |
Given a Schema API field type, return the correct %-placeholder. |
includes/ |
Возвращает схему определенной таблицы или всей базы данных сайта. |
includes/ |
Возвращает необработанную и не изменённую версию схемы таблицы модуля. |
includes/ |
Создаёт все таблицы БД, определённые в реализации () модуля. |
includes/ |
Извлекает список столбцов таблицы. Этот список может использоваться при составлении SQL-запросов. |
includes/ |
Удаляет все таблицы, которые модуль описывает в хуке(). |
includes/ |
Сохраняет запись в базу данных согласно схеме. |
includes/ |
Генерирует SQL-выражение для поля, которое может использоваться при создании или изменении таблицы. |
includes/ |
Устанавливает специальные, относящееся к механизму СУБД свойства для поля. |
includes/ |
Заполняет необходимые значения по умолчанию для определений таблицы, возвращаемых хуком (). |
Источник:


Апрель 7th, 2012
admin
Опубликовано в рубрике
Метки: