Кортежи в ячейке таблицы базы данных?

Мне надо создать базу данных, содержащую таблицы объектов и подобъектов, с учётом связей.

Я изначально предполагал, что в таблице объектов будет столбец с объектами, а после него столбцы с категориями подобъектов. Внутри каждой ячейки содержится кортеж напрямую дочерних подобъектов. Из них алгоритм должен будет взять подобъекты, пойти в таблицу со всеми подобъектами и строить древо дальше, выбирая подобъекты второго уровня из категорий, связанных уже с каждым подобъектом первого уровня. Строится общее древо вариантов для объекта, после выбирается оптимальная комбинация объект-подобъекты. Т.е., у таблиц объектов и подобъектов в общем такой вид:

Таблица

Но sqlite не предполагает в типах столбца типы итерируемых объектов. А финальная задача - алгоритм, который бы с вводимыми ограничениями создавал граф и высчитывал результирующие параметры структуры объект-подобъекты.

Если же без кортежей в ячейках, то структура БД представляется так:

  1. Таблица всех объектов: столбцы те же, но в ячейках 0 или 1. Если для искомого объекта в ячейке 1, алгоритм идёт в таблицу, названную как столбец.
  2. Таблицы категорий: каждая строка - это суть есть кортеж, в котором кортеж[0] - объект или подобъект, а далее идут все дочерние для него подобъекты этой категории. Алгоритм забирает дочерние подбъекты и ищет их в таблице подобъектов.
  3. Таблица всех подобъектов: первый столбец - подобъекты, второй - их параметры, последующие столбцы - категории, в ячейках 0 или 1. Алгоритм забирает параметры подобъекта и идёт по 1-це в таблицы категорий -> см. п. 2., если в ячейках для подобъекта не везде 0, что значило бы, что он - "лист".
  4. Так формируется древо всех возможных вариантов, а потом выбирается оптимальная комбинация объект-подобъекты.

Можно ли реализовать задачу с кортежами в ячейках, или надо строить БД как я описал во втором случае? Или, может, и во втором случае рассуждения неверны?


Ответы (0 шт):