Я проектирую db для автозапчастей. Мне нужно создать структуру, где будут группы, подгруппы и автозапчасти. Каждая часть будет принадлежать одной подгруппе, но подгруппа может иметь родительскую подгруппу. Эта родительская подгруппа может принадлежать подгруппе более высокого уровня. В итоге будет только группа - корень. Так что это классическое дерево. Проблема в том, что фиксированного числа групп нет. Иногда это может быть Group -> Sub-Group -> Auto Part, иногда это может быть Group -> Sub-Group -> Sub-Group -> Sub-Group -> Auto Part.Связь на одном столе
Теперь у меня есть три таблицы: группы, подгруппы, автопарки. Как я должен проектировать отношения между подгруппами? Это хорошая идея сделать внешний ключ, называемый родительской подгруппой в таблице SubGroups, который будет ссылаться на другую строку в той же таблице? В случае, если на верхнем уровне имеется только группа, это свойство будет равно нулю.
Благодарим вас за ответ. Есть одна вещь, о которой я беспокоюсь. При вставке новой подгруппы в приложение я еще не буду иметь подсетей. Что делать, если я применил это решение в обратном порядке? Я имею в виду, что поле reports_to будет идентификатором подгруппы более высокого уровня, и когда это поле будет пустым, то подгруппа будет иметь только одну родительскую группу. –
Да, я имел в виду, что только .... вы должны указать id верхней группы id, который будет сообщать. –
Предположим, я добавляю подгруппу в dat-таблицу, ее соответствующий идентификатор report_to будет содержать свой идентификатор подгруппы (означает его родительский (например, xyz) id группы) .... и этот родительский id (xyz) будет содержать основную родительский идентификатор в поле reports_to –