Маркировка базы данных с альтернативными результатами - PullRequest
1 голос
/ 11 августа 2010

Я работаю над инструментом автозаполнения PHP / Jquery, который будет запрашивать большую таблицу тегов, но мне нужно некоторые предложения для схемы БД, которая будет возвращать связанные теги, а также результаты на основе соответствия.

Например:

Я набираю 'Web':

Результаты

«Веб-разработчик»

«Веб-дизайнер»

«Веб-аналитик»

, а также похожие теги ...

'PHP Developer'

' Flash Programmer'

Таким образом, очевидно, что для каждого тега должен быть столбец с каким-то реляционным значением или значением происхождения ... Как лучше всего это сделать?

Спасибо!

--- ОБНОВЛЕНИЕ -----------------

конечно - и еще раз спасибо за вашу помощь!

вот таблицы ..

Метки

Id TagName

1 Веб-разработчик

2 Веб-дизайнер

3 Веб-аналитик

4 PHP Developer

5 Flash Programmer

RelatedTags

TagId RelatedTagId Strength

1 4 0

1 5 7

Так как значение Strength 'Flash Programmer' равно 7, я бы хотел, чтобы оно появилось перед программистом PHP .. (надеюсь, формат достаточно понятен)

еще раз спасибо!

1 Ответ

1 голос
/ 11 августа 2010

Теги таблицы

Create Table Tags (Id int, TagName varchar(50))

Теги, связанные с таблицей (оба поля - от FK до тегов (Id))

Create Table RelatedTags(TagId int, RelatedTagId int)

Запрос на выбор входного тега и соответствующих тегов

SELECT Id, TagName, Strength
FROM Tags
WHERE TagName LIKE 'Web%'
UNION
SELECT Id, TagName, Strength
FROM Tags 
WHERE tags.Id IN (SELECT RelatedTagId
       FROM Tags t
       JOIN RelatedTags r
       ON (t.Id = r.TagId)
       WHERE t.tagName LIKE 'Web%')
ORDER By 3 DESC
...