MySQL главна таблица и ключове към различни ресурси

afsh

Registered
Здравейте,

Опитвам се да създам база данни за ресурси на потребители. Ресурсите могат да са картинки или текстове (статии, хайку, цитати).
Искам да имам главна InnoDB таблица, която да обединява различните ресурси с ключове. Проблема е че блокирах и не ми хрумва как да вържа текстове и картинки към тази таблица.

Ето пример, какво бих искал да се получи, но ми се губи може би междинна таблица между картинките и текстовете:
rRNvk5.png

Главната таблица е "publications". От нея ще извличам последно добавените ресурси.
Дайте някоя идея, моля ви!
 
Не разбрах само тази таблица category за какво е, но тя ще послужи за добър пример. Правиш си една релационна таблица между products и другите две, с полета
[sql]
`id`
`reference_id`
`reference_type`[/sql]
като reference_type ти е ENUM('text','media') и според това какъв тип е, джоинваш към нея таблица :idea:
 
Replace, благодаря за идеята!
Правя междинна таблица:
37Ruvu.png

Само че пак не се сещам как да го направя JOIN-а по reference_type. Ще ми особено полезно, да видя примерна заявка. Примерно да изкарам данни за последно добавените 10 ресурса, независимо от какъв тип са.
 
Така, това ID в релационната ти таблица смятам си го сметнал, че е ID-то от publications, в противен случай ако ти е AUTO_INCREMENT-а, просто добави и publication_id (става по-прегледно в интерес на истината).
[sql]
select p.* , pic.*, t.*
from publicatios p
left join publicationtype pt on pt.publication_id = p.id
left join pictures pic on pic.id = pt.reference_id and pt.reference_type = pictures
left join texts t on t.id = pt.reference_id and pt.reference_type = 'texts'[/sql]
 
Офтопик, моят съвет е да не ползваш InnoDB, уж е малко по-бързо за SELECT, но хаби зверски много ресурси и не си струва.
 

Back
Горе