NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Michal Kuba
Tvůrce
Avatar
Michal Kuba:30.8.2017 8:08

Ahoj.

Měl bych otázku, než začnu s realizací projektu. Jde mi o napad jak nejlépe řešit strukturu db. Dejme tomu, že chci ukládat hlavně informace o lidech. Každý bude mít jméno, nějaké kontaktní údaje, datum narození apod. Potom ale budu chtít evidovat zaměstnání a studium. Tedy že někdo může mít jedno vyplněné zaměstnání a jedno studium, u každého z těchto dvou budu chtít mít potom další atributy jako délka a typ. Jenže potom může být někdo, kdo bude mít 5 škol a 8 zaměstnání a to už je v tabulce třeba dalších 30 sloupců, které budou u další spoustylidí nevyužity a hlavně ta tabulka bude celkově rozsáhlá.

Druhá varianta by byla mít na školu a zaměstnání u člověka jeden sloupec a tam jen ukládat id čísla z jiné tabulky, kde budou detailnější informace. Jenže to není úplně recyklovatelna věc, jelikož jedno zaměstnání může uvést víc lidí, jenže každej s jinou délkou, takže bych pro jedno zaměstnání potřeboval několik téměř stejných záznamu v tabulce zaměstnání, jen by se to lisilo délkou, samozřejmě by se pak v administraci špatně hledala správná hodnota pro přiřazení.

Jak byste toto nejlépe řešili? Pokud u dvou typů věci jsou nějaké doplňující atributy ale ty nemusí mít všichni lidi stejně.

Díky

 
Odpovědět
30.8.2017 8:08
Avatar
Kefas21
Člen
Avatar
Kefas21:30.8.2017 9:43

Skus si nastudovat pojmy ako relacna databaza a normalizacia, mali by ti pomoct v tebou uvadzanom probleme.

Priklad:
Tabulka Clovek: ID, meno, kontakt
Tabulka Firma: ID, nazov, sidlo
Asociacna tabulka PracovnyPomer, kde je vztah Clovek:Firma M:N: ID cloveka, ID firmy, pociatocny datum, konecny datum, typ pracovneho pomeru

zbuchal som to len tak z hlavy za par minut ako priklad. Zalezi od zadania a poziadaviek, ako si DB navrhnes

 
Nahoru Odpovědět
30.8.2017 9:43
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Kefas21
Michal Kuba:30.8.2017 10:19

To já chápu, spíš mi jde o to, jak to nejlépe řešit. Jde o to, že každý může mít jiný počet různých zaměstnání. Můžu udělat nějakou profesi, ale 100 lidi bude mít 100 různých variant, protože se to bude lišit délkou. A právě tyto věci chci mít v administraci v jednom formuláři a právě do zaměstnání se bude volit že selectu, kam by se nacitaly hodnoty z tabulky zaměstnání. Jenže takových tam bude nespočet a většinou každou vyuziju jen jednou a potom tam bude navíc..

Je elegantní řešení mít na zaměstnání v db jednu buňku u každého, a tam se bude vyplňovat dejme tomu kód s <td> a <tr> s tím, že budou dané sloupce ale počet řádku bude neomezený. V administraci to pak bude vypadat jako tabulka s hlavičkou a jednotlivé buňky budou inputy a ty se pak už ve skriptu obalí tagy tr a td a potom bude na webu snadný výpis v tabulce.

 
Nahoru Odpovědět
30.8.2017 10:19
Avatar
Odpovídá na Michal Kuba
Michal Štěpánek:30.8.2017 10:54

Je třeba vzít v úvahu, že každá tabulka ( a třída) by se měla "starat" jen o jednu oblast. Takže si udělej tabulky např. Lidi, Firmy, Školy v podstatě jakoby číselníky a k tomu vazební tabulky, které budou spojovat záznamy v těch číselnících...

Nahoru Odpovědět
30.8.2017 10:54
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Michal Štěpánek
Michal Kuba:30.8.2017 11:03

Takto nějak jsem už řešil snazší problém, teď jsem si říkal, jestli neexistuje náhodou něco lepšího, ale asi nejlepší bude věci po tabulkách a ta jakoby celková bude jen plná ID čísel do jiných tabulek :)

 
Nahoru Odpovědět
30.8.2017 11:03
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.