WedX - журнал о программировании и компьютерных науках

Ребенок Mysql с несколькими родителями одного типа

У меня есть рецепты в базе данных mysql (для веб-сайта), которые мне нужно будет прикрепить к другим рецептам в качестве родительских дочерних отношений. Мне нужен один рецепт, чтобы иметь несколько родительских рецептов. Первоначально я думал, что у меня может быть столбец parent_id в таблице recipes, но если рецепт имеет несколько родителей, это не работает. Затем я подумал, что мне просто нужно создать таблицу поиска, в которой parent_id и child_id совпадают, но и родительский, и дочерний элементы являются рецептами, поэтому как запрос узнает, чтобы различать, кто является родителем, а кто дочерним, когда я делаю выбор утверждение? Имеет ли это смысл??

26.08.2016

  • Ничто из того, что вы упомянули, не пугает меня с точки зрения схемы. Можете ли вы описать тип запросов, которые вы планируете выполнять? 26.08.2016
  • Итак, рецепты имеют несколько родителей и несколько детей? 26.08.2016
  • Я не совсем уверен во всем объеме, так как мне придется сначала разобраться с этой частью, а затем строить по одной части за раз; но следующим шагом будет перечисление всех рецептов, которые я полагаю, с отступом - array('Chicken Salad') 26.08.2016
  • Я не совсем уверен во всем объеме, так как мне придется сначала разобраться с этой частью, а затем строить по одной части за раз; но следующим шагом будет перечисление всех рецептов, которые я полагаю, в виде отступа - array( 'Куриный салат' =›'Особая заправка тети Джинс', 'Тако-салат' =›'Особая заправка тети Джинс', ); getAllRecipes(){ $sql = SELECT * FROM recipes; } getChildRecipes($parent_id){ $sql = SELECT * FROM recipes WHERE parent_id = $parent_id; } 26.08.2016
  • а затем объединить их вместе, может быть, в php или что-то еще, чтобы добиться такого результата Куриный салат Тетушка Джинсы Особая заправка Чеснок Лимонный соус Пюре Тако Салат Тетушка Джинсы Специальная заправка 26.08.2016
  • Клубничка, да точно. Что меня смущает, так это то, что все они находятся в одной таблице. но у рецепта есть несколько родительских и дочерних рецептов, которые все являются рецептами. 8( 26.08.2016

Ответы:


1

Я бы использовал две таблицы: recipes(ID, ...) и connections(pID, cID)

В каждом рецепте есть ID, а внутри connections вы сохраняете связь родитель-потомок.

recipes будет выглядеть так

(0, Soup)
(1, Cookie)
(2, Cookiesoup)

connections будет выглядеть так

(0, 2)
(1, 2)

Чтобы запросить все дочерние рецепты Soup с ID = 0, вы можете использовать это

SELECT * FROM recipes JOIN connections ON recipes.ID = connections.cID WHERE connections.pID = 0

Чтобы запросить все родительские рецепты Cookiesoup с ID = 2, вы можете использовать это

SELECT * FROM recipes JOIN connections ON recipes.ID = connections.pID WHERE connections.cID = 2
26.08.2016
  • @marcus У меня такой же сценарий, но он глубже одного уровня. Интересно, как запросить всех родителей/детей с рекурсией? 02.09.2019
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]