Autor Zpráva
benett
Profil
Mám takový začátečnický dotaz: pokud chci používat v MySQL relace mezi tabulkami, lze to nastavit v phpmyadminu nebo to bude fungovat až poté, co budu používat SQL příkazy jako JOIN v PHP kódu?
Kajman_
Profil *
Relace vytváříte pomocí join.
MzM
Profil
Ve vztahu tabulka-tabulka (tedy relace) se hodně se používají tzv. primární a cizí klíče. Při návrhu tabulek se tento vztah dá označit a je možné zajistit, aby nebylo možné smazat řádek tabulky na který ukazuje řádek z jiné tabulky. Nemyslel jsi spíš toto? Tyto vazby je třeba "vytvořit" při návrhu. Příklad:

create t1 (
pk_id int primary key auto_increment,
data varchar(200)
);

create t2 (
pk_id int primary key auto_increment,
fk_id int foreign key references t1(pk_id),
data varchar(200)
)

(doufám, že jsem trefil syntaxi, pokud ne, viz manuál. Umí vůbec MySQL a jeho nejpoužívanější MYISAM tyhle vazby?)

lepší db engine umí nadefinovat i to, co se má dít, když se smaže právě ten řádek, na který se odkazuje. Např.:
fk_id int foreigh key references t1(pk_id) on delete cascade, ...

zajistí smazání tohoto záznamu z t2 pokud dojde ke smazání řádku na který odkazuje. Je jasné, že to má výhody ve zjednodušení mazání navzájem provázaných záznamů, ale i nevýhody, pokud se něco smaže "náhodou".

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: