Vinnaren i pepparkakshustävlingen!
2015-09-21, 13:33
  #1
Medlem
Hej!
Jag är nybörjare gällande databasmodellering och ska göra det i 3 faser; konceptuell, logisk och fysisk modellering. Nu ska tabeller skapas så att entiteter har en relation till varandra men när jag gör det så blir lite jag osäker när kunden beställer produkter som är indelade i olika kategorier. Så här ser tabeller ut:

I tabellen kund finns kundid, namn, adress och postnummer attributen.
Produkt har #kundid, produktid, produkt, antal (tänkte om kunden beställer flera samma produkter).
Och så innehåller order #kundid, #produktid.

Är det något som jag missar? Känns som att något är fel.
Citera
2015-09-21, 13:46
  #2
Medlem
Konceptuella modellen innehåller entiteterna Produkt och Kund

Logiska modellen där du lägger till kardinalitet mm, där uppkommer relationsobjektet Produkt/Kund då det uppkommer många till många relation.

Produkt får inte innehålla Kundid, endast i relationsobjektet förekommer båda, tillkommer dock ordernummer/beställningsid eller liknande nyckel då Kund kan självklart beställa samma Produkt flera gånger.
__________________
Senast redigerad av CalleDussin 2015-09-21 kl. 13:49.
Citera
2015-09-21, 13:47
  #3
Moderator
Protons avatar
Citat:
Ursprungligen postat av zyxos
Hej!
Jag är nybörjare gällande databasmodellering och ska göra det i 3 faser; konceptuell, logisk och fysisk modellering. Nu ska tabeller skapas så att entiteter har en relation till varandra men när jag gör det så blir lite jag osäker när kunden beställer produkter som är indelade i olika kategorier. Så här ser tabeller ut:

I tabellen kund finns kundid, namn, adress och postnummer attributen.
Produkt har #kundid, produktid, produkt, antal (tänkte om kunden beställer flera samma produkter).
Och så innehåller order #kundid, #produktid.

Är det något som jag missar? Känns som att något är fel.
Verkar aningen snett ja. Vad gör kundid i produkt?

Produkt borde du rimligen använda till att hålla rätt på vilka produkter som finns tillgängliga, thats it. Inget alls om en produkt är köpt etc borde finnas häri. Produkten har ju ingen egentlig koppling till en kund förrens kunden köper denna produkt, right?

En order borde du rimligen kunna dela upp i två tabeller, en orderheader som håller vilken kund det är fråga om, eventuella referenser till adresser etc samt en orderrad-tabell som håller rätt på vilka produkter som ingår i en order. En header kan alltså ha flera orderrader kopplad till sig, det verkar väl logiskt?
Citera
2015-09-21, 14:02
  #4
Medlem
Hur håller man reda på vilka kunder som beställer produkter då? Varje primära nycklar ska väl peka på främmande nycklar? Det var vad jag tänkte på kundid i produkt tabellen. Skulle vara mycket tacksam om ni skriver och rättar till databasen så att jag fpörstår bättre.
Citera
2015-09-21, 14:08
  #5
Medlem
Citat:
Ursprungligen postat av zyxos
Hur håller man reda på vilka kunder som beställer produkter då? Varje primära nycklar ska väl peka på främmande nycklar? Det var vad jag tänkte på kundid i produkt tabellen.

Nu är inte din modell komplett men jag fortsätter ge dig exempel med din avgränsning.

Jag skrev att i din logiska modell finns nu tre "objekt", sprungna ur de två från den konceptuella.
I relationsobjektet Kund/Produkt Finder du vilka Kunder som beställt vilka produkter och omvänt vilka Produkter som beställts av vilka Kunder, I tabellen bör det uppstå ett ologiskt id som knyter samman Kund/produkt, detta behöver inte visas.
Citera
2015-09-21, 14:15
  #6
Medlem
Jaha okej, nu börjar det klarna till i skallen. Tack för er tid! Detta var klurigt i början.
Citera
2015-09-21, 14:19
  #7
Medlem
Exempel

Det finns Kund A, B och C
Det finns Produkt 1, 2 och 3

Rader i tabell Kund/produkt (avser Beställning som borde bli tabellnamnet)

Kund. Produkt. datum. genererat dummyid

A. 2. 20150921 Xyz
A. 3. 20150921. Kha
C. 2. 20150924. Npo


Dvs kund B har ännu inte lagt nån beställning, produkt 1 har ingen beställt
Citera
2015-09-21, 14:21
  #8
Moderator
Protons avatar
Använder du approachen jag föreslog, dvs en tabel för att hålla rätt på orderheaders och en annan för att hålla rätt på dess ingående rader är det ju lämpligt att ha kundid i headern, raderna måste enligt många till en-förhållandet na en relation till sin header. Varje rad får representera en produkt, antal samt ett eventuellt styckpris som kanske avviker från grundpriset i produkttabellen.

På det sättet får du ju en logisk kedja:

En produkt (och antal) per orderrad.
Varje orderrad kommer ha en och endast en header.
Headern håller rätt på kunden som äger ordern.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback