Мое приложение имеет некоторые Страницы, которые обладают некоторыми Атрибуты. Страницы может быть Связанные вместе. Я хотел бы мою структуру базы данных для поиска лучшей поддержки для Ссылки, которые содержат определенные атрибутов, которые принадлежат Страницы. Ссылки - это коллекция страниц и страниц, которая может содержать много ссылок.Поиск по нескольким таблицам
Моя stucture база данных в настоящее время следующим образом
PAGE:
id
title
content
-
ATTRIBUTE:
id
page_id
name
value
-
LINK:
id
title
-
PAGE_LINK:
page_id
link_id
Так сказать, у меня был рецепт Страница под названием 'Mash Картофель' и ингредиенты Page называется 'Картофельный', которые содержатся в Ссылка'Картофельная ссылка'. 'Mash Картофель' имеет следующие Атрибуты - Питание: Обед, Flavor: чабер, Сложность: Легкая, И 'Картофель' имеет Атрибуты - Сезон: Осень, Цена: Дешевые.
Я хочу, чтобы быть в состоянии найти ссылку, которая Дешево, чабер и в сезон осенью и получить взамен «Картофельный Link».
Как написать этот запрос в SQL и является ли это лучшей структурой базы данных для запроса чего-то подобного?
если 'PAGE' к 'LINK' является' один-к-one' (= 'LINK' не разделяют разные' PAGE's), то вы должны вставлять 'page_id' в' LINK таблицу. – yair
Что значит 'LINK.title'? Это ссылка на «PAGE.title»? Если это так, то его лучше заменить на 'LINK.referred_page_id'. И тогда есть * действительно * не нужно для таблицы 'LINK' 'и *' PAGE_LINK'. Используйте одну таблицу LINK с полями '{id, referring_page_id, refer_page_id}'. Если вы одобряете мои комментарии, я могу дать ответ с соответствующим SQL-запросом. – yair
Возможно, «Link» не было лучшим именем для таблицы. «Ссылка» - это сборник «Страницы», все связанные друг с другом. «Страница» может иметь много ссылок, а «Ссылка» содержит много «страниц». 'Link.title' - это имя/название« Ссылка », а не« Страница ». –