Я не профессионал в MySQL, но хочу сделать что-то вроде Object Layer над реляционными таблицами MySQL.
Я хочу иметь очень много "структур" с полями типа "bigint", "longtext", "datetime", "double", которые хранятся всего в 7 таблицах.
entity_types (et_id, et_name) - список "структур";
entity_types_fields (etf_id, parent_et_id, ....., etf_ident, etf_type) - список свойств структуры, хранящихся в одной таблице для ВСЕХ структур; etf_type содержит значение int (0,1,2,3), которое ссылается на одну из 4 описанных ниже таблиц.
сущностей (e_id, et_id) - список всех доступных сущностей (id и id типа сущности)
и 4 таблицы данных (содержащие все данные для сущностей) -
entity_props_bigint (parent_e_id, parent_etf_id, ep_data) - для свойств данных BIGINT
entity_props_longtext (parent_e_id, parent_etf_id, ep_data) - для свойств данных LONGTEXT
entity_props_datetime (parent_e_id, parent_etf_id, ep_data) - для свойств данных DATETIME
entity_props_double (parent_e_id, parent_etf_id, ep_data) - для свойств данных DOUBLE
Как лучше всего делать выборку из такого слоя данных?
Пусть у меня есть список e_id (id сущностей), каждая сущность может иметь любой тип. Я хочу получить предопределенный список свойств. Если некоторые объекты не имеют такого свойства, я хочу, чтобы оно было равно NULL.
У вас есть информация о том, как это сделать? Может быть, у вас есть ссылки или вы уже имели дело с такими вещами.
Спасибо!