Таблицы связывания MySQL; некоторые последние вопросы - PullRequest
2 голосов
/ 20 января 2010

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

Теперь у меня осталось несколько заключительных вопросов ...

Как на самом деле работает LINKING таблиц?

Скажем, у вас есть три стола:

CATEGORY TABLE:
cat_id (PK) -> 1
cat_name -> cars

CATEGORY_OPTIONS TABLE:
cat_opt_id (FK) -> 1
cat_id (FK) -> 1
option_name -> year

CATEGORY_OPTIONS_VALUES TABLE:
cat_opt_val_id (PK) -> 1
cat_opt_id (FK) -> 1
value -> 1999

В основном, значения должны выглядеть следующим образом:

CATEGORY
(1, cars)
(2, MC)

CATEGORY_OPTIONS
(1, 1, year)
(2, 1, fuel)
(3, 2, type)

CATEGORY_OPTIONS_VALUES
(1, 1, 2010)
(2, 1, Petrol)
(3, 2, Cross)

Это правильно, так как у меня есть настройки выше?

Как мне их искать, как складывается логика?

Я думаю, мне нужны примеры запросов из PHP (SELECT и т. Д.)

Допустим, вы хотите найти АВТОМОБИЛЬ -> год = 2010, топливо = бензин, как тогда запрос? И скажем, вы хотите найти автомобиль -> топливо = бензин, год = что-нибудь

ПОСЛЕДНЕЕ, я должен использовать AutoIncrement на любом из этих полей? А когда используется ИИ?

Спасибо

PS: Для получения дополнительной информации, проверьте этот Q: Можно ли улучшить эту базу данных MySQL или она хороша как есть?

1 Ответ

0 голосов
/ 20 января 2010

Вы хотите присоединения SQL. Связывание таблиц - это совершенно не связанный метод, который не имеет ничего общего с тем, чего вы пытаетесь достичь (подробнее см. Документацию MySQL по движку MERGE). В целом:

SELECT f.name, b.value
FROM foo f
LEFT JOIN bar b ON b.foo_id = f.id
WHERE f.age > 10
HAVING b.value IS NOT NULL

Чтобы понять, как выполняются объединения, вы должны понимать, как ядро ​​базы данных обрабатывает запрос, особенно важность условий в предложениях ON, WHERE и HAVING, которые применяются на разных этапах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...