2010-02-05 5 views
0

У меня есть классифицированные веб-страницы.немного mysql помощь здесь пожалуйста

Пользователи могут размещать объявления, а в каждой категории есть подпараметры.

Ex: Пользователь выбирает автомобиль, и должен заполнить такие параметры, как цвет, пробег, топливо, коробка передач и т.д.

Вот мои таблицы для этого:

Category table: 
cat_id (PK) 
cat_name // "Cars" for example 

Category Options table: 
option_id (PK) 
cat_id (FK) 
option_name // "Color" for example 

Option Values table: 
value_id (PK) 
option_id (FK) 
value // "red" for example 

Мой Q является, в в последней таблице (значения параметра) не должно быть «что-то еще», потому что, как мне увеличить эту таблицу или привязать эту таблицу к классифицированной?

Например, давайте посмотрим на две записи в этих таблицах: первых, Категория стол:

Cat_id   Cat_name 
    1   cars 
    2   trucks 

Тогда есть Категория Параметры таблицы:

option_id  Cat_id(FK)  option_name 
    1    1    color 
    2    1    mileage 

Тогда таблица значений опций, вот эта проблема, я не знаю как:

Value_id  option_id(FK) value 
    1    1   red 
    2    2   11000 miles 

Тогда w шляпа случается, если я решит вставить другую, классифицированную с другим автомобилем? Должна ли быть другая ссылка в последней таблице?

У меня также есть другие таблицы, такие как «объявление», которая содержит заголовок, текст, цену и т.д. ...

Благодарности

ответ

1

Вы уже дали ответ самостоятельно.

Не должно ли быть еще одна ссылка в последней таблице?

У меня также есть другие таблицы, такие как «классифицирован», который содержит заголовок, текст , цена и т.д. ...

Поместите идентификатор таблицы classified в качестве еще одного ключа в параметрах таблицы, так что вы получаете

Option Values table: 
value_id (PK) 
option_id (FK) 
classified_id (FK) 
value // "red" for example 

Тогда вы можете получить все значения для всех параметров в течение определенного классифицирован:

SELECT c.option_name, o.value 
FROM option_Values o 
LEFT JOIN category_options c ON (o.option_id=c.option_id) 
WHERE o.classified_id = 15; -- as an example 
Смежные вопросы