DolphinDream
Veterantoru
   
Registreerunud: 27.7.2009
Kasutaja on eemal
|
|
Mul endal juba juhe koos...  Ehk on kellegi mõni hea mõte kuidas saaks:
Mul on tabel milles on autosaatelehed, vahel on saatelehel kuni 5 erinevat koormat, vahel vaid üks. Tabelis on autonumber ja koormad column'ina 1_veos, 2_veos... 5_veos.
Mul oleks siis tarvis kuidagi nii, et ma saaksin kogu tabeli kuvada tähestikujärjekorda pandud veoste järgi. Probleem aga selles, et kuidas sortida erinevad column'id nii, et ei oleks korduvaid tulemusi.
Natuke veel selgituseks
tabelis on siis näiteks:
| Kood: | | [b]auto 1_veos 2_veos 3_veos[/b]
000AAA 0-4 16-32
001AAA 32-64
002AAA 16-32 0-4 64-89 |
(kusjuures, veoste tähised võivad muutuda, st pole alati 0-4 jne seega ei saa otsingut päris teha nii, et veoste tähiste järgi otsida tabelist iga veosetähis eraldi)
Välja peaks ta printima siis sellisel kujul:
| Kood: | | 0-4 000AAA
0-4 002AAA
16-32 000AAA
16-32 002AAA
32-64 001AAA
64-89 002AAA |
Oleks väga tänulik abi eest 
[Muudetud: 20.5.2010 DolphinDream]
[Muudetud: 20.5.2010 DolphinDream]
"Those arent bugs, the enemy is supposed to be able to headshot you from 2km away when you're crawling through a forest on your belly."
|
|
0 |
|
JAnx
Teenekas toru
  
Registreerunud: 16.7.2009
Kasutaja on eemal
|
|
|
|
|
0 |
|
DonQ
Administraator
      
Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal
Tuju: Kerge puhkus
|
|
Pigem valesti disainitud andmebaas 
Ma teeksin viis select'i (igaüks auto numbri ja ühe veose veeruga) ja paneksin union'iga kokku. Muud moodi normaalset lahendust ei oska küll ette kujutada.
|
|
0 |
|
Timukas
Moderaator
    
Registreerunud: 16.7.2009
Asukoht: Rapla
Kasutaja on eemal
|
|
Kuna jõudsin juba DonQ lahenduse enam-vähem ära realiseerida, siis postitan siia:
| Kood: | | SELECT 1veos AS veos , auto FROM auto WHERE 1veos != ""
UNION
SELECT 2veos, auto FROM auto WHERE 2veos != ""
UNION
SELECT 3veos, auto FROM auto WHERE 3veos != ""
ORDER BY veos, auto |
|
|
0 |
|
DolphinDream
Veterantoru
   
Registreerunud: 27.7.2009
Kasutaja on eemal
|
|
Tänud, proovin järele.
Kuidas siis andmebaasi oleks parem disainida?
"Those arent bugs, the enemy is supposed to be able to headshot you from 2km away when you're crawling through a forest on your belly."
|
|
0 |
|
DonQ
Administraator
      
Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal
Tuju: Kerge puhkus
|
|
|
Autode ja veoste seos eraldi koormate tabelisse, kus iga auto ja veose kombinatsiooni kohta sobiv kirje/koorem. See muidugi teeb sisestamise üsna ebamugavaks - pead mingid dünaamilised vormid tekitama, kus kasutaja saab koormaid lisada jne jne. Võimalik, et vaid ühe mitu-mitmele seose tabeli puhul puhul on selline mittenormaliseeritud lähenemine isegi lihtsam, ehkki suure hulga erinevate aruannete puhul peavad kõik päringud sedalaadi (unionidega) olema. Või siis teed sellest ühe vahepäringu (create view jne), mida aruanded kasutavad.
Ma ei tea ju kogu ülesannet ka.
|
|
0 |
|
JAnx
Teenekas toru
  
Registreerunud: 16.7.2009
Kasutaja on eemal
|
|
Küsisingi sellepärast kas on koolitöö, et vahel antakse koolitöö puhul imelisi ülesandeid, kus õpilane peab lahendama natuke standardist väljas olukorra ja sel juhul poleks andmebaasi disaini muuta tohtinud. Andmebaasi võiks disainida nii, et ühesuguste andmete kordust oleks võimalikult vähe. Mõttetu on teha tabelit, kus on näiteks nimed:
1. Maari Maasikas
2. Kusti Maasikas
Parem oleks teha uus tabel perenimedele ja õige koha peal viidata neile.
1. Maari [1]
2. Kusti [1]
[1] on perenimede baasis vaste Maasikas-le.
|
|
0 |
|
DonQ
Administraator
      
Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal
Tuju: Kerge puhkus
|
|
JAnx, Su näide pole kahjuks ideaalne. Inimene on üsna kindel ühik, tema täisnimi on üks tema identifikaatoritest ja tema andmeid niimoodi tükeldada ei ole üldiselt mõistlik. Eesnimi ja perenimi võivad muidugi eraldi väljades-veergudes olla - sõltub vajadusest.
Erand oleks vast olukord, kus kogu rakenduse põhiülesanne ongi nimede analüüs, siis võib olla mõttekas ees- ja perenimed eraldada - laiemalt võttes siis selline rakendus, kus kumbki nimi eraldi võttes olulist tähtsust omab.
Mis koolitöösse puutub, siis on muidugi (mitut pidi) kurb, kui see siin koolitöö on. Teema autor millegipärast ei öelnud ka
|
|
0 |
|
JAnx
Teenekas toru
  
Registreerunud: 16.7.2009
Kasutaja on eemal
|
|
Jah, tõsi, tahtsin lihtsalt kiire näite tuua :D Loodan, et teema autor saab siiski poindist aru.
|
|
0 |
|
DolphinDream
Veterantoru
   
Registreerunud: 27.7.2009
Kasutaja on eemal
|
|
Ei ole koolitöö, unustasin mainida
Eks ma vaatan... ehk muudan ära selle andmebaasi siis
"Those arent bugs, the enemy is supposed to be able to headshot you from 2km away when you're crawling through a forest on your belly."
|
|
0 |
|
madish
Noor toru

Registreerunud: 24.11.2009
Kasutaja on eemal
|
|
|
mis puutub nimedesse, siis ülikooli õppejõud andmebaaside loomise juures on siiani soovitanud ees- ja perenimed eraldi hoida.
|
|
0 |
|
DonQ
Administraator
      
Registreerunud: 16.7.2009
Asukoht: Saturn
Kasutaja on eemal
Tuju: Kerge puhkus
|
|
|
Eraldi väljades või tabelites? Esimene on üsna naturaalne (ehkki tekitab kombo ja 'incremental search' tüüpi sisestuste juures tsipa peavalu), teise juhu kohta aga ootaks põhjendust, kui see tõesti nii soovitati.
|
|
0 |
|
JAnx
Teenekas toru
  
Registreerunud: 16.7.2009
Kasutaja on eemal
|
|
Tegelikult ei olegi mõtet vaidlema hakata =) Kõik oleneb täiesti eesmärgist. Üldjuhul nõustusin juba DonQ-ga, kuna tõepoolest, eesnimi ja perenimi võiks isikuga seotud tabelisse käia. Ei kujutagi ette, kus minu poolt toodud näidet üldse kasutada saaks/võiks.
Just perenimede kohta.
[Muudetud: 20.5.2010 JAnx]
|
|
0 |
|
madish
Noor toru

Registreerunud: 24.11.2009
Kasutaja on eemal
|
|
|
ikka eraldi väljades jah, eraldi tabelites oleks natuke jabur neid hoida, juhul, kui pole mingi nimestatistika andmebaas.
|
|
0 |
|