Всё верно, состоавной первичный ключ сделать таким образом не получится. Индексы можно добавлять таким образом (пример из pvalues):LutsenkoDenis писал(а):ага, ну ок.
- 1. Как задать составной первичный ключ? Или ключ не инкрементарный? И т.д. Судя по коду никак. Или я не прав?
Код: Выделить всё
// //new table if (strpos($definition, "auto_increment")) { $definition .= ", PRIMARY KEY(" . $field . ")"; //$definition.=", KEY(".$field.")"; }
Код: Выделить всё
pvalues: INDEX (PROPERTY_ID)
pvalues: INDEX (OBJECT_ID)
Возможно и так. Данная реализация удобней как раз тем, что для поддержания актуальной структуры данных достаточно внести изменения в код конкретного модуля. Т.е. модуль сам заботится о том, чтобы для него всегда была в базе нужная структура данных. Децентрализация структуры и отсутсвие необходимости upgrade-скриптов это очень удобно. Не буду спорить о правильности, просто сужу по своему опыту в других проектах.LutsenkoDenis писал(а):2. Структура данных как правило описывается отдельно от кода. Чтоб не нужно было бегать по коду и выискивать структуру а посмотреть в модели данных и увидеть модель всего прложения стразу. Структура(модель данных программы) поддерживается и обновляется путём создания модифицирующих скриптов.
initial.sql в целом атавизм, который крайне редко используется, но суть его в следующем -- sql-сценарии в этом файле запускаются в процессе установки/переустановки модуля, при этом система пытается этот файл изменить и закомментировать выполненные команды, чтобы они не исполнялись второй раз (при переустановке). Для корректной работы последней части необходимо, чтобы в linux-версии стояли права записи в этот файл. Но, повторюсь, я этим механизмом ни в одном из существующих модулей не пользовался.LutsenkoDenis писал(а): 3. Что должно быть тут:Код: Выделить всё
$fileName = DIR_MODULES . $this->name . "/initial.sql";
Э... не очень понял о каком LogFile идёт речь? Нет такой функции... а LoadFile это просто загрузка файла.LutsenkoDenis писал(а): 4. Зачем нужен LogFile? Или DebMes мало?[/list]Код: Выделить всё
$data = LoadFile($fileName);