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.
(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)
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.Timukas - 20.5.2010 10:26
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
DolphinDream - 20.5.2010 10:44
Tänud, proovin järele.
Kuidas siis andmebaasi oleks parem disainida?DonQ - 20.5.2010 10:53
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.JAnx - 20.5.2010 13:34
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.DonQ - 20.5.2010 14:19
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 JAnx - 20.5.2010 15:06
Jah, tõsi, tahtsin lihtsalt kiire näite tuua :D Loodan, et teema autor saab siiski poindist aru.DolphinDream - 20.5.2010 15:24
Ei ole koolitöö, unustasin mainida
Eks ma vaatan... ehk muudan ära selle andmebaasi siis madish - 20.5.2010 16:03
mis puutub nimedesse, siis ülikooli õppejõud andmebaaside loomise juures on siiani soovitanud ees- ja perenimed eraldi hoida.DonQ - 20.5.2010 16:07
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.JAnx - 20.5.2010 16:55
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.