[Database] Normalisatie

Pagina: 1
Acties:

  • wheel
  • Registratie: December 2001
  • Laatst online: 21:20
Mensen,

Voor school moet ik een SQL-opdracht maken. Hiervoor moet ik eerst vanuit een factuur de informatiebehoefte bepalen en de boel normalisseren; niet m'n sterkste punt, dat laatste.

De gegevens die ik heb gekregen is een factuur van een studentenuitzendbureau. Hierop staan de gegevens van het bedrijf en de studenten die namens het uitzendbureau bij het betreffende bedrijf gewerkt hebben.

'k Heb tot en met de 3e normaalvorm genormaliseerd, en ben benieuwd of het een beetje klopt.
Tips/commentaar is gewenst mits nuttig >:)

Informatiebehoefte, 0e normaalvorm
FACTUUR
factuurnummer, bedrijfcode, bedrijf, adres, plaats, contactpersoon, telefoonnummer, collegekaart, achternaam, voornaam, opleiding, geboortedatum, aantal dagen

2e normaalvorm
BEDRIJF
factuurnummer, bedrijfcode

BEDRIJFREGEL
bedrijfcode, bedrijf, adres, plaats, contactpersoon, telefoonnummer

LEERLING
collegekaart, achternaam, voornaam, opleiding, geboortedatum, aantal dagen

Mensen met tips? Zou erg fijn zijn 8)

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 22:24
Ik zou dit:
BEDRIJF
factuurnummer, bedrijfcode

BEDRIJFREGEL
bedrijfcode, bedrijf, adres, plaats, contactpersoon, telefoonnummer
in ieder geval veranderen in dit:
FACTUUR
factuurnummer, bedrijfcode

BEDRIJF
bedrijfcode, bedrijf, adres, plaats, contactpersoon, telefoonnummer

Het is maar naamgeving maar een stuk logischer zo

[ Voor 9% gewijzigd door sig69 op 10-05-2005 12:44 ]

Roomba E5 te koop


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ik vind de tabelnamen een beetje vaag en nietszeggend. In de tabel "bedrijf" staat eigenlijk de link tussen een factuur en een bedrijf. Waarom noem je die tabel dan niet "factuur" of "factuurregel"? "Bedrijfregel" kan dan "bedrijf" worden.

Verder is dit gewoon standaard normalisatie van een (half) systeem. Ik zet wel mijn vraagtekens bij "aantal dagen". Wat is dat? Is dat niet berekenbaar? Edit: Zie mabit hieronder. :)

[ Voor 5% gewijzigd door NMe op 10-05-2005 12:49 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Lijkt me niet helemaal correct.

Waar ga je de werkzaamheden bij houden?

Je moet de volgende dingen onderscheiden:

Facturen (voor welk bedrijf zijn ze, betalingsconditie, verloopdatum etc)
Studenten (Naam, Adres, Studentnummer, Uurtarief)
Bedrijven (NAW)
Werkzaamheden (Welke student werkt voor welk bedrijf, hoelang, op welke factuur wordt gefactureerd)

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 22:24
En dan nog: als we er vanuit gaan dat "aantal dagen" het aantal dagen is dat een leerling ergens gewerkt heeft, zou je'm eerder bij FACTUUR onder brengen.

Roomba E5 te koop


  • wheel
  • Registratie: December 2001
  • Laatst online: 21:20
sig69 schreef op dinsdag 10 mei 2005 @ 12:43:
Ik zou dit:
[...]

in ieder geval veranderen in dit:
Het is maar naamgeving maar een stuk logischer zo
Inderdaad handiger. Thanks!
-NMe- schreef op dinsdag 10 mei 2005 @ 12:44:
Ik vind de tabelnamen een beetje vaag en nietszeggend. In de tabel "bedrijf" staat eigenlijk de link tussen een factuur en een bedrijf. Waarom noem je die tabel dan niet "factuur" of "factuurregel"? "Bedrijfregel" kan dan "bedrijf" worden.

Verder is dit gewoon standaard normalisatie van een (half) systeem. Ik zet wel mijn vraagtekens bij "aantal dagen". Wat is dat? Is dat niet berekenbaar?
Namen ga ik aanpassen!
Nee, er wordt geen start- en einddatum in het systeem gezet, slechts hoeveel dagen.
Verwijderd schreef op dinsdag 10 mei 2005 @ 12:47:
Lijkt me niet helemaal correct.

Waar ga je de werkzaamheden bij houden?

Je moet de volgende dingen onderscheiden:

Facturen (voor welk bedrijf zijn ze, betalingsconditie, verloopdatum etc)
Studenten (Naam, Adres, Studentnummer, Uurtarief)
Bedrijven (NAW)
Werkzaamheden (Welke student werkt voor welk bedrijf, hoelang, op welke factuur wordt gefactureerd)
Te veel informatie, die staat allemaal niet op de factuur, en niet in het systeem.
Het bedrag dat berekend wordt is vast, per dag. Bedrag is dus het aantal dagen maal de vaste dagprijs (dus: berekenbaar).
Werkzaamheden komen - voor het gemak 8)7 - ook niet in het systeem voor.

Verwijderd

Te veel informatie, die staat allemaal niet op de factuur, en niet in het systeem.
Het bedrag dat berekend wordt is vast, per dag. Bedrag is dus het aantal dagen maal de vaste dagprijs (dus: berekenbaar).
Werkzaamheden komen - voor het gemak - ook niet in het systeem voor.
dat kan niet, een factuur moet verplicht een specificatie bevatten, dat kun je nu niet zeggen. aan gezien je geen idee hebt welke werknemer in welke periode hoelang voor welke opdrachtgever heeft gewerkt

  • Erycius
  • Registratie: Januari 2003
  • Laatst online: 09-03-2025

Erycius

I came on Eileen.

ook belangrijk in een model als dit kan een tabel "persoon" met specialisatie naar leerling en contactpersoon zijn

zo dus:
persoon
persoonnr (prim key), persoontype, naam, adres, geboorte, ...

student
persoonnr (prim & f key), collegekaartnr, opleiding

contactpersoon
persoonnr, telefoonnr, ...

"persoontype" specialiseert dus of de persoon een leerling dan wel contactpersoon is. (en we gaan dus stilzwijgend uit van een disjuncte specialisatie). Eventueel kan je zelfs een extra tabel persoontype gaan bijhouden, zodat het attribuut persoontype in persoon een foreign key is naar de primary key van die tabel, met als attributen onder andere omschrijving en tabelnaam

en het attribuut "contactpersoon" in bedrijf is dan natuurlijk gewoon een foreign key naar de primary key van persoon, idem voor leerling

Dit is natuurlijk enkel voor een disjuncte specialisatie, als een persoon daarentegen tegelijk leerling en contactpersoon kan zijn moet je 't natuurlijk anders doen.

En dat van die "aantal dagen" is inderdaad erg vaag.

Bloemen scheiden het gras in de tuin.


  • wheel
  • Registratie: December 2001
  • Laatst online: 21:20
Verwijderd schreef op dinsdag 10 mei 2005 @ 12:58:
[...]


dat kan niet, een factuur moet verplicht een specificatie bevatten, dat kun je nu niet zeggen. aan gezien je geen idee hebt welke werknemer in welke periode hoelang voor welke opdrachtgever heeft gewerkt
Ja, dat kan wel, maar de factuur die ik heb gekregen (fictief, uiteraard, dus misschien niet geheel volledig) bevat geen betalingsvoorwaarden en -termijn, noch een specificatie van de werkzaamheden.

Heb 'm iets aangepast, post 'm zo.

  • wheel
  • Registratie: December 2001
  • Laatst online: 21:20
FACTUUR
factuurnummer
bedrijfcode

aantal dagen
dagprijs

BEDRIJF
bedrijfcode
bedrijf
adres
plaats
contactpersoon
telefoonnummer

LEERLING
collegekaart
achternaam
voornaam
opleiding
geboortedatum
sig69 schreef op dinsdag 10 mei 2005 @ 12:48:
En dan nog: als we er vanuit gaan dat "aantal dagen" het aantal dagen is dat een leerling ergens gewerkt heeft, zou je'm eerder bij FACTUUR onder brengen.
Het aantal dagen is afhankelijk van de leerling, toch?

[ Voor 53% gewijzigd door wheel op 10-05-2005 13:07 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:00
Zorg ervoor dat je het dagtarief dat aangerekend werd ook in de factuurregel opneemt.

Wat staat aantal dagen bij leerling te doen ? Dit is -als ik het goed begrijp- het aantal dagen dat leerling bij een bedrijf gewerkt heeft toch ?
Dit moet dus niet bij leerling, maar bij factuurregel, want het is de relatie tussen een leerling en het bedrijf.

[ Voor 68% gewijzigd door whoami op 10-05-2005 13:05 ]

https://fgheysels.github.io/


  • wheel
  • Registratie: December 2001
  • Laatst online: 21:20
whoami schreef op dinsdag 10 mei 2005 @ 13:03:
Zorg ervoor dat je het dagtarief dat aangerekend werd ook in de factuurregel opneemt.

Wat staat aantal dagen bij leerling te doen ? Dit is -als ik het goed begrijp- het aantal dagen dat leerling bij een bedrijf gewerkt heeft toch ?
Dit moet dus niet bij leerling, maar bij factuurregel, want het is de relatie tussen een leerling en het bedrijf.
Klopt, aangepast. Komt het zo in de buurt (uitgaande van mijn 0e normaalvorm)?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

baskick schreef op dinsdag 10 mei 2005 @ 13:02:
Het aantal dagen is afhankelijk van de leerling, toch?
Ja, maar ook van de werkzaamheden, en dus van de factuur lijkt me. Een student kan toch bij meerdere bedrijven werken? Hoe neem je dat op? Hoe kijk je, als je gewoon een totaal opslaat bij de student, een paar jaar later hoeveel uur student x ook alweer bij bedrijf y gewerkt had? ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

post dan eens de factuur zoals hij zou moeten. Want volgens mij heeft dat weinig met een factuur te maken.

  • wheel
  • Registratie: December 2001
  • Laatst online: 21:20
-NMe- schreef op dinsdag 10 mei 2005 @ 13:08:
[...]

Ja, maar ook van de werkzaamheden, en dus van de factuur lijkt me. Een student kan toch bij meerdere bedrijven werken? Hoe neem je dat op? Hoe kijk je, als je gewoon een totaal opslaat bij de student, een paar jaar later hoeveel uur student x ook alweer bij bedrijf y gewerkt had? ;)
Klopt, je hebt helemaal gelijk.
Ik ben hier echt niet goed in 8)7
Verwijderd schreef op dinsdag 10 mei 2005 @ 13:09:
post dan eens de factuur zoals hij zou moeten. Want volgens mij heeft dat weinig met een factuur te maken.
Afbeeldingslocatie: http://www.wieleman.net/school/factuur.jpgMijn excuses voor de verminderde beeldkwaliteit, beetje behelpen, maar leesbaar ;)

[ Voor 12% gewijzigd door wheel op 10-05-2005 13:32 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:00
Kunnen er meerdere studenten bij één bedrijf werken ?

Zowiezo zal je een tabel 'student', een tabel 'bedrijf', een tabel 'factuur', en een tabel 'factuurregel' nodig hebben.
Een factuur verstuur je aan een bedrijf, en een factuur bevat factuurregels waarop de geleverde werkzaamheden per student staan samen met het dagtarif oid.

https://fgheysels.github.io/


  • wheel
  • Registratie: December 2001
  • Laatst online: 21:20
whoami schreef op dinsdag 10 mei 2005 @ 13:12:
Kunnen er meerdere studenten bij één bedrijf werken ?

Zowiezo zal je een tabel 'student', een tabel 'bedrijf', een tabel 'factuur', en een tabel 'factuurregel' nodig hebben.
Een factuur verstuur je aan een bedrijf, en een factuur bevat factuurregels waarop de geleverde werkzaamheden per student staan samen met het dagtarif oid.
Stap 1 / 0e normaalvorm
BEDRIJF
factuurnummer
bedrijfcode
bedrijf
adres
plaats
contactpersoon
telefoonnummer
collegekaart
achternaam
voornaam
opleiding
geboortedatum
aantal dagen
bedrag
aantal studenten
totale bedrag



Stap 2 / 1e normaalvorm
BEDRIJF
factuurnummer
bedrijfcode
bedrijf
adres
plaats
contactpersoon
telefoonnummer

STUDENT
factuurnummer
collegekaart

achternaam
voornaam
opleiding
geboortedatum
aantal dagen


Stap 3 / 2e normaalvorm

BEDRIJF
factuurnummer
bedrijfcode
bedrijf
adres
plaats
contactpersoon
telefoonnummer

FACTUURREGEL
factuurnummer
collegekaart

aantal dagen

STUDENT
collegekaart
achternaam
voornaam
opleiding
geboortedatum


Stap 4 / 3e normaalvorm

BEDRIJF
factuurnummer
bedrijfcode

BEDRIJFREGEL
bedrijfcode
bedrijf
adres
plaats
contactpersoon
telefoonnummer

FACTUURREGEL
factuurnummer
collegekaart

aantal dagen

STUDENT
collegekaart
achternaam
voornaam
opleiding
geboortedatum

Geloof dat 'ie nu helemaal correct is (nagekeken en goedgekeurd :))

Allemaal bedankt voor de tips!

[ Voor 56% gewijzigd door wheel op 10-05-2005 14:13 ]


Verwijderd

Nope, factuurnummer is geen eigenschap van bedrijf.

Verander BEDRIJF in FACTUUR

en BEDRIJFREGEL in BEDRIJF

overigens zou ik Factuurregel iets specifieker maken, maar dat hoeft niet perse

Verwijderd

en zet al die eigenschappen die nu in bedrijfsregel staan (wat dus factuurregel moet zijn ) naaar bedrijf zelf.

bedrijf
-bedrijfscode

factuur
-primary key: factuurnummer
-foreign key: bedrijfscode

factuurregel
-foreign key factuurnummer
-foreign key studentnummer

denk logisch na: een bedrijf heeft meerdere facturen. Elk factuur bestaat uit meerdere regels waarin een student moet worden gereferencieerd.

[ Voor 59% gewijzigd door Verwijderd op 10-05-2005 14:50 ]


  • wheel
  • Registratie: December 2001
  • Laatst online: 21:20
Verwijderd schreef op dinsdag 10 mei 2005 @ 14:47:
en zet al die eigenschappen die nu in bedrijfsregel staan (wat dus factuurregel moet zijn ) naaar bedrijf zelf.

bedrijf
-bedrijfscode

factuur
-primary key: factuurnummer
-foreign key: bedrijfscode

factuurregel
-foreign key factuurnummer
-foreign key studentnummer

denk logisch na: een bedrijf heeft meerdere facturen. Elk factuur bestaat uit meerdere regels waarin een student moet worden gereferencieerd.
Tussendoor even contact gehad via MSN, en zoiets moet 't worden...?!

Stap 4 / 3e normaalvorm

BEDRIJF
bedrijfcode
bedrijf
adres
plaats
contactpersoon
telefoonnummer

FACTUUR
factuurnummer
bedrijfscode (foreign key)
datum

FACTUURREGEL
factuurnummer (foreign key)
student (foreign key)
aantal dagen

STUDENT
collegekaart
achternaam
voornaam
opleiding
geboortedatum

[ Voor 35% gewijzigd door wheel op 10-05-2005 20:10 ]


  • wheel
  • Registratie: December 2001
  • Laatst online: 21:20
sig69, -NMe-, mabit, EryciusPuteanus, whoami en s-man2, hartstikke bedankt allemaal voor de hulp, in de vorm van tips en/of commentaar!

Donderdag weer even laten nakijken, en dan hopen dat ik mag toetsen!
Thanks allemaal...!!
Pagina: 1