Autor Zpráva
Exson
Profil *
Ahoj,

řeším takový problém, kdy mám v tabulce images dva sloupce id_admin a id_user. Ty jsou navázány na tabulky admin a user pomocí klíčů.
Chci aby to fungovalo tak, že pokud bude id_admin = 0 (a id_user třeba 1), tak je jasné že to nahrál uživatel a obráceně. Problém, ale nastává že id 0 v tabulce admin neexistuje, proto se to nemůže uložit.

Chci se tedy prosím zeptat jak můžu mít v tabulce rozlišeny kdo to nahrává (user/admin) a jaké id to nahrálo? Zároveň abych to měl provázáno s příslušnou tabulkou. Řešení, že do tabulek vložím záznam s id 0 se mi zdá jako prasárna a rád bych se zeptal na Váš názor a případně řešení jak to udělat jinak, lépe?

Předem moc děkuji...
Alphard
Profil
0 neprojde, to je hodnota porušující integritu. Můžete ale použít null, to by mělo být v pořádku.

a případně řešení jak to udělat jinak, lépe?
Obtížně, pokud se referencují 2 tabulky, musí tam být 2 sloupce. Spíš se nabízí otázka, jestli mají mít admini a uživatelé oddělené tabulky. Nešlo by je sloučit do jedné a adminům přidat jen příznak, že jsou admini?
Exson
Profil *
Perfektní null mě nenapadl. Moc děkuji.

Spojit uživatele a adminy by nebylo vhodné, protože u uživatelů mám mnohem více polí...jmeno, prijmeni, datum narozeni, atd, které u adminu nepotřebuji. Byly by tam prázdná pole. Proto jsem to rozdělil do dvou tabulek...Snad je to takto správně.
juriad
Profil
Exson:
Budeš mít jednu tabulku users, která bude obsahovat všechy společné údaje a nějaký příznak oprávnění (admin = 1, ostatní = 0). Dále bude tato tabulka mít odkaz na personal_info, což je další tabulka, kterou budou mít vyplněnou jen uživatelé a admini budou mít místo odkazu NULL. Případně můžeš mít vazbu z druhé strany (personal_info bude vědět kterému uživateli patří), pak není třeba extra sloupec v tabulce users a nejsou komplikace s adminy.

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: