Autor Zpráva
nethor
Profil
Ahoj lidi,
mám takovouhle tabulku:

Potřebuju ji uložit do DB, bude se z ní jen číst.
Nabízí se upravit jí takto:

a údaje ve sloupcích Umisteni, Vedeni a Pozemek nahradit Id (tedy IdUmisteni, IdVedeni a IdPozemek) podle tří překladových tabulek
Pak bych používal 4 propojené tabulky s trochu 'přes ruku' nepřehlednými údaji.
...A taky je úprava tabulky do této formy trochu otrocky pracná a asi i náchylná k chybě.
Tabulka se může jednou ročně také změnit, tzn. že musím vytvořit pro další rok vytvořit jinou stejnou.
Takových tabluek mám v projektu řádově desítky, takže pracnost úpravy hraje roli.

Navíc si do jiné tabulky potřebuji zapsat stav / kombinaci - který Koeficient uživatel použil. (Ne jen jeho hodnotu.)
Nabízí se 2 řešení:
1. Zaznamenat si 3 údaje IdUmisteni, IdVedeni a IdPozemek
2. Opatřit tabulku Unique Indexem Id a zaznamenat jen ten. (To je tochu zrádné z hlediska zpětné kompatibility, pokud v tabulce některé údaje přibudou nebo ubudou.)

----- Jak to řešit nejsnáze a správně? -----
anonym_
Profil *
nethor:
Nechápu, proč bys melmkit každý rok novou tabulku. Nový záznam se řeší novým radkem, ne novou tabulkou.

Ty 2 nabízena řešení moc nechápu, cos tím myslel. Každopádně než opakovat všechny informace znovu, je překladový tabulka/y správnou cestou.
nethor
Profil
anonym:
Nechápu, proč bys melmkit každý rok novou tabulku.
Kvůli zpětné kompatibilitě. V dalším roce se může úplně změnit způsob výpočtu a tím i struktura tabulky.

Ty 2 nabízena řešení moc nechápu
To nevadí, jen nevím proč mi tedy odpovídáš ;)
Kajman
Profil
nethor:
V dalším roce se může úplně změnit způsob výpočtu a tím i struktura tabulky.

Pokud se mění jen vzhled tabulky, tak si přece můžete pro každý rok uložit, které sloupce a které řádky mají být použité (jedna vazba jeden řádek). Případně vypisovat řádky a sloupce podle toho, zda tam je alespoň jeden nastavený koeficient (to byl ale neumožňovalo přehazovat pořadí sloupců a řádků mezi roky).
anonym_
Profil *
nethor:
Jednak jsem odpovídal kvůli tomu prvnímu odstavci, kdy absolutně nechápeš výhody a správně užití databaze. Druhak jsem třeba doufal, ze upresnis, cos tím myslel.
nethor
Profil
Kajman:
V dalším roce se může úplně změnit metodika výpočtu, zkrátka, že se to bude počítat úplně jinak.
Některé parametry možná zůstanou, jiné se změní nebo další přibydou. Už se to několikrát stalo, zcela nesystémově.
Osvědčiilo se mi vytvářet jednotlivé verze programu pro dané roky jako 'forky' tedy i se samostatnými tabulkami. Některé, které se nezměnily použiji z minulých let, u jiných ponechám strukturu a změním poze hodnoty, jiné musím překopat úplně. Navíc je potřeba, aby i nyní program fungoval správně třeba pro výpočet v r. 2017. Je proto snazší pro každý fork nastavit jen příslušnou tabulku v configu, než pokaždé znovu řešit a testovat zpětnou kompatibilitu.
Radek9
Profil
nethor:
V dalším roce se může úplně změnit metodika výpočtu, zkrátka, že se to bude počítat úplně jinak.
To znamená co konkrétně? Pokud bys použil novou metodiku výpočtu na stará data, změní se i hodnoty těch původních koeficientů? Nebo to znamená, že se změní závěr, který se vyvozuje z těch (klidně jiných, ale stejně vypočítaných) koeficientů? Nebo obojí? Píšeš to strašně neurčitě, holt potřebujeme více informací.

Pokud jde o to, že by v každém roce byl jiný počet různých koeficientů, tak to prostě uděláš tak, že tam ten záznam k danému koeficientu bude, nebo nebude. To je snad jednoduché, ne? Pořadí v té vyrenderované tabulce vyřešíš buď rovnou při vkládání (tedy id bude korespondovat s řádkem a sloupcem dané buňky), nebo si tam přidáš ještě nějaký sloupec pro pořadí.

Pokud by se i koeficienty v průběhu let měnily, tak ho tam přidáš prostě vícekrát a v nových tabulkách se budeš odkazovat na ten nový (se stejným názvem, ale jinou metodikou). Případně necháš jeden záznam pro koeficient, uděláš si tabulku, kde budeš ty koeficienty verzovat, a v hlavní tabulce se nebudeš odkazovat přímo na koeficient, ale na jeho verzi.

Pokud by se měnila i metodiky vyvozování závěru z hodnot koeficientů, tak si ještě musíš udělat tabulku pro ty metodiky (resp. jejich verzi) a taktéž se na to odkazovat.
Kajman
Profil
Pokud není mezi roky žádná systémovost (což se mi moc nezdá) a data se nemají filtrovat, řadit či dělat výpočty v sql, nemusí být relační databáze nejlepší řešení. Pokud nemáte objektovou databází, můžete si např. data pro rok uložit jako chrstanec dat - serialize, json nebo něco podobného.
NoxOne
Profil
já bych udělal tabulku kde bude sloupec odpovídat sloupci z dodané tabulky a k tomu by si dal ještě sloupec "rok" celé bych to z dodané tabulky (předpokládám excel) importoval a potom již stačí jenom číst a počítat. každý rok bych přidal novou a vyplnil jenom jiný rok. V php nebo v čem to budeš mít tak si jenom upravíš metodiku výpočtu pro daný rok a tím dostaneš co potřebuješ.
nethor
Profil
Kajman:
Většinou mezi roky systémové změny nejsou, ale nedá se na to spolehnout. Už několikrát nesystémové byly a nechci si pro tento případ svázat ruce.
V případě techto tabulek používám db jen jako úložiště, které mohu upravovat třeba přes Adminer. Zajímalo mě spíš, jestli neexistuje nějaké lepší řešení,
než třírozměrnou tabulku ručně přesázet do jednorozměrné, kde každé trojici paramerů odpovídá jena hodnota.
Radek9
Profil
nethor:
Proč ručně? Jestli to je excel nebo nějaký podobný formát, tak na to jde přece napsat script.

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:

0