Я использую существующую базу данных и перехожу на Drupal 7.
Унаследованная модель базы данных имеет базовую таблицу объектов с общими столбцами, а затем столбец типа, который указывает, является ли объект изображением, образцом, таксоном и т. Д. Каждый «тип» имеет свою собственную отдельную таблицу столбцов (таблица изображений, таблица образцов, таблица локальностей и т. д.), привязанная к таблице базовых объектов с помощью внешнего ключа.
В некоторых случаях, например, изображения, есть столбец, который ссылается на идентификатор образца. Другими словами, несколько изображений могут принадлежать одному и тому же «specimen_id». Этот идентификатор является идентификатором базового объекта соответствующего образца.
При переходе на Drupal я создал новую сущность для таблицы базовых объектов, а затем определил пакеты для каждого типа базового объекта. Столбцы, которые являются частью каждой таблицы типов, теперь я прикрепляю к пакетам во время установки модуля. Я делаю это, определяя массив полей и экземпляров полей, затем перебирая массивы и вызывая field_create_field()
и field_create_instance()
.
Это правильный способ сделать это?
Когда я создаю поле внешнего ключа, например specimen_id, откуда оно знает, что оно ссылается на идентификатор объекта базового объекта для данного образца?
Чтобы установить эти отношения, должен ли я на самом деле использовать hook_field_schema()
для их определения, так как он имеет настройку внешнего ключа, а затем создавать поля и экземпляры полей?
Конечно, это становится актуальным при создании представлений и необходимости извлечения информации. Я думаю, это можно сформулировать как связка <=> связок. Во время операций CRUD я могу получить то, что мне нужно, когда мне это нужно, используя идентификаторы.
Любая помощь или понимание приветствуется.