Я бы взял что-то в строке ниже:
Вариант 1:
Листинг
- перечисление_тип_ид: [числовой]
- other_fields_here: [строка]
Типы списков
- id: [числовой]
- имя: [string]
Опция 2:
- Общий список
- your_generic_fields_here: [string]
- child_id: default null [numeric] -> указывает на тип (франшиза, бизнес и т. д.)
Вышесказанное также может быть сделано наоборот;ребенок связывается с родителем, а не родитель с ребенком.Просто добавьте parent_id в списки ниже.
Определите, какие столбцы вам нужны, а какие разделены между типами списков, и поместите их в общую таблицу листингов;создайте другие таблицы для остальных и используйте parent_id для общих данных;или просто полностью использовать разные таблицы.
Laravel
Я бы не стал слишком усложнять это, просто используйте три модели, основанные на базовой модели Листинга;базовая модель может содержать тип перечисления и другие данные, как показано здесь .
Подробнее о полиморфных отношениях можно прочитать здесь .