Список заданий для схемы базы данных - PullRequest
0 голосов
/ 15 марта 2020

Я работаю над базой данных для упорядоченного списка задач. Поскольку некоторые задачи повторяются, мне нужен «список задач», который может снова состоять из задач и других списков задач.

Найдите пример здесь

В приведенном выше примере TaskList 1 состоит из [TaskList2, Task5, Task 6, TaskList3], где TaskList2 состоит из [Task1, Task2, Task3 , Task4] и т. Д.

Мой главный вопрос: каков наилучший способ настроить схему базы данных для обработки этого вложенного полиморфизма? (Я использую Laravels ORM)

1 Ответ

0 голосов
/ 15 марта 2020

Концептуально, ваша проблема решается путем рассмотрения списка задач как упорядоченной совокупности элементов списка задач, которые являются задачами или (другими) списками задач, как описано следующей диаграммой классов:

enter image description here

Схема БД, реализующая эту концептуальную модель, обеспечивается следующими схемами таблиц (где PK / FK = первичные / внешние ключи и? = Необязательно):

tasklists( PK id, name)
tasks( PK id, name)
tasklistitems( 
    FK tasklist REF tasklists, 
    seq_no, 
    FK taskitem? REF tasks, 
    FK tasklistitem? REF tasklists
)

так что каждая строка tasklistitems связана со списком задач через свой первый атрибут (внешний ключ) и ссылается на задачу или список задач через соответствующие необязательные атрибуты внешнего ключа taskitem и tasklistitem.

Обратите внимание, что атрибут порядкового номера элементов списка задач реализует их порядок.

...