Autor Zpráva
Spectator
Profil
Dobrý den,
prvně návrhuji databázi a zajímá mne jedna věc.

pro zjednodušení:
Uživatel, Telefon, adresa, firma, prava

Nejsem si jist zda je dobré udělat to takto:

firma - id_firmy, nazev_firmy, ...
Uzivatel - id_uzivatele, jmeno,...
telefon - id_vlastnika, cislo
adresa - id_vlastnika, ulice, ...
prava - id_uzivatele, pravo

nebo spojovat jednotlivé tabulky pomocí číselníků (snad je to to, co myslím)

firma - id_firmy, nazev_firmy, ...
Uzivatel - id_uzivatele, jmeno,...
telefon - id_telefon, cislo
adresa - id_adresa, ulice, ...
prava - id_prava, pravo

Spojovací tabluky (číselníky)

c_telefon - id_vlastnika, id_telefon
c_adresa - id_vlastnika, id_adresa
c_firma_uzivatel - id_uzivatele, id_firmy
c_prava - id_uzivatele, id_prava

Dále by mne zajímalo, jak nejlépe ukládat informace o různých právech, Např - redaktor, administrator, uzivatel, ...
Zkoušel jsem typ ENUM, ale zajímalo by mne, zda neexistuje nějaké jiné, osvědčené řešení.

Děkuji předem
ninja
Profil
Záleží jestli se bude jednat o vztahy 1:N nebo M:N, tedy jestli uživatel může mít více telefonů, firem, adres, atd.

Práva můžete udělat jako tabulku co sloupec to jendo povolení, co řádka to uživatel. Pokud bude velká variabilita práv a budou se často přidávat další, lepší bude samostatná atribuční tabulka ve stylu:

uzivatel_id, pravo_jmeno, pravo_typ, pravo_hodnota. Ka6d7 u6ivatel pak bude mít potřebný počet řádků dle jeho práv.
Spectator
Profil
Uživatelé budou mít více čísel, emailových adres a hlavně firmy mohou mít více těchto kontaktů.

Dozvěděl jsem se, že práva budou mít uživatelé různě nakombinovaná, ale nebudou se moc často přidávat druhy práv. Měla by tedy stačit tabulka:

id_uzivatel, pravo_jmeno1, pravo_jmeno2, ...

A hodnoty char 1 - má právo, 0 - nemá právo?
ninja
Profil
Na bool hodnoty je lepší používat tinyint(1).
Spectator
Profil
ninja:
děkuji!


Jestli můžu mít ještě otázku.

Mám např. jednu tabulku pro adresy a pak tabulky uživatel a firem. V číselníku mám id_adres, a id_vlastnika (tím je myšlena firma i uživatel), jak rozliším při selectu adresu pro firmu nebo pro uživatele, když v uživatelích i ve firmách může být stejné id. Jak toto rozliším?

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: