Předmět Autor Datum
Jenom z klíčů se to IMHO poznat nedá.
Wikan 15.08.2016 16:53
Wikan
Takový je zadání: Tabulka POTRAVINY (Čárový_kód, Datum_spotřeby, Název_výrobku, Druh, Výrobce, Země…
Aragaon 15.08.2016 16:55
Aragaon
A otázka zní?
Wikan 15.08.2016 17:00
Wikan
otázka z ní jestli mám správně ten klíč.. a v jaké je to normální formě, jestli je to ve 3NF ? :)
Aragaon 15.08.2016 17:01
Aragaon
No já bych to teda rozdělil na tabulky: Zboží(čárový_kód, název_výrobku, výrobce, měrná_jednotka) Vý…
Wikan 15.08.2016 17:31
Wikan
DruhVýrobku bych vázal přes čárový kód, ne přes NázevVyrobku.
Jan Fiala 15.08.2016 17:41
Jan Fiala
děkuji a v jaké byste řekl, že je to normální formě?
Aragaon 15.08.2016 17:44
Aragaon
Jasně, to byla blbost. Člověk by si to po tom Copy&Paste měl vždycky zkontrolovat.
Wikan 15.08.2016 17:56
Wikan
to ale neni 3NF...;-)
MaSo 15.08.2016 17:44
MaSo
Tohle je forma, v jaké by to mělo být, aby to bylo použitelné. Vše ostatní vede k problémům, opakují…
Jan Fiala 15.08.2016 18:02
Jan Fiala
dobře a to znamená tedy 1NF, 2NF nebo 3NF? :)
Aragaon 15.08.2016 18:38
Aragaon
Když pomineme tu blbost, co jsem tam měl, tak by to měla být 3. NF. Ještě možná za předpokladu, že b…
Wikan 15.08.2016 19:17
Wikan
tohle je jedna ze státnicových otázek na pajdáku :D takže to zadání jak tam má ona... tak stačí naps…
Aragaon 15.08.2016 19:22
Aragaon
No původní tabulka rozhodně není.
Wikan 15.08.2016 19:25
Wikan
takže je jen 1NF a 2NF?
Aragaon 15.08.2016 19:27
Aragaon
No spíš jen první.
Wikan 15.08.2016 19:30
Wikan
nevím právě jak to takhle z těch klíčů poznat... na první pohled... podle těch definic mi to není úp…
Aragaon 15.08.2016 19:31
Aragaon
https://cs.wikipedia.org/wiki/Normalizace_datab%C3 %A1ze
Wikan 15.08.2016 19:35
Wikan
jenže právě ty tabulky na měrné jednotky apod. jsou znakem 3NF. Typicky se v praxi používá 2NF.
touchwood 15.08.2016 19:33
touchwood
vím, že 1NF nesmí mít vícehodnotové a složené atributy... 2NF je pokud je v 1NF a každý neklíčový at…
Aragaon 15.08.2016 19:39
Aragaon
Ak už toto nepochopíš https://cs.wikipedia.org/wiki/T%C5%99et%C3%AD_norm %C3%A1ln%C3%AD_forma , poto…
pme 15.08.2016 19:50
pme
Blbost. Normálně se to dělá takhle. Zboží(idZbozi (PK), idDruhVyrobku (FK), idVyrobce (FK), idMerna…
MaSo 15.08.2016 21:41
MaSo
Tak s tím Stavem jsi zase trochu ujel ty.
Wikan 15.08.2016 21:46
Wikan
:-[ Zboží(idZbozi (PK), idDruhVyrobku (FK), idVyrobce (FK), idMernaJednotka(FK), čárový_kód, název_…
MaSo 15.08.2016 22:05
MaSo
dovolím si nesouhlasit. Jedna věc je matematicko-logické "školometské" rozčlenění, druhá pak realita…
touchwood 15.08.2016 22:05
touchwood
Tak jasně, že z důvodů optimalizace se může někdy schéma zprasit (případně zavést i nějakou redundan…
MaSo 15.08.2016 22:09
MaSo
PK u zboží nemusí být nutně ID. Čárový kód je jednoznačný pro zboží každého výrobce. Takže i kdybys…
Jan Fiala 16.08.2016 08:34
Jan Fiala
No, kdyby to mělo být přesně podle praxe, tak čárový kód se jako primární klíč nemůže použít. Jedno…
Wikan 16.08.2016 08:35
Wikan
Pak už je to "jiné" zboží, musíš to evidovat zvlášť na skladu, protože to vše přes čárové kódy při p…
Jan Fiala 16.08.2016 10:59
Jan Fiala
Ne, vážně není. Je to stále jedno a totéž zboží i u dodavatele se to objednává pod stejným interním… poslední
Wikan 16.08.2016 11:05
Wikan

Takový je zadání:

Tabulka POTRAVINY (Čárový_kód, Datum_spotřeby, Název_výrobku, Druh, Výrobce, Země, Měrná_jednotka, Množství) obsahuje data potravin, které se nacházejí na skladě jisté prodejny, F je množina funkcionálních závislostí.
F = {
Čárový_kód  {Název_výrobku, Druh, Výrobce, Země, Měrná_jednotka},
Název_výrobku  Druh
Výrobce  Země,
{Název_výrobku, Výrobce}  Čárový_kód
{Čárový_kód, Datum_spotřeby}  Množství }

Určete:
- Kliče tabulky
- Zjistěte normální formu
- Pokud tabulka není ve 3NF, proveďte dekompozici do 3NF

Řešení:

Čárový_kód (Č), Datum_spotřeby (D), Název_výrobku (N), Druh (R), Výrobce (V), Země (Z), Měrná Jednotka (M), Množství (O), V

Č + {Č, N, R, V, Z, M}
NV + {N, V, Č, R, Z, R}
ČD + {Č, D, O, N, R, V, Z, M} Klíč je ČD

Když pomineme tu blbost, co jsem tam měl, tak by to měla být 3. NF. Ještě možná za předpokladu, že by zboží mělo pouze jeden druh, by ten druh mohl být už v tabulce Zboží.
Pak se to teda dá šperkovat např. tím, že pro měrné jednotky vytvoříš další tabulku, ale pro přijímačky na pajdák je to asi už zbytečně moc.

vím, že 1NF nesmí mít vícehodnotové a složené atributy... 2NF je pokud je v 1NF a každý neklíčový atribut je plně funkcionálně závislý na každém klíči? ... to znamená, že každá neklíčová položka musí být součástí klíče? .. a to 3NF nějak nechápu už... relační schéma je ve 3NF, je-li ve 2NF a každý neklíčový atribut v R je plně funkcionálně závislý na každém klíči v R a je netranzitivně závislý na každém klíči R .. neklíčové položky vzájemně nezávislé... prosím jestli byste mi to mohl nějak více vysvětlit jak poznat 3NF a případně jak to převést...

Blbost. Normálně se to dělá takhle.

Zboží(idZbozi (PK), idDruhVyrobku (FK), idVyrobce (FK), idMernaJednotka(FK), idStav (FK), čárový_kód, název_výrobku)
Výrobce(idVyrobce (PK), idZemě (FK), výrobce)
Země(idZeme (PK), zeme)
DruhVýrobku(idDruhVyrobku (PK), druh)
MěrnáJednotka(idMernaJednotka (PK), mernaJednotka)
Stav(idStav (PK), datum_spotřeby, množství)

:-[

Zboží(idZbozi (PK), idDruhVyrobku (FK), idVyrobce (FK), idMernaJednotka(FK), čárový_kód, název_výrobku)
Výrobce(idVyrobce (PK), idZemě (FK), výrobce)
Země(idZeme (PK), zeme)
DruhVýrobku(idDruhVyrobku (PK), druh)
MěrnáJednotka(idMernaJednotka (PK), mernaJednotka)
Stav(idStav (PK), idZbozi (FK), datum_spotřeby, množství)

PK u zboží nemusí být nutně ID. Čárový kód je jednoznačný pro zboží každého výrobce. Takže i kdybys měl "máslo farmářské" od 2 výrobců, tak každé bude mít svůj čárový kód.

Co se týká redundace, té se v praxi občas nevyhneš, hlavně u hodně velkých dat. Už jen třeba kvůli rozdělení hodně velkých tabulek na partitions, kde se musíš řídit nějakým časovým ůdajem, takže nestačí mít datum v hlavičce dokladu.

Teorie je o tom, jak by se to dělat mělo
Praxe je o tom, jak to udělat, aby to optimálně fungovalo

Podle teorie to navrhneš a podle praxe to pak zoptimalizujes.

Zpět do poradny Odpovědět na původní otázku Nahoru