Rada při návrhu db tabulek

Rada při návrhu db tabulek
« kdy: 20. 06. 2021, 17:34:21 »
Ahojte, chcel by som mensiu radu / konzultaciu k vytvaranym relacnym tabulkam.

Potrebujem ukladat nastavenia, pre vysky vyplatzamestnancov. Nastavenie vysok bude ulozene v percentach, kazde nastavenie musi mat platnost od, a volitelnu platnost do - null znamena ze plati kym nepribudne novy zaznam. Vyska sa bude ukladat defaultne per poziciu zamestnanca.

Takze moj navrh je toto:
sallary_setting
- id
- from
- to (nullable)

sallary_setting_values
- id
- emp_position (nullable)
- percentage
- sallary_setting_id (fk)

Dalsi atribut ktory by mal tento design splnat, je moznost ulozenia nastavenie pre konkretne pobocky firmy, a pre konkretnych zamestnancov. Tzn, ze ak bude ulozene taketo specificke nastavenie, prepise to defaultne nastavenie.

Napadaju ma 2 sposoby ako to urobit:

1. pridat nullable stlpce employee_id a company_id do sallary_setting, aby som vedel ci je to specificky zaznam, alebo defaultny ak obe budu null
2. vytvorit nove mapovacie tabulky pre zamestnancov a pobocky, a zaroven pridat enum stlpec do sallary_setting, aky je zdroj tohto nastavenia (firma, zamestnanec, default)

Co myslite? Ak mate lepsi napad, rad si necham poradit od skusenejsich. Dakujem
« Poslední změna: 21. 06. 2021, 08:42:14 od Petr Krčmář »


Re:Rada pri navrhu db tabuliek
« Odpověď #1 kdy: 20. 06. 2021, 18:09:23 »
samostatne tabulky company, employee, salary, kde jsou ciste informace o jmenu firmy, o jmenu zamestance, standartizovane urovne platu podle tabulek.
pak vazebni tabulky company_employee, employee_salary, kde budou vazby company_id, employee_id kdo kde pracuje a jeden clovek muze pracovat pro vice firem a firma muze mit vice pracovniku, a vazby employee_id a salary_id, kde je vazba pracovnika na jeho tabulkovy plat, muze tam byt i flag platnosti zaznamu v danem obdobi, klidne i doba platosti.
pak muzou byt triggery, ktere budou modifikovat flagy platnosti salary v danem obdobi, kdyz se pridaji nove zaznamy.
stare zaznamy s neplatnymi flagy se mohou zalohovat v history tabulkach.

Re:Rada pri navrhu db tabuliek
« Odpověď #2 kdy: 20. 06. 2021, 18:19:53 »
samostatne tabulky company, employee, salary, kde jsou ciste informace o jmenu firmy, o jmenu zamestance, standartizovane urovne platu podle tabulek.
pak vazebni tabulky company_employee, employee_salary, kde budou vazby company_id, employee_id kdo kde pracuje a jeden clovek muze pracovat pro vice firem a firma muze mit vice pracovniku, a vazby employee_id a salary_id, kde je vazba pracovnika na jeho tabulkovy plat, muze tam byt i flag platnosti zaznamu v danem obdobi, klidne i doba platosti.
pak muzou byt triggery, ktere budou modifikovat flagy platnosti salary v danem obdobi, kdyz se pridaji nove zaznamy.
stare zaznamy s neplatnymi flagy se mohou zalohovat v history tabulkach.

Employee a company tabulky uz mame, aj ten zvysok som planoval podobne. Trosku si nesom isty v tom, ako z tabulky salary vycitam, ktore udaje su defaultne, bez vazby na ine entity? Budu tam trosku vacsie vypocty, a radsej by som sa k akymto udajom dostal lahsie nejakym wherom, ako vylucovanim zgroupenych zaznamov z inych tabuliek.

Mlocik97

  • *****
  • 608
  • Linuxák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Rada pri navrhu db tabuliek
« Odpověď #3 kdy: 20. 06. 2021, 19:02:45 »
Smejem sa s MongoDB.  ;D SRY

Re:Rada pri navrhu db tabuliek
« Odpověď #4 kdy: 20. 06. 2021, 19:16:47 »
Smejem sa s MongoDB.  ;D SRY

nic proti mongodb, ale jinak je ten prispevek debilita, sorry.
mohl jsi navrhnout jak to  udelat v objektove databazi, ale ne, ty's tu prsknul jen hovadinu.


L..

  • ***
  • 178
    • Zobrazit profil
    • E-mail
Re:Rada pri navrhu db tabuliek
« Odpověď #5 kdy: 21. 06. 2021, 07:21:40 »
Smejem sa s MongoDB.  ;D SRY

Cože, ty bys na to nepoužil Svelte? Ty heretiku!!!

Re:Rada pri navrhu db tabuliek
« Odpověď #6 kdy: 21. 06. 2021, 07:55:36 »
Poradím jediné, spátky do lavice, nebo na kurz, pokud se musíš ptát na toto tak kvalita výsledné aplikace je už teď dost diskutabilní. Hlavně si pak do testovacích dat prosím dej reálé počty záznamů, ona i nejdebilnější konstrukce složená z bilionu joinů krásně maká s 3 záznamy, ale pak se to setká s realitou a místo třech jich je třeba 3M a ejhle ono se to vlěče.

Pajaha

  • ****
  • 302
    • Zobrazit profil
    • E-mail
Re:Rada při návrhu db tabulek
« Odpověď #7 kdy: 21. 06. 2021, 10:13:52 »
Já jenom poznámku, výška platu bývá absolutní číslo na smlouvě, ukládat to jako procenta z něčeho je imho nešťastné.
Když vidím požadavky - různé firny, pobočky, vybaví se mi korporace - a tady zase mi přijde že ty používají na tohle spíš oracle nebo sap... Ale to je jen takový komentář, aby to nezapadlo.

SB

  • ****
  • 306
    • Zobrazit profil
    • E-mail
Re:Rada při návrhu db tabulek
« Odpověď #8 kdy: 21. 06. 2021, 11:47:02 »
Pane Schwantnere,
nejen vlivem chybějící diakritiky se v dané úloze ztrácím, takže řešení vám neporadím, ale dám vám jednu radu:

Úplně v první řadě si vezměte papír / nějaký SW a jako krabičky si namalujte modelované entity a vztahy mezi nimi (hodí se i rozlišit asociace, agregace a kompozice, které určují rozčlenění, ale to asi nebudete vědět) - zapomeňte, že existují nějaké DB, ideálně se vžijte do situace, že RDB nikdy neexistovaly; nemusíte ani používat UML. Teprve až to budete mít zcela ujasněné, potom se můžete pokusit schéma přeprznit do relačního modelu. Návrh schématu RDB bez hotové předchozí analýzy je sice mimořádně oblíbenou disciplínou, přesto se stále jedná o amatérismus.

PanVP

  • *****
  • 958
    • Zobrazit profil
    • E-mail
Re:Rada pri navrhu db tabuliek
« Odpověď #9 kdy: 21. 06. 2021, 12:01:01 »

Nejprve mě napadlo, jestli to není školní úloha, ale - s ohledem konec června - asi ne.
Pak mě napadlo, jestli náhodou nerealizujete nějakou tučnou státní zakázku nebo jestli se nejedná o multimilionový dotační projekt. Pokud ano, moc vám ty milionky přeju, také bych si rád pořádně cucnul ze státního cecíku.

Pokud to je nějaký váš projekt, držím palce.

Smejem sa s MongoDB.  ;D SRY

Asi tak.
A až zjistí, že to chce/musí/potřebuje změnit, bude možné se smát ještě víc  ;D

@schwantner.peter o MongoDB jste už slyšel?

Re:Rada při návrhu db tabulek
« Odpověď #10 kdy: 21. 06. 2021, 13:19:42 »
na 99% to je skolsky projekt :)
@schwantner.peter - bod 2 - vytvor tabulky pre uroven zamestnanca aj pobocky. A hodnotu musis nacitavat "od listu" t.j. pozriet zamestnanca, potom pobocku, potom salary_setting (tvoji kamarati su funkcie NVL resp. coalesce, podla typu DB).

Kit

  • *****
  • 644
    • Zobrazit profil
    • E-mail
Re:Rada při návrhu db tabulek
« Odpověď #11 kdy: 21. 06. 2021, 15:04:12 »
Table Salary:
- id
- employee_id
- date_from
- date_to

hechj

Re:Rada při návrhu db tabulek
« Odpověď #12 kdy: 21. 06. 2021, 19:27:52 »
Když se tabulka jmenuje sallary, nazvěte klíč sallary_id. Když je tabulka company, nazvěte klíč company_id. Jinak se v tom ztratíte velice lehce. Ať se stejná hodnota v databázi jmenuje stejně ať je to primární nebo cizí klíč nebo cokoliv jiného. Berte to jako "must do"

hechj

Re:Rada při návrhu db tabulek
« Odpověď #13 kdy: 21. 06. 2021, 19:32:26 »
A ještě jednou se ujistěte, že rozumíte zadání

Kit

  • *****
  • 644
    • Zobrazit profil
    • E-mail
Re:Rada při návrhu db tabulek
« Odpověď #14 kdy: 21. 06. 2021, 19:54:25 »
Když se tabulka jmenuje sallary, nazvěte klíč sallary_id. Když je tabulka company, nazvěte klíč company_id. Jinak se v tom ztratíte velice lehce. Ať se stejná hodnota v databázi jmenuje stejně ať je to primární nebo cizí klíč nebo cokoliv jiného. Berte to jako "must do"

Proč? Salary.id říká docela přesně, o co se jedná. Nesnáším pleonasmy.