Autor Zpráva
cheli
Profil
Zdravim,
premyslim nad navrhem tabulek v db. Mam tabulku objednavky a zakaznici, kde tabulka zakaznici obsahuje sloupec, odkazujici na primarni id konkretni objednavky. Zajistuje to napojeni kontaktnich udaju zakaznika k objednavce. Potreboval bych ale, aby se pripadna zmena v datech kontaktnich udaju zakaznika neprojevila na stavajicich objednavkach a projevilo se to jen na novych.
Napada vas nejake normalizovane reseni? Stejne nazvy sloupcu kontaktnich udaju take v tabulce objednavky mi neprijde moc idealni. Jak byste to resili vy?
juriad
Profil
tabulka zakaznici obsahuje sloupec, odkazujici na primarni id konkretni objednavky
Toto snad není pravda. Máš to snad opačně - objednávka se odkazuje na zákazníka.

Ty kopie nezatracuj. Považuji to za dostatečně čisté řešení. A v případě tabulky faktur je to opravdu vhodné.

Druhou možností je verzování kontaktních údajů. Tabulka zákazníků by měla jeden extra sloupec „verze“. Update údajů zákazníka by se provedl INSERTEM nového záznamu s version = MAX(version)+1. Pro lepší výkon je vhodné přidat sloupec „aktuální“, který se bude používat při běžných dotazech.
Pak by se objednávka neodkazovala na id uživatele, ale na dvojici (id uživatele, verze).

Nezapomeň na to, že se nesmí změnit kontaktní údaje, ale ani ceny, DPH, cena za dopravu. Toto prakticky znamená, že buď provedeš jednoduchou kopii, nebo budeš téměř všechno v databázi verzovat (a zkus si pak psát ty dotazy).
cheli
Profil
juriad:
Toto snad není pravda. Máš to snad opačně - objednávka se odkazuje na zákazníka.
Máš pravdu, to jsem se spletl.

Docela se mi to řešení s tím verzováním líbí vzhledem k tomu, že bude nejspíš daleko víc řádků s objednávkami, než případné úpravy kontaktů. Tzn. celkově by se mělo projevit daleko míň duplicity. Dotazy nejspíš budou trochu složitější, ale zas nějaké budoucí manipulace se strukturou databází by mohly být snažší. Zkusim si s tim trochu pohrát a to my nejspíš řekne, jestli sem zvolil správně. Každopádně díky za radu, určitě mi to pomohlo.
Keeehi
Profil
cheli:
Aby většina dotazů nebyla tak složitá tak je dobré vyvořit pohledy které budou zobrazovat jen aktuální data.
cheli
Profil
Keeehi:
Aby většina dotazů nebyla tak složitá tak je dobré vyvořit pohledy které budou zobrazovat jen aktuální data.
To jsem vůbec neznal. Může se to hodit. Díky za příspěvek.

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: