Normaliseren vraag, 0e,1e,2e,3e normaalvorm - Softwareontwikkeling - GoT
Normaliseren vraag, 0e,1e,2e,3e normaalvorm
maandag 7 mei 2012 10:44
Ben bezig met een studieopdracht waar ik niet helemaal uitkom, altijd ruzie met normaliseren, kwartje is wellicht nog niet goed gevallen. Ik vraag jullie niet om mijn huiswerk te doen maar wel om me te sturen. De vraag:
Ik heb drie relaties die al in meer of mindere mate in een normaalvorm staan. Doel is bepalen welke normaalvorm en deze vervolgens allemaal naar een derde normaalvorm te brengen. De relaties:
a)	MusicCd(CdNr, Titel, Artiesten, Recordcompany, companyAdress, uitbrengdatum, made in country)
b)	Artikelbestelling(FabrikantNr, ArtikelNr, Klantnr, artikelnaam, FabrikantNaam, Klantnaam, stuks). Artikelen, klanten en fabrikanten zijn ieder uniek genummerd. Diverse artikelen kunnen door diverse fabrikanten worden geleverd.,
c)	MultipleChoiceVraag(VraagNr, VraagTekst, AntwoordTekst1, AntwoordTekst2, AntwoordTekst3, AntwoordTekst4, …)
Welke normaalvorm volgens mij:
a) heeft m.i. geen repeterende attributen meer net zoals b). Bij b) zie je nl. staan dat artikelen uniek is genummerd, allebei dus i.i.g. in de eerste normaalvorm. Verder heeft b) relaties die deels afhankelijk zijn van de primaire sleutel en is daarmee 2e normaalvorm c) heeft overduidelijk repeterende attributen en is daarmee een 0e normaalvorm.
Zet ze in 3e normaalvorm:
a) MusicCd(CdNr, Titel, Artiesten, <Recordcompanynr>, uitbrengdatum, made in country)
Recordcompany(Recorcompanynr, Recordcompanynaam, Companyadres.)
Ik heb dus een extra relatie aangemaakt, Recordcompany waarin het RecordCompanynr uniek is en als foreign key genoemd staat bij MusicCD
b) Artikelbestelling(FabrikantNr, ArtikelNr, Klantnr. )
Fabrikant (fabrikantnr.,Fabrikantnaam)
Klant (klantnr., klantnaam, stuks)
Artikel (artikelnr., artikelnaam)
Wat ik hier lastig vond is stuks ergens onder te brengen.
c) MultipleChoiceVraag(Vraagnr., VraagTekst)
MultipleChoiceAntwoord(Vraagnr, AntwoordTekst1, AntwoordTekst2, AntwoordTekst3, AntwoordTekst4)
dit was voor c) het beste wat ik kon bedenken....
maandag 7 mei 2012 11:24
Het is belangrijk dat je je gezonde verstand ook een plekje geeft
Waar hoort stuks bij? Als je simpel nadenkt dan bestel je niet een aantal klanten toch?
c) heeft overduidelijk repeterende attributen en is daarmee een 0e normaalvorm.
Vind je dit in je nieuwe manier nog steeds zo? Heb je altijd 4 antwoorden bij multipleChoice? Of kunnen het er ook 3 zijn?
maandag 7 mei 2012 12:49
Anoniem: 241683 schreef op maandag 07 mei 2012 @ 11:24:
Touché, inderdaad, stuks klanten slaat nergens op, ziet er ook niet uit in mijn testpopulatie.
Ah, thnx, zat met mijn hoofd te denken in de vorm dat je op een multiple choice vraag altijd vier antwoorden hebt, maar dit hoef je natuurlijk niet te geven.
maandag 7 mei 2012 18:52
Artiesten (meervoud) klinkt ook fishy als record voor een CD/opname.
dinsdag 8 mei 2012 22:01
Artiest zou ik zelf ook geneigd zijn om een aparte tabel voor te maken....
dinsdag 8 mei 2012 23:20
Ik heb er nog eens over nagedacht en heb wat tips verwerkt. a) was ik tevreden over en heb daar niks aangepast.
b) artikelbestelling bestaat uit foreign keys, omdat meerdere fabrikanten hetzelfde artikelen kunnen lezen is de sleutel een combi van deze twee, klantnr hoeft niet. Stuks past hier nu ook mooi bij.
c) aanname gedaan dat een atwoord maar bij één vraag hoort, ben er nog niet over uit.
b) Artikelbestelling(<FabrikantNr>,< ArtikelNr>., Klantnr, stuks )
Klant (klantnr., klantnaam, )
MultipleChoiceAntwoord(<Vraagnr>, AntwoordTekst)
vrijdag 11 mei 2012 13:33
Je bent goed op weg, maar toch nog wat pointers:
Zoals al eerder gezegd, een veldje "Artiesten" sounds fishy Beter is, een tabel met artiesten, en een koppeltabel tussen MusicCD en Artiesten
Komen bepaalde artikelen altijd van bepaalde fabrikanten, of is het ook mogelijk om artikel met bv. nummer 1543 bij verschillende fabrikanten te bestellen? Indien het eerste het geval is (Je bestelt een goudse kaas altijd bij Maaslander bv), dan is Fabrikant wellicht een relation van Artikel, en heeft fabrikant geen plek in ArtikelBestelling
Kan een klant ook een bestelling doen met meerdere verschillende artikelen erin? Hoe hou je die bestelling, dus de losse artikelen plus aantal, bij elkaar? In de textbook examples wordt dan meestal een tabel met bestellingen en een tabel met bestelregels aangemaakt. Zelfde geldt bv ook voor facturen.