Итак, я создал эту систему для хранения пользовательских объектов с пользовательскими полями для приложения, которое я разрабатываю.Сначала у меня есть object_def, где я сохраняю определения объектов:
id | name | fields
------------------------------------------------------------
101 | Group 1 | [{"name": "Title", "id": "AbCdE123"}, ...]
102 | Group 2 | [{"name": "Name", "id": "FgHiJ456"}, ...]
Итак, у нас есть ID (INT), имя (VARCHAR) и поля (LONGTEXT).В полях находятся поля объекта, подобные этому: {id: string, type: string, name: string}[]
.
Теперь В таблице объектов у меня есть это:
id | object_def_id | object_values
------------------------------------------------------------
235 | 101 | {"AbCdE123": "The Object", ... }
236 | 102 | {"FgHiJ456": "John Perez", ... }
Где object_values также является LONGTEXT.С помощью этой системы я могу показывать объекты в таблице в моем приложении, используя JSON.parse ().
Теперь я узнал, что в MySQL есть тип JSON, и я хочу, чтобы он использовалэто делать запросы и прочее (я действительно новичок в этом).
Я изменил LONGTEXT на JSON, и теперь я хотел сделать SELECT, который показывает результаты, подобные этому:
#Select objects in group 1:
id | group | Title | ... | other_custom_field
-------------------------------------------------------
235 | Group 1 | The Object | ... | other_custom_value
#Select objects in group 2:
id | group | Name | ... | other_custom_field
-------------------------------------------------------
236 | Group 2 | John Perez | ... | other_custom_value
Идентификатор, затем имя группы (я могу сделать это с INNER JOIN), а затем все настраиваемые поля с соответствующими значениями.
Возможно ли это?Как я могу достичь этого (надеюсь, не меняя структуру базы данных)?Я изучаю MySQL, SQL и базы данных, поэтому я очень ценю вашу помощь.Спасибо!