Avatar billede chrisrj Forsker
20. marts 2003 - 20:57 Der er 118 kommentarer og
1 løsning

Hjælp til mapning og normalisering

Jeg har store problemer med at mappe og normalisere mine tabeller, kan I hjælpe mig?

Jeg har disse tabeller som skal normaliseres til 3. NF/BCNF:

vare, butikker, profiler, bestillinger, konti, konkurrence, tekster, kategori, forhaandstilmelding, omraade, nyheder og menu.


Her følger de enkelte tabeller med attributter:

vare:
VId, VNavn, beskrivelse, pris, butik, billede, kategori.

butikker:
BId, butiknavn.

profiler:
brugernavn, password, navn, adresse, telefonnummer, email, abonnementsnummer, postnummerby, leveringsinterval, konkurrence.

bestillinger:
VId, VNavn, APris, antal, samlet_pris, ialt_pris, abonnementnummer, butik.

konti:
saldo, abonnementsnummer, dage_i_abo.

konkurrence:
KNavn, overskrift, beskrivelse, praemie, SlutDato, sponsor, KId.

tekster:
TekstId, side, beskrivelse.

kategori:
KatNavn, KatId.

forhaandstilmelding:
postnummer, email.

omraade:
omraade.

nyheder:
Nid, overskrift, tekst, dato.

menu:
MenuId, MNavn, OLink, UnderMId, UnderMNavn, ULink.

Jeg har siddet med det her i en uge, og jeg er kun kommet mere i tvivl om hvordan det skal se ud. :(
Avatar billede chrisrj Forsker
20. marts 2003 - 20:58 #1
Der skulle stå:

nyheder:
NId, overskrift, tekst, dato.
Avatar billede arne_v Ekspert
20. marts 2003 - 21:43 #2
Umiddelbart synes jeg ikke der er det store at normalisere !

VNavn må kunne fjernes fra bestillinger, da det kan findes via VId
i vare.

alle priserne må kunne fjernes fra bestilleinger da de enten kan
slåes op i vare eller beregnes.
Avatar billede arne_v Ekspert
20. marts 2003 - 21:45 #3
Og hvis ialt_pris er hvad jeg tror det er, så er der noget galt i
bestillinger idet det virker som om "ordre linier" og "total ordre"
er blevet blandet sammen.
Avatar billede arne_v Ekspert
20. marts 2003 - 21:46 #4
Og jeg savner en BestId i bestillinger !

Ellers får du problemer hvis den samme bestiller samme vare flere gange.
Avatar billede chrisrj Forsker
20. marts 2003 - 21:58 #5
"Umiddelbart synes jeg ikke der er det store at normalisere !"
Men det synes jeg!!

"VNavn må kunne fjernes fra bestillinger, da det kan findes via VId
i vare."
ok

"alle priserne må kunne fjernes fra bestilleinger da de enten kan
slåes op i vare eller beregnes."
ok

"Og hvis ialt_pris er hvad jeg tror det er"
hvad tror du det er?
ialt_pris fås på denne måde:
apris * antal = samlet_pris
alle samlet_pris lægges sammen, og vupti! = ialt_pris. :)

"Og jeg savner en BestId i bestillinger !"
det er rigtigt. Den glemte jeg at skrive. :)
Avatar billede arne_v Ekspert
20. marts 2003 - 22:02 #6
Ja det var hvad jeg gættede på ialt_pris var.

Men det er jo også galt.

Fordi samlet_pris er en del af "ordre linie" mens
ialt_pris er en del af "total ordre".

VId og antal er en del af "ordre linie".

abonnementsnummer og butik må være en del af "total ordre".
Avatar billede arne_v Ekspert
20. marts 2003 - 22:03 #7
Så jeg tror at du skal have splittet den tabel op i 2 tabeller.
Avatar billede chrisrj Forsker
20. marts 2003 - 22:05 #8
du mener noget ala:

bestillinger:
ialt_pris, abonnementnummer.

bestiltevare:
VId, APris, antal, samlet_pris, butik.

eller hvad?
Avatar billede arne_v Ekspert
20. marts 2003 - 22:09 #9
Nej.

Noget i retning af:

bestillingslinie
BestLinId BestID VId antal

bestilling
BestID butik abonnementsnummer
Avatar billede arne_v Ekspert
20. marts 2003 - 22:09 #10
APris kan vi slå op i vare

ialt_pris og samlet_pris kan beregnes.
Avatar billede chrisrj Forsker
20. marts 2003 - 22:10 #11
hvad så med antal?
Avatar billede arne_v Ekspert
20. marts 2003 - 22:11 #12
Data vil kunne se ud som

bestillingslinie
BestLinId BestID VId antal
    1      1  100  3
    2      1  110  2
    3      1  120  1

bestilling
BestID butik abonnementnummer
  1    b1    k1000
Avatar billede arne_v Ekspert
20. marts 2003 - 22:12 #13
antal er i bestillingslinie
Avatar billede arne_v Ekspert
20. marts 2003 - 22:14 #14
hvis Vare 1,2 og 3 koster 10, 11 og 12 kroner
vil samlet_pris blive 20, 22 og 12 kroner og
ialt_pris blive 54 kroner.
Avatar billede chrisrj Forsker
20. marts 2003 - 22:14 #15
ok

For at lige gøre det lidt mere kompliceret, så er pris forskellig fra butik til butik... :)
Avatar billede arne_v Ekspert
20. marts 2003 - 22:20 #16
Shit. Det har jeg  misset.

Så skal vare splittes i:

vare:
VId, VNavn, beskrivelse, billede, kategori

varepris:
VId, pris, butik
Avatar billede chrisrj Forsker
20. marts 2003 - 22:26 #17
ok, så bliver det noget ala det her:

vare:
VId, VNavn, beskrivelse, billede, kategori

varepris:
VId, pris, butik

bestillingslinie
BestLinId BestID VId antal

bestilling
BestID butik abonnementsnummer

eller skal butik fjernes fra bestilling?
Avatar billede arne_v Ekspert
20. marts 2003 - 22:30 #18
Nej.

Du skal jo kende butikken for at kunne finde prisen.
Avatar billede chrisrj Forsker
20. marts 2003 - 22:30 #19
jamen, den er jo i varepris.
Avatar billede arne_v Ekspert
20. marts 2003 - 22:35 #20
varepris indeholde hvad vare X koster i butik Y og hvad vare X koster i butik Z.

bestilling skal indeholde oplysning om ordren er til butik Y eller butik Z
fordi det er 2 forskellige priser vi skal bruge for de 2.
Avatar billede chrisrj Forsker
20. marts 2003 - 22:36 #21
nå ja. :)
Avatar billede chrisrj Forsker
20. marts 2003 - 22:38 #22
Kan du sige mig om tabellerne oppe i starten er mappen korrekt, eller skal der yderligere mapning til?
Avatar billede arne_v Ekspert
20. marts 2003 - 22:49 #23
Tja. Der er ikke mere der lige springer i øjnene.

Men vi har da også været gennem lidt.
Avatar billede chrisrj Forsker
20. marts 2003 - 22:52 #24
:)

hvad med menu tabellen?

Jeg havde tænkt på noget i denne stil:

menu:
MenuId, MNavn, OLink, UnderMId, UnderMNavn, ULink.

til:

menu:
MenuId, MNavn, OLink, UnderMId,

UnderMenu:
UMenuId, UnderMNavn, ULink.

Er det godt?
Avatar billede arne_v Ekspert
20. marts 2003 - 22:56 #25
Ja den har jeg ikek kigget meget på.

Den skal nok også laves om.

Mit forslag vil være:

menu
MenuId, MenuNavn, Parent

eller:

menu
MenuID,MenuNavn

menulink
Parent,Child
Avatar billede chrisrj Forsker
20. marts 2003 - 22:58 #26
hmmm.

Det kan jeg ikke liige gennemskue.

hvorfor?
Avatar billede arne_v Ekspert
20. marts 2003 - 23:02 #27
|--M2
M1--|
    |--M3

vil jeg gemem som enten:

menu
MenuId, MenuNavn, Parent
  1      M1      NULL
  2      M2      1
  3      M3      1

eller:

menu
MenuID,MenuNavn
  1    M1
  2    M2
  3    M3

menulink
Parent,Child
  1      2
  1      3
Avatar billede arne_v Ekspert
20. marts 2003 - 23:02 #28
Jeg tror den sidste giver mest fleksibilitet !
Avatar billede chrisrj Forsker
20. marts 2003 - 23:04 #29
øhhh...skal tegningen læses som om at M2 og M3 er underpunkter til M1?
Avatar billede arne_v Ekspert
20. marts 2003 - 23:08 #30
Ja.

Det så fint ud i indtastning (fast bogstav bredde) og rædselsfuldt
ebagefter (variabel bogstav bredde).
Avatar billede chrisrj Forsker
20. marts 2003 - 23:10 #31
:)

ok, så tror jeg også den sidste er den bedste.
Avatar billede chrisrj Forsker
20. marts 2003 - 23:13 #32
Så det skal altså se sådan ud:

menu
MenuId, MNavn, Link

menulink
OMenuId,UMenuId
Avatar billede arne_v Ekspert
20. marts 2003 - 23:15 #33
Jeg kan ikek se hvad du skal bruge link til.

menu
MenuId, MNavn

menulink
OMenuId,UMenuId
Avatar billede chrisrj Forsker
20. marts 2003 - 23:16 #34
fordi det er til en hjemmeside!! :)
Avatar billede arne_v Ekspert
20. marts 2003 - 23:19 #35
Ah.

OK jeg troede at det var Over/Under igen.

Så skal det selvfølgelig med.
Avatar billede arne_v Ekspert
20. marts 2003 - 23:22 #36
Hm.

Der er bare noget lidt mystisk. Skal der være et link per menu.

Umiddelbart ville jeg tro at der skulle være X links per
nederste menu.

????
Avatar billede chrisrj Forsker
20. marts 2003 - 23:24 #37
"Der er bare noget lidt mystisk. Skal der være et link per menu"
nej, der skal være flere.

Kategorierne er en af undermenuerne
Avatar billede arne_v Ekspert
20. marts 2003 - 23:29 #38
Ovenstående har kun plads til et link per menuIn.

Enten skal du kalde et link for en menu.

Altså:

menu
MenuId, MNavn, link
1        M1    null
2        M2    null
3        M3    null
4        null  http://...
5        null  http://...
6        null  http://...
7        null  http://...

menulink
OMenuID,UMenuID
  1      2
  1      3
  2      4
  2      5
  3      6
  3      7
Avatar billede arne_v Ekspert
20. marts 2003 - 23:30 #39
Eller:

menu
MenuId, MNavn
1        M1
2        M2
3        M3

menulink
OMenuID,UMenuID
  1      2
  1      3
  2      4

links
MenuID  link
  2    http://...
  2    http://...
  3    http://...
  3    http://...

og det ser faktisk pænere ud !
Avatar billede chrisrj Forsker
20. marts 2003 - 23:32 #40
:)

Ja, men er det lige så godt, eller er det det samme?
Avatar billede chrisrj Forsker
20. marts 2003 - 23:33 #41
Varerne skal jo også tilhører kategorier...
Avatar billede arne_v Ekspert
20. marts 2003 - 23:35 #42
Jeg ville vælge den sidste.

Kategori ser OK ud.
Avatar billede chrisrj Forsker
20. marts 2003 - 23:40 #43
ok

Kan du beskrive hvordan jeg mapper/normalisere mig frem til dette?
Avatar billede arne_v Ekspert
20. marts 2003 - 23:44 #44
Øh.

Vi har vel normaliseret de sidste timer !?

Du skal vel bare beskrive hvorfor den valgte tabel-struktur
er normaliseret.
Avatar billede chrisrj Forsker
20. marts 2003 - 23:45 #45
joh, men jeg er ikke så stærk i de teoretiske ting... :(
Avatar billede chrisrj Forsker
20. marts 2003 - 23:48 #46
...og lærerer er jo meget sarte med at det SKAL være korrekt...
Avatar billede arne_v Ekspert
20. marts 2003 - 23:54 #47
Så bliver du nok nødt til at læse noget !

:-)
Avatar billede chrisrj Forsker
20. marts 2003 - 23:55 #48
Det har jeg gjort, men det er alt for kryptiskt!!

Jeg har også lånt en kammerats noter, men det gjore det ikke bedre...
Avatar billede chrisrj Forsker
21. marts 2003 - 00:05 #49
Hvad ville du sige til at jeg skrev noget, og så retter du mig?
Avatar billede chrisrj Forsker
21. marts 2003 - 00:06 #50
Imorgen altså!! Jeg skal snart i seng... :)
Avatar billede arne_v Ekspert
21. marts 2003 - 07:38 #51
Jeg kan godt kommentere lidt, men jeg vil ikke skrive din opgve for dig.
Avatar billede chrisrj Forsker
21. marts 2003 - 07:48 #52
Det er der heller ingen risiko for - det her er kun en lille del af den. :)
Avatar billede chrisrj Forsker
21. marts 2003 - 08:59 #53
Ok, så har jeg skrevet lidt om vare tabellen:

I tabellen vare er VId og VNavn kandidatnøgler. Disse nøgler er entydige dvs. at f.eks. er der ikke to ens VId’er. VId er valgt som primærnøgle, fordi denne er den eneste kandidatnøgle som vil forblive uændret.
Derudover er VId afhængig af butik og VId er også afhængig af kategori. For at skabe sikkerhed og undgå redundans, er tabellen delt op i tre tabeller: vare, vare_kategori og vare_pris.

vare_pris tabellen indeholder pris, BId og VId, hvor VId er primærnøgle. VId er valgt som primærnøgle, da der ikke er andre nøgler i denne tabel.

I tabellen vare_kategori er KId kandidatnøgle. Denne nøgle er entydig dvs. at f.eks. er der ikke to ens id’er. KId er valgt som primærnøgle, da der ikke er andre nøgler i denne tabel. VId er fremmednøgle.
Avatar billede chrisrj Forsker
21. marts 2003 - 09:21 #54
I tabellen menu er MenuId og MNavn kandidatnøgler. Disse nøgler er entydige dvs. at f.eks. er der ikke to ens MenuId’er. MenuId er valgt som primærnøgle, fordi denne er den eneste kandidatnøgle som vil forblive uændret.
Derudover er UnderMId afhængig af MenuId og UnderMNavn, ULink er afhængig af UnderMId. For at skabe sikkerhed og undgå redundans, er tabellen delt op i tre tabeller: menu, menulink og links.

menu tabellen indeholder MenuId og MNavn, hvor MenuId er primærnøgle. MenuId er valgt som primærnøgle, fordi denne er den eneste kandidatnøgle som vil forblive uændret.

I tabellen menulink er OMenuID og UMenuID en sammensat kandidatnøgle. Denne nøgle er entydig dvs. at f.eks. er der ikke to ens id’er. OMenuID og UMenuID er valgt som primærnøgle, da der ikke er andre nøgler i denne tabel. OMenuID og UMenuID er begge fremmednøgle.

Jeg er lidt i tvivl om den sidste:

I tabellen menulink er MenuID kandidatnøgle. Denne nøgle er entydig dvs. at f.eks. er der ikke to ens id’er. MenuID er valgt som primærnøgle, da der ikke er andre nøgler i denne tabel. MenuID er fremmednøgle.

eller skal det være sådan:

Tabellen menulink indeholder MenuID og link. Der er ikke nogen nøgler i denne tabel. MenuID er fremmednøgle.

eller:

Tabellen menulink indeholder MenuID og link, hvor MenuID og link er valgt som sammensat primærnøgle, da der ikke er andre nøgler i denne tabel. MenuID er fremmednøgle.


Hvilken er rigtig?
Avatar billede arne_v Ekspert
21. marts 2003 - 09:51 #55
Jeg kan ikke lide formuleringen "Derudover er VId afhængig af butik og VId er også afhængig af kategori".

Og jeg mener ikke det er nødvendigt med en vare_kategori tabel.
Avatar billede arne_v Ekspert
21. marts 2003 - 09:52 #56
vare_pris skal have (VId+BId) som primær-nøgle.

(VId er ikke unik hvai samme vare sælges i mere end 1 butik)
Avatar billede arne_v Ekspert
21. marts 2003 - 09:53 #57
Hov. Hvis du med vare_kategori mener kategori, så er den OK. KId som
primary key og en foreign key kategori i vare tabellen.
Avatar billede arne_v Ekspert
21. marts 2003 - 09:55 #58
Jeg kan bedst lide den første af de 3 formuleringer.
Avatar billede chrisrj Forsker
21. marts 2003 - 09:59 #59
"Jeg kan ikke lide formuleringen "Derudover er VId afhængig af butik og VId er også afhængig af kategori"."
Mnej, men hvordan skal jeg så skrive det?

Mere mht. kategorier:

Så skal de være sådan:

kategori:
KId...KNavn
.1......A
.2......B
.3......c

vare_kategori:
KId...VId
.1.....1
.1.....2
.2.....3
.2.....4
.3.....5

Det passer vel godt med det jeg skrev?
Avatar billede arne_v Ekspert
21. marts 2003 - 10:17 #60
Hvis en vare kan tilhøre flere kategorier, så skal du have
den vare_kategori tabel.
Avatar billede chrisrj Forsker
21. marts 2003 - 10:18 #61
Det kan den ikke.
Avatar billede arne_v Ekspert
21. marts 2003 - 10:19 #62
Måske:

I tabellen vare bestemmes alle de øvrige felter af VId.

I tabellen vare_pris bestemmes alle de øvrige felter af VId+BId.

A la Boyce Codd's "determinanter".
Avatar billede chrisrj Forsker
21. marts 2003 - 10:19 #63
ok
Avatar billede pdj Novice
21. marts 2003 - 10:31 #64
Jeg har ikke læst hele tråden, men jeg vil kraftigt fraråde at fjerne prisen fra bestilingen. Dvs. hvis en vare ændrer pris efter en kunde har afgivet en bestilling slår det også igennem der. Ville du selv være tilfreds med det, med mindre prisen gik ned? ;-)
(Desuden giver det også mulighed for at give kunden rabat manuelt.)
Avatar billede chrisrj Forsker
21. marts 2003 - 10:33 #65
Bestillingerne vil, som regel, blive leveret dagen efter en bestilling. Så risikoen er nok ikke stor, desuden taler vi heller ikke om priser på tusindevis af kroner.
Avatar billede pdj Novice
21. marts 2003 - 10:41 #66
Dvs. sålænge man kun snyder folk lidt er det ok? Øhh, pointe ikke forstået :-)

I et "rigtigt" system vil man enten kopiere prisen over på bestillingen, eller have detaljeret historik i varepris ved at tilføje en gyldighedsperiode, typisk bare et stoptid. Og selfølgelig tilføje tid på bestillingen så man altid kan finde prisen på tidspunktet for bestillingen.
(Med priser har jeg dog aldrig set eller lavet andet end det første. Det er faktisk tvivlsomt og det overhovedet er lovligt at gøre det via historik, men det er en anden diskussion)
Avatar billede pdj Novice
21. marts 2003 - 10:42 #67
"tvivlsomt og det" skulle være "tvivlsomt om det" :-(
Avatar billede chrisrj Forsker
21. marts 2003 - 10:52 #68
Det kommer til at foregå på denne måde:

Brugeren bestiller varerne.
Dagen efter købes disse varer(og andres bestillinger) af virksomheden.
Hjemme hos virksomheden bliver varerne pakket om.
Til sidst køres varerne ud til kunden.

Det skal jo "kun" bruges til et skole projekt, men jeg kan da godt se dit synspunkt. :)
Avatar billede arne_v Ekspert
21. marts 2003 - 10:54 #69
Jeg kan godt se pdj's pointe.

Det er et af de tilfælde hvor business rules og muligvis endda
jura kommer ind.

Hvis du laver en virkelig applikation, så lyder forslaget meget
fornuftigt.

Hvis du laver opgave i normalisering, så er det nok lidt udenfor
formålet.
Avatar billede chrisrj Forsker
21. marts 2003 - 10:55 #70
Jeg laver et systemudvikling projekt :)
Avatar billede pdj Novice
21. marts 2003 - 11:02 #71
Netop til et normaliserings projekt vil det være godt at have noget der umiddelbart ligner redundant data. Det gælder bare om at have argumenterne klar :-)

I praksis betyder ovennævnte altså at butikken aldrig (eller sjældent) har varen på lager. Når virksomheder kontakter sin leverandør for at få varer sker der i realiteten ofte det at prisen er anderledes end sidst varen blev købt. Derfor må virksomheden vurdere om den skal lade den nye indkøbspris resultere i en ny salgspris. Derfor er der faktisk stor risiko for at prisen ændres fra kunden bestiller varen til den afsendes. Hvis virksomheden derimod kørte med stort lager var det måske ikke så ofte det ville ske. Så er vi henne og diskutere hvilket pris princip der kører etc. (Ligesom jura diskussionen er det vist et andet projekt)

Under alle omstændigheder skader det næppe at kunne fyre lidt af til sin underviser/karaktergiver ;-)
Avatar billede chrisrj Forsker
21. marts 2003 - 11:07 #72
Det er rigtigt. :)

Det drejer sig om dagligvarer som bliver købt i dagligvarerkæderne og kørt ud til forbrugerne.
Avatar billede chrisrj Forsker
21. marts 2003 - 12:45 #73
For lige at vende tilbage til normaliseringen. :)

arne_v -> På hvilke normalformer vil du sige tabellerne er, og hvad med funktionel afhængighed?

Jeg havde forstillede mig sådan her:

vare:
VId, VNavn, beskrivelse, pris, butik, billede, kategori
.|......^.......^..........^.....^......^.........^
.__________________________________________________.... fd 1
.|.........................^.....|.................
._________________________________..................... fd 2
.^................................................|
.__________________________________________________.... fd 3

altså:
fd 1: VId holder alle andre attributter.
fd 2: VId og butik holder pris.
fd 3: kategori holder VId.

Derefter bliver tabellerne således:

vare:
VId, VNavn, beskrivelse, billede, KId
.PK................................FK

varepris:
VId, pris, butik
.FK.........FK
..|.........|
..___________
......PK

vare_kategori:
VId, KId
.FK...FK
..|...|
.._____
....PK

Disse tabeller er nu på 1. NF og kan(bør?) ikke normaliseres yderligere.

Er det korrekt?
Avatar billede chrisrj Forsker
21. marts 2003 - 13:44 #74
Og hvad med bestillinger:

bestillinger:
VId, VNavn, APris, antal, samlet_pris, ialt_pris, abonnementnummer, butik, BestilId.
.^.....^......^.......^..........^............^.................|.........^............^
._______________________________________________________________________________________... fd 1
.^.....^......^.......^..........^............^...........................^............|
._______________________________________________________________________________________... fd 2
.|............^...........................................................|
.__________________________________________________________________________... fd 3
..............|.......|..........^
..............____________________... fd 4
.................................|.............^
................................._______________... fd 5

altså:
fd 1: abonnementnummer holder alle andre attributter.
fd 2: BestilId holder alle andre attributter, undtagen abonnementnummer.
fd 3: VId og butik holder APris.
fd 4: APris og antal holder samlet_pris.
fd 5: samlet_pris holder ialt_pris.

Eller hvordan var det?
Avatar billede arne_v Ekspert
21. marts 2003 - 14:51 #75
Jeg tror da at du er på 3NF/BCNF (formentlig også 4NF og 5NF).

Jeg kan ikke helt forstå de tegninger du laver.
Avatar billede chrisrj Forsker
21. marts 2003 - 15:00 #76
Nej, de er ikke så gode.

En | betyder at den pågældende attribut holder dem med ^.
En _ er en forbindelsesstreg. Et . skulle være mellemrum.

"Jeg tror da at du er på 3NF/BCNF (formentlig også 4NF og 5NF)."

Øhh, jeg må nok have det lidt mere præsist - jeg kan jo ikke sige det til sensor!! :)
Avatar billede chrisrj Forsker
21. marts 2003 - 15:03 #77
Jeg behøver ikke at normalisere udover 3NF/BCNF.
Avatar billede arne_v Ekspert
21. marts 2003 - 15:18 #78
Du tager definition på BCNF og bruger den på alle tabeller
efter normalisering (og BCNF betyder også 3NF). Det betyder
lidt skrive arbejde men er vel ret trivielt.
Avatar billede arne_v Ekspert
21. marts 2003 - 15:20 #79
Og jeg aner ikke hvad "holder attribut" betyder.

Hvis du mener determinerer, så er du jo allerede godt igang med at
påvise BCNF.
Avatar billede chrisrj Forsker
21. marts 2003 - 15:29 #80
"Og jeg aner ikke hvad "holder attribut" betyder."

Det betyder at f.eks. VId bestemmer VNavn.
Avatar billede arne_v Ekspert
21. marts 2003 - 15:34 #81
Ok så er det det samme som determinerer.

fd 1: VId holder alle andre attributter. ---- ikke rigtig (butik, kategori, pris)
fd 2: VId og butik holder pris. ---- rigtig
fd 3: kategori holder VId. ---- ikke rigtig

fd 1: abonnementnummer holder alle andre attributter. ----- no
fd 2: BestilId holder alle andre attributter, undtagen abonnementnummer. ---- no
fd 3: VId og butik holder APris. ---- yes
fd 4: APris og antal holder samlet_pris. ---- yes
fd 5: samlet_pris holder ialt_pris. ---- delvist

se dit 22:26:00 indlæg
Avatar billede chrisrj Forsker
21. marts 2003 - 15:41 #82
"fd 1: VId holder alle andre attributter. ---- ikke rigtig (butik, kategori, pris)"

Mener du de skal fjernes fra den fd?

"fd 3: kategori holder VId. ---- ikke rigtig"
Hvordan så? Omvendt?

"fd 1: abonnementnummer holder alle andre attributter. ----- no"
"fd 2: BestilId holder alle andre attributter, undtagen abonnementnummer. ---- no"
Samme som den anden fd 1?

"fd 5: samlet_pris holder ialt_pris. ---- delvist"
Hvordan delvist?

Jeg poster lige tabellerne igen:

vare:
VId, VNavn, beskrivelse, billede, kategori

varepris:
VId, pris, butik

bestillingslinie
BestLinId BestID VId antal

bestilling
BestID butik abonnementsnummer
Avatar billede arne_v Ekspert
21. marts 2003 - 18:30 #83
Ja. VId determinerer ikke hverken butik (en vare kan sælges i flere
butikker), kategori (en vare kan være i flere kategorier), pris
(forskellige butikke rkan have forskellig pris for samme vare).

kategori og vare er så vidt jeg har forstået en M:M relation
d.v.s. ade ikke rigtigt determinerer hverken den enne eller den anden vej.

samlet_pris er en aggregering af ialt_pris o det er ikke rigtigt
en determinering.

bestilling og bestillinglinie skulle nok hav eværet splittet op
allerede inden normnalisering.
Avatar billede arne_v Ekspert
21. marts 2003 - 18:32 #84
abonnementsnummer deteriminerer kun noget i konto tabellen.

BestID determinerer kun det i bestilling tabel ikke det i bestillingslinie tabel.
Avatar billede chrisrj Forsker
21. marts 2003 - 19:25 #85
Så det skal være sådan?

vare:
fd 1: VId holder alle attributter undtagen butik, kategori og pris.
fd 2: VId og butik holder pris.

bestillinger:
fd 1: BestilId holder alle andre attributter, undtagen abonnementnummer. (I bestilling)
fd 2: VId og butik holder APris.
fd 3: APris og antal holder samlet_pris.
Avatar billede arne_v Ekspert
21. marts 2003 - 19:30 #86
vare:
fd 1: VId holder alle attributter undtagen butik, kategori og pris. ---- ok
fd 2: VId og butik holder pris. ---- ok

bestillinger:
fd 1: BestilId holder alle andre attributter, undtagen abonnementnummer. (I bestilling) ---- ?
fd 2: VId og butik holder APris. ---- ok
fd 3: APris og antal holder samlet_pris. ---- ok

Jeg vil sige at BestilID kun determinerer butik og abonnementsnummer.
Avatar billede chrisrj Forsker
21. marts 2003 - 19:35 #87
Nå ja! Det er rigtigt. :)
Avatar billede chrisrj Forsker
21. marts 2003 - 20:49 #88
Så har jeg skrevet lidt til bestillinger:

I tabellen bestillinger er BestilId kandidatnøgle. Denne nøgle er entydig dvs. at f.eks. er der ikke to ens BestilId’er. BestilId er valgt som primærnøgle, da der ikke er andre nøgler i denne tabel.
Derudover er APris afhængig af butik og VId. samlet_pris er afhængig af APris og antal. For at skabe sikkerhed og undgå redundans, er tabellen delt op i to tabeller: bestilling og bestillingslinie.

bestillingslinie tabellen indeholder BestLinId, BestID, VId og antal, hvor BestLinId er primærnøgle. BestLinId er valgt som primærnøgle, da der ikke er andre nøgler i denne tabel. BestID og VId er fremmednøgler.
Avatar billede arne_v Ekspert
21. marts 2003 - 21:13 #89
"For at skabe sikkerhed og undgå redundans, er tabellen delt op i to tabeller: bestilling og bestillingslinie."

Måske ville jeg enten omformulere eller helt droppe den sætning.

Begrundelse: jeg mener mere at den opslitning er en reel modellering
af virkeligheden end det er en normalisering.

Men du kan godt argumentere for at det er en normalisering for at
undgå redundante data også.

Så du kan også beholde den.
Avatar billede chrisrj Forsker
21. marts 2003 - 21:17 #90
Jamen, så beholder jeg den. :)

Dette er forøvrigt min næstlængste tråd til dato! :)
Avatar billede chrisrj Forsker
21. marts 2003 - 21:21 #91
Vil du mene at det kan betale sig at dele denne tabel op:

profiler:
brugernavn, password, navn, adresse, telefonnummer, email, abonnementsnummer, postnummerby, leveringsinterval, konkurrence.


Sådan:

profiler:
brugernavn, password, navn, telefonnummer, email, abonnementsnummer, postnummer, leveringsinterval, konkurrence.

adresse:
vej, nummer, etage, tv/mf/th, abonnementsnummer

postnummerby:
postnummer, by

Eller er det at oveerdive?
Avatar billede chrisrj Forsker
21. marts 2003 - 21:22 #92
Jeg regner ikke med at der bor mange på samme vej, men der vil bo mange i samme post distrikt.
Avatar billede arne_v Ekspert
21. marts 2003 - 21:26 #93
postmummer, by

skal is separat tabel - det er enhver database undervisers yndlings eksempel
på normalisering.
Avatar billede chrisrj Forsker
21. marts 2003 - 21:29 #94
:)

..og adresse?
Avatar billede arne_v Ekspert
21. marts 2003 - 21:29 #95
udskillessen af adresse er ikke en normalisering, da det er en 1:1
relation.

Det ville det være hvis du lavede:

profiler:
brugernavn, password, navn, telefonnummer, email, abonnementsnummer, leveringsinterval, konkurrence, addresseId

adresse:
adresseId, vej, nummer, etage, tv/mf/th, postnummer

så at flere personer på samme adresse kun havde
adressen en gang.

Men det er en tåbelig normalisering, som kun vil give
problemer. Så drop den.
Avatar billede arne_v Ekspert
21. marts 2003 - 21:30 #96
Så:

profiler:
brugernavn, password, navn, adresse, telefonnummer, email, abonnementsnummer, postnummer, leveringsinterval, konkurrence.

postnummerby:
postnummer, by
Avatar billede chrisrj Forsker
21. marts 2003 - 21:31 #97
ok

Så har vi vist også været det hele igennem. :)

Jeg brygger lige en beskrivelse af profiler sammen....
Avatar billede arne_v Ekspert
21. marts 2003 - 21:34 #98
PS: Husk at postnummer-by tabellen kan hentes i komplet udgave
    fra nettet !  (hvis altså du også skal implementere databasen)
Avatar billede chrisrj Forsker
21. marts 2003 - 21:35 #99
Ja, det har jeg hørt...Men hvor??

Her er den så:

I tabellen profiler er brugernavn og abonnementsnummer kandidatnøgler. Disse nøgler er entydige dvs. at f.eks. er der ikke to ens brugernavne. abonnementsnummer er valgt som primærnøgle, fordi denne er den eneste kandidatnøgle som vil forblive uændret.
Derudover er postnummerby en sammensat attribut, som består af postnummer og by. For at skabe sikkerhed og undgå redundans, er tabellen delt op i to tabeller: profiler og postnummerby.

postnummerby tabellen indeholder postnummer og by, hvor postnummer er primærnøgle. postnummer er valgt som primærnøgle, da der ikke er andre nøgler i denne tabel.
Avatar billede arne_v Ekspert
21. marts 2003 - 21:39 #100
Bl.a. host postvæsenet !

http://www.post.dk/postnumre/index.asp?mm

klik på "Mere info" og der er et download link !
Avatar billede chrisrj Forsker
21. marts 2003 - 21:40 #101
Tak! :)

Og teksten er ok?
Avatar billede chrisrj Forsker
21. marts 2003 - 21:43 #102
Tænk, jeg vidste ikke at firmaer kunne have deres egne postnumre!! Vildt!! :D
Avatar billede arne_v Ekspert
21. marts 2003 - 21:44 #103
Teksten ser OK ud.
Avatar billede arne_v Ekspert
21. marts 2003 - 21:45 #104
Du skal nok ikke regne med at få dit eget postnummer, fordi du beder
om det.
Avatar billede arne_v Ekspert
21. marts 2003 - 21:45 #105
:-)
Avatar billede chrisrj Forsker
21. marts 2003 - 21:47 #106
Øv! ;)
Avatar billede chrisrj Forsker
21. marts 2003 - 21:50 #107
Jeg må sige, at det er virkelig fedt, at du gider at bruge en fredagaften på det her. :)
Avatar billede chrisrj Forsker
21. marts 2003 - 21:50 #108
Du skulle vel ikke vide noget om komponentarkitektur, vel?
Avatar billede arne_v Ekspert
21. marts 2003 - 21:53 #109
Jeg ved en masse om komponent baseret udvikling generelt og i J2EE, men
ikke noget om CORBA og COM/COM+/DCOM.
Avatar billede arne_v Ekspert
21. marts 2003 - 21:54 #110
Eller det elektroniske komponenter (dippedutter) du snakker om ?
Avatar billede chrisrj Forsker
21. marts 2003 - 21:58 #111
"elektroniske dippedutter"?? :D
Nej, det er mere noget hen af strukturering af systemet (lagdelt eller klient/server arkitektur )

Jeg er, også her, lidt i tvivl om hvad det skal være...
Avatar billede chrisrj Forsker
21. marts 2003 - 21:59 #112
Jeg sidder og laver systemet i ASP, hvis det skulle have noget at sige.
Avatar billede arne_v Ekspert
21. marts 2003 - 22:01 #113
Software arkitektur, komponent baseret udvikling etc. er det jeg
laver til daglig.

Jeg underviste i databaser midt i 90'erne. Og der er hængt en lilel smule ved.
Avatar billede chrisrj Forsker
21. marts 2003 - 22:02 #114
Stort!!!

Skal jeg så lige lave et nyt spørgsmål - jeg synes det tager lidt lang tid at poste et svar... :)
Avatar billede arne_v Ekspert
21. marts 2003 - 22:02 #115
Nej - jeg har aldrig arbejdet med ASP.

Jeg har læst lidt om ASP men aldrig prøvet at bruge det.

Men der er en meget aktiv ASP kategori her på Eksperten hvor
du kan stille ASP spørgsmål og få svar.
Avatar billede chrisrj Forsker
21. marts 2003 - 22:04 #116
Selve koden er ikke et problem...det er mere det her komponent-snask...
Avatar billede arne_v Ekspert
21. marts 2003 - 22:04 #117
Jeg mener nok at jeg er ved at have tjent mine point.

Derudover lyder det som om dit spørgsmål hører hjemme
over i programmering kategorien.

programmering - generelt / arkitektur
programmering - scripts - ASP / ASP specikke spørgsmål
Avatar billede chrisrj Forsker
21. marts 2003 - 22:05 #118
"Jeg mener nok at jeg er ved at have tjent mine point."
Lige mine ord. Det var bla. derfor jeg forslog at oprette et nyt spørsmål... ;)
Avatar billede chrisrj Forsker
21. marts 2003 - 22:16 #119
Så har jeg lavet et nyt spørgsmål: http://www.eksperten.dk/spm/331861
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester