Если для решения этой проблемы вы выбираете один из вышеперечисленных или что-то другое, это выбор дизайна, и я думаю, что в выборе есть более важные факторы, чем подсчет шагов, как вы сделали.
Являются ли эти отношения симметричными?
Это транзитивно?
Это что-то вроде родительского ребенка?
Действительно ли записи достаточно похожи, чтобы принадлежать к одной таблице?
Переименовав в 'my_table' и показывая только поля id и name, вы в значительной степени скрыли большую часть того, что происходит здесь. Что я могу вам сказать, так это то, что когда вы делаете свой выбор, вам нужно учитывать гораздо больше, чем подсчитывать, что входит в состав вставки. Что делать, когда вы сделаете запрос позже и захотите получить все строки, связанные с другой строкой? Есть ли аномалии обновления / удаления? и т.д.
Возможные решения, включая то, что вы предложили. У вас также может быть поле type
вместе с таблицей type
, в которой эти строки попадают в одну из нескольких категорий, и все строки в одной категории «связаны»
1. related_to field
2. many-to-many table
3. type/category field
4. parent-child hierarchy (there are many potential solutions for this)
Это зависит больше от характера отношений, чем от того, какие этапы участвуют во вставке. Прежде всего, вы, скорее всего, будете выбирать путь чаще, чем вставляете. Кроме того, в зависимости от того, могут ли эти строки объединяться в группы, вы можете рассмотреть хранимую процедуру для вставки, которая делает эти подсчеты спорными.