Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Navrh databaze: Kniha jizd

Zdravim,
dostal jsem ve skole za ukol navrhnout databazi, ktera predstavuje knihu jizd. Zadani znelo:

Databáze má umožnit evidenci najetých km pro jednotlivá služební vozidla, dle jednotlivých řidičů.
Vozidla používají různé pohonné hmoty, které mají různé ceny.

Moc se v tom nevyznam.:-[ Zatim, jsem vymyslel toto:
[http://show.imagehosting.us/show/1811270/0/nouser_1 811/T0_-1_1811270.png]

Budu vdecny za jakekoliv rady a pripominky.

Diky!
MaSo

Předmět Autor Datum
Jen ta v rychlosti, co me napadlo na prvni pohled: Nedelej FK vazana na SPZ nebo Rodne cislo. Samoz…
Jan Fiala 10.12.2006 19:59
Jan Fiala
Vicedenni a viceetapove jizdy neresim. :-) Konec a zacatek jsem pridal. Tou cenou u paliva jsem mysl…
MaSo 10.12.2006 20:29
MaSo
Nad carou by mel byt primarni klic. RIDIC - co kdyz se 2 budou jmenovat stejne ? Jak je rozpozna obs…
Jan Fiala 10.12.2006 20:41
Jan Fiala
Nad carou by mel byt primarni klic. Ano, ale ty (FK) mi tam automaticky doplnil case nastroj, kdyz…
MaSo 10.12.2006 20:59
MaSo
Nerikej, ze tam Case nastroj doplnil datum jizdy. To je tam jedine, pokud by bylo soucasti primarnih…
Jan Fiala 10.12.2006 21:13
Jan Fiala
Datum jizdy nemyslim, to jsem tam udelal ja. :-[ Myslel jsem ty (FK). Tak, snad uz posledni verze:…
MaSo 10.12.2006 21:20
MaSo
JIZDY - pridej ID_Jizdy jako primarni klic TANKOVANI - stale mi tam chybi pocet km pri tankovani -…
Jan Fiala 10.12.2006 21:27
Jan Fiala
Teda vazne nevim, co bych si bez tebe pocal...:-[ Diky za ty napady na trigger, to uz zvladnu sam v…
MaSo 10.12.2006 21:42
MaSo
Sekvence u tohoto úkolu se počítají k dobru, takže je možné je použít třeba u všech PK?
siberian 10.12.2006 21:57
siberian
Na SQL serverech i u nekterych souborovych databazi je primarni klic povinny. Obvykle je vyhodnejsi…
Jan Fiala 10.12.2006 22:54
Jan Fiala
Já to myslel tak, že při vložení každého nového záznamu, který má primární klíč nějaké ID, by se ID…
siberian 10.12.2006 23:10
siberian
Na to se typicky pouziva Autoincrement pole. U MS SQL je to Integer, kteremu nastavis vlastnosti, My…
Jan Fiala 11.12.2006 06:04
Jan Fiala
Aha. Dobrá. Díky.
siberian 11.12.2006 11:46
siberian
Já bych tam vůbec nemotal ta rodná čísla. K čemu tam jsou?
rokator 10.12.2006 20:09
rokator
Chtel nejak jednoznacne identifikovat ridice. Problem by byl napr. u zahranicnich ridicu...
Jan Fiala 10.12.2006 20:13
Jan Fiala
K datum, ktera obsahuji citlive osobni udaje (coz RC je) je zakonem narizeno se chovat jinak nez k d…
starycharlie 10.12.2006 21:05
starycharlie
jo, kvůli ochraně osobních údajů jsem to psal... to JaFi: v případě stejných jmen by mohl identifik…
rokator 10.12.2006 21:15
rokator
Souhlas - rodné číslo neuvádět, uváděla bych číslo (kód) řidiče, který má ve firmě v evidenci zaměst…
Eva_M 11.12.2006 17:58
Eva_M
Ja to myslel z jineho duvodu. Pokud uvidite nekde sestavu a tam bude Franta Novak 1 a Franta Novak 2…
Jan Fiala 11.12.2006 18:36
Jan Fiala
Kdyby nekoho zajimalo jak vypada moje "ostra" verze: [http://img246.imageshack.us/img246/6848/clipbo…
MaSo 13.12.2006 18:02
MaSo
Ted jsem zjistil, ze zapocet udelen...:-D:-D
MaSo 24.12.2006 16:15
MaSo
Tak kam nás pozveš? ]:)
Jan Fiala 24.12.2006 16:37
Jan Fiala
Co treba na peevo? Mas aspon 3 u me! ;-) Nebo vydrz az dodelam vysku, vydelam svuj prvni milion dola…
MaSo 24.12.2006 16:38
MaSo
Tak to možná dáme blitzky, JF si koupil Fritze 9 ... poslední
Fuente 25.12.2006 06:58
Fuente

Jen ta v rychlosti, co me napadlo na prvni pohled:

Nedelej FK vazana na SPZ nebo Rodne cislo. Samozrejme to jde, ale znemoznis si dodatecnou opravu RC ridice, pokud by doslo k preklepu.

Tabulka vozidel:
Nedelal bych jako primarni klic SPZ, ale ID_Vozidla
Vozidlo muze mit vychoziho ridice nebo cloveka, ktery se o ne stara - ma je prideleno

Tabulke jizd:
1. jizdy mohou bit vicedenni
2. jizdy mohou mit vice etap (vice cilu) - zalezi na tom, zda to chces zachytit
3. u jizdy bys mel evidovat zacatek a konec i casove

Tabulka paliva:
cena paliva neni stala a jestli nechces pro kazde tankovani zakladat novy zaznam, tezko muzes pridelit cenu k palivu (pokud nejde o zjednoduseny skolni priklad). Cenu bys musel psat primo k tankovani

Tabulka tankovani:
zde by mel byt odkaz na vozidlo, ne naopak
mel by tu byt stav tachometru vozidla pri tankovani
mela by zde byt cena, protoze ta se lisi pri kazdem tankovani

Vicedenni a viceetapove jizdy neresim. :-) Konec a zacatek jsem pridal. Tou cenou u paliva jsem myslel cenu za litr, to by tak podle me byt mohlo. To tankovani jsem upravil, ale stejne tomu nerozumim. Hold, databazista ze me nebude, tady jde hlavne o ten zapocet. :-) Diky moc za odpoved. :beer: Jeste pridam, co mam ted:
[http://show.imagehosting.us/show/1811890/0/nouser_1 811/T0_-1_1811890.png]

Nad carou by mel byt primarni klic.
RIDIC
- co kdyz se 2 budou jmenovat stejne ? Jak je rozpozna obsluha programu ? Pridej tam jeste nejakou informaci

JIZDA
- pridej ID_Jizdy a caru udelej pod tim
- vyhod datum, mas tam prece zacatek a konec, doporucuji typ DateTime, budes mit soucasne reseny i vicedenni jizdy
- vzdalenost zmena na Pocet_KM. Jmeno "vzdalenost" je zavadejici.
- Start a Cil bych prejmenoval, neni mozne poznat, ze jde o nazvy, jestly to chces hodne zkracene, tak aspon Odkud, Kam

VOZIDLA
- vyhod stav tachometru, tady k nicemu neni
- uprav si preklep - "Tovrani_znacka"
- pridej prumernou spotrebu, to byva pri vyhodnocovani zajimavy udaj - podle tankovani pak muzes pocitat skutecnou spotrebu

TANKOVANI
- caru posun pod ID_Tankovani
- pridej stav tachometru pri tankovani

Datum jizdy nemyslim, to jsem tam udelal ja. :-[ Myslel jsem ty (FK). Tak, snad uz posledni verze:

[http://show.imagehosting.us/show/1812050/0/nouser_1 812/T0_-1_1812050.png]

Ted jeste vymyslet nejaky trapny Trigger. Napada me traba takovy, co auto vyrazene (smazane obsluhou) z tabulky Vozidel, automaticky zapise to tabublky Vyrazena_vozidla. Jeste jednou diky moc za pomoc.:beer:

JIZDY
- pridej ID_Jizdy jako primarni klic

TANKOVANI
- stale mi tam chybi pocet km pri tankovani
- proc je ten FK pod carou? :-P

Trigger
- napada me par moznosti - u vozidla mit pocet jizd nebo pocet km, ktere by trigger po zmene jizd aktualizval jako okamzitou statistiku
- aktualni spotreba u auta, kterou by trigger po zapsani tankovani spocital

Na SQL serverech i u nekterych souborovych databazi je primarni klic povinny. Obvykle je vyhodnejsi pouzit nejake autoincrement pole (pokud neexistuje v tabulce primo nejake jednoznacne pole) jako primarni klic nez jej skladat napr. ze 4 poli. Do tabulky se pak doplni dalsi indexy v zavislosti na pouziti.

Na to se typicky pouziva Autoincrement pole. U MS SQL je to Integer, kteremu nastavis vlastnosti, MySQL ma primo typ apod.
Metoda s autoincrementm je vhodna v pripade, kdy potrebujes jednoznacne identifikovat zaznam bez dalsi zavislosti (treba pouziti jako FK).
Pri pouziti jako zavisleho klice, bych hodne premyslel, zda nebudu muset data sehravat, prihravat apod. protoze v tomto pripade by mi autoincrement situaci velmi zkomplikoval.

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