Autor Zpráva
Anonymní
Profil *
Dobrý den, potřebuji z databáze získávat adresy, ale nedaří se mi vymyslet ideální rozvržení databáze. Jedna adresa bude obsahovat stát, kraj a město. Napadlo mě udělat 4 tabulky (stat, kraj, mesto a adresa), takže v tabulce adresa (sloupce: mesto_id, kraj_id, stat_id) se budou spojovat k sobě patřící sloupce, nebo případně 3 tabulky (stat, kraj a mesto) a k sobě patřící sloupce se budou spojovat v tabulce město (sloupce: id, název, kraj_id, stat_id).


Jaké z těchto rozvržení je lepší? Nebo znáte ještě nějakou jinou a lepší možnost? Děkuji
Alphard
Profil
Jak s tím chcete pracovat? Přinese vám roztrhání na jednotlivé položky nějaké výhody oproti jedné tabulce? Tady se omlouvám, moc rychle jsem přečetl výčet položek.
Dokáži si představit aplikace, kde to smysl má, ale spíš se mi to zdá zbytečně složité, záleží na účelu.

Ty případy, kde to má smysl, bych viděl např. tam, kde se budou používat různé filtry na města, agregační funkce apod. Jinak pokud je to čistě informace, např. kam fakturovat, preferoval bych druhou variantu tabulka město (sloupce: id, název, kraj_id, stat_id), protože není reálné vytvořit seznam všech měst pro výběr a vyčleňovat je při insertu (hledání duplicit) a pak případné editace by byly složité. Při zadávání bude předpokládám kraj a stát v selectboxu.

Jinak bych asi volil název tabulky adresa (id, město, kraj_id, stat_id).
Anonymní
Profil *
Pracovat s databází budu přes knihovnu NotORM. Více tabulek jsem zvolil kvůli tomu, že pod jeden stát spadá více krajů a pod kraje spadá několik set měst. Nejsem si ale jistý, zda je to optimální řešení.
Alphard
Profil
[#3] Anonymní
Já se omlouvám, prvně jsem dotaz přečetl moc rychle, vznikl ve mně dojem, nevím proč, že chcete roztrhat i položky jako ulice, které ale vůbec neukládáte.
Svoji odpověď jsem doplnil, preferoval bych variantu adresa (id, město, kraj_id, stat_id), případně později adresa (id, město, ulice, ..., kraj_id, stat_id). Jinými slovy do samostatných tabulek bych vyčlenil to, co lze. Vyčleňovat za běhu aplikace města se mi nezdá příliš užitečné, ale dokáži si představit aplikace, kde to smysl má. Např. již uvedený filtr, kde si v selectu vyberu nějaké z existujících měst a systém mi vypíše zákazníky, které tuto adresu používají.

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: