Permalänk
Medlem

Få hjälp med ER-diagram.

Jag har verkligen ingen koll på hur man ska gå tillväga med detta. Har läst på om er diagram men vet inte hur jag ska få till det. Någon som kan hjälpa en total noob?

https://imgur.com/uKMeCys

Förtydligat rubrik / Mod
Permalänk
Medlem
Skrivet av Superpu:

Jag har verkligen ingen koll på hur man ska gå tillväga med detta. Har läst på om er diagram men vet inte hur jag ska få till det. Någon som kan hjälpa en total noob?

https://imgur.com/uKMeCys

Någon form av påbörjan måste du ju ha eller i minsta fall en konceptuell bild över hur en databas ska se ut på pappret. Känns inte som en "uppgift 1" heller då det är så många delar som ska vara med från start så det borde väl finnas någon bas att utgå från tidigare uppgifter?

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

@Leedow:
Nä detta är första uppgiften

Permalänk
Medlem

@Superpu:

All right, bara att bita i det sura äpplet.

Litteratur?

Skriv ner alla entiteter.
Tilldela alla entiter deras attribut.
Gör kopplingarna mellan entiteterna.
Gör kardinalitet mellan entiteterna.

Börja någonstans så hjälper vi vid behov.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

@Leedow:
Här är mitt ER diagram än så länge.
https://imgur.com/IJnjFHK

Vet inte om det är rätt utifrån uppgiften. Undrar även över förhållanden. I sambandsförhållanden kan jag skriva "har" i alla?

Permalänk
Medlem
Skrivet av Superpu:

Jag har verkligen ingen koll på hur man ska gå tillväga med detta. Har läst på om er diagram men vet inte hur jag ska få till det. Någon som kan hjälpa en total noob?

https://imgur.com/uKMeCys

Sök på youtube. Säker på att det finns steg för steg hur man gör

Visa signatur

Coca Cola missbrukare Förbjuden dryck för mig pga diabetes
AMD älskare
Katt älskare

Permalänk
Medlem

Hyggligt underhållande bok/sida samt en frisk fläkt av 90-talswebdesign!
http://www.databasteknik.se/webbkursen/er/index.html

Skickades från m.sweclockers.com

Permalänk
Medlem

@Superpu:

Riktigt bra början!

Du kan inte skriva "har" i alla scenarion för det stämmer inte. Sambandet måste beskrivas tydligare än så annars behöver man inget samband. På en byggnad har det utförts historiska händelser. En fastighet ägs av en fastighetsägare. Man kan förenkla det genom att säga att det är verbet i meningen som bör vara sambandet.

Om du tittar på din Hyresgäst och Fastighetsägare så kan man normalisera detta genom att skapa en Person-entitet som används för att lagra personuppgifterna istället för att lagra exempelvis förnamn/efternamn på två ställen.

Adress-entiteten har en "Port"-egenskap men då Adress-entiteten är till för Byggnad så blir port-egenskapen poänglös. Jag skulle ta det lite längre och koppla Person-entiteten till Adress också. För att ta fram scenarion så är det sambanden/verben man ska fokusera på. En person bor på en adress. Det står inte i uppgiften däremot så allt är ju en fråga om vilken nivå man vill lägga sig på.

Historik-entiteten blir svår att hantera om varje ny händelse skapar ett nytt attribut. Om man tänker sig scenarion här så borde varje händelse ha exempelvis benämning, datum, kostnad.

I fortsättningen rekommenderar jag att du gör detta på datorn då det är riktigt svårt att hantera förändringar på papper.
Du kan göra det i MSPaint exempelvis.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

@Leedow:
Om jag skapar en "Person" entitet. Vad ska det stå i hyresgäst/fastighetsägare entiteten för attribut då?

Permalänk
Medlem

Draw.io skulle jag rekommendera framför paint, eller möjligen PowerPoint om du råkar ha det. I båda går det att se till att kopplingar följer med objekten om/när du flyttar dom.

Skickades från m.sweclockers.com

Permalänk
Medlem

Skulle ta en titt på attributet ålder.

Permalänk
Medlem
Skrivet av Superpu:

@Leedow:
Om jag skapar en "Person" entitet. Vad ska det stå i hyresgäst/fastighetsägare entiteten för attribut då?

Ingenting som jag kan komma på rent spontant vilket gör att dessa entiteter enbart har en semantisk eller beskrivande funktion för ER-diagrammet. Samma funktion kan man uppnå i nästa steg där du ska göra EER-diagram. ER-diagram har inget krav på normalisering av datat utan det sker i senare steg så det är inget krav om inte kursen kräver det.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

@Leedow: Men jag måste väl lägga til något som kan koppla Hyresgäst/Fastighetsägare med person? Typ ID eller personnummer på dem?

Permalänk
Medlem

@Superpu:

Ja, precis. Det är däremot underförstått i ett ER-diagram med tanke på förhållandet och även något som inte några av dina andra entiteter har. Rimligtvis så har Hyresgäst och Fastighetsägare en främmande nyckel till Person.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

@Leedow:
Jag skulle verkligen uppskatta om du skulle kunna rita ut detta ett er diagram https://imgur.com/9zsK6FW

Jag förstår verkligen inte alls och tycker föreläsningen har varit totalt skit. Man ska ju undvika nullvärden men jag får hela tiden nullvärden samt att jag fattar inte hur man ska rita....
Jag behöver få det uppritat för att kunna förstå bättre

Har ritat ut lite här https://imgur.com/xY4qkgt men inte allt för jag förstår inte. Som tex "Chef" och jag vill ha adressen kopplad till chef. Ska man då skriva ut ID_Adress som en attribut(främmande nyckel) på chefen? Skriver man ut främmande nycklar i ett er diagram.

Tack på förhand.

Permalänk
Medlem
Skrivet av Superpu:

@Leedow:
Jag skulle verkligen uppskatta om du skulle kunna rita ut detta ett er diagram https://imgur.com/9zsK6FW

Jag förstår verkligen inte alls och tycker föreläsningen har varit totalt skit. Man ska ju undvika nullvärden men jag får hela tiden nullvärden samt att jag fattar inte hur man ska rita....
Jag behöver få det uppritat för att kunna förstå bättre

Har ritat ut lite här https://imgur.com/xY4qkgt men inte allt för jag förstår inte. Som tex "Chef" och jag vill ha adressen kopplad till chef. Ska man då skriva ut ID_Adress som en attribut(främmande nyckel) på chefen? Skriver man ut främmande nycklar i ett er diagram.

Tack på förhand.

Edit: missuppfattade uppgiften.

Nu vet inte jag vad för kurslitteratur ni använder, men jag kan rekommendera fundamentals of database systems.

Visa signatur

Someone said that money can't buy everything... That person didn't know where to shop

Permalänk
Medlem
Skrivet av Superpu:

@Leedow:
Jag skulle verkligen uppskatta om du skulle kunna rita ut detta ett er diagram https://imgur.com/9zsK6FW

Jag förstår verkligen inte alls och tycker föreläsningen har varit totalt skit. Man ska ju undvika nullvärden men jag får hela tiden nullvärden samt att jag fattar inte hur man ska rita....
Jag behöver få det uppritat för att kunna förstå bättre

Har ritat ut lite här https://imgur.com/xY4qkgt men inte allt för jag förstår inte. Som tex "Chef" och jag vill ha adressen kopplad till chef. Ska man då skriva ut ID_Adress som en attribut(främmande nyckel) på chefen? Skriver man ut främmande nycklar i ett er diagram.

Tack på förhand.

Din påbörjan är bra men det krävs kopplingar samt ytterligare normaliseringar för att färdigställa det.

Har du koll på normalformerna?

Nullvärden får du om du lagrar många olika typer av objekt i en och samma tabell.

Du behöver inte bry dig om främmande nycklar då dessa sker automatiskt och underförstått genom förhållandet mellan entiteterna. Du kan skriva ut främmande nycklar om du vill men det är kopplingen mellan entiteterna som är viktiga och som förklarar främmande nyckeln.

Rent krasst så är det inte Chef(en) som har en adress, det är Person(en) som har. Alla Person(er) bör ha en Adress. Butiken har också en Adress. En Butik har Personal (inte bara anställda). Personal har olika roller, exempelvis Chef eller Anställd.
Hur man väljer att modellera är helt valfritt och för uppgiften kan du uppfylla utan att modellera en modell som är närmare verkligheten om du vill även fast jag personligen föredrar en mer realistisk modell - inte bara det som krävs för uppgifterna.

Din Öppettider kommer få många nullvärden då när det är öppet så är stängt null, när det är stängt så är öppet null. Du kan normalisera detta ett steg genom att kalla det för status istället. Då kommer status aldrig vara null. status skulle kunna innehålla öppettiderna i textformat eller så skulle du kunna göra en mer avancerad öppettidsstruktur med flera tabeller där man kan specifiera öppettider på minutnivå.

Jag kan tyvärr inte modellera åt dig då ingen vinner på det. Jag kan enbart peka dig i rätt riktning.

En liknande tabell med lösning för att hantera det ner till 3NF finns här: http://www.databasteknik.se/webbkursen/normalisering/index.ht...

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

@Enity: Tack för tips.

Permalänk
Medlem

@Leedow: Hej. Förlåt för att jag inte skrev tillbaka och tack för alla tips och hjälp hitintills. Har varit väg ett antal dagar så har inte haft tid att svara

Här är min ER över butikstabellen.
https://imgur.com/atPmR2q

Undra också om man ska skriva plural i entiteterna och attributen eller bara singular? Butiker/Butik, öppettid/öppettider.

Tack på förhand.

Permalänk
Medlem

@Superpu:

Snyggt!

Hur ska man tolka förhållandet mellan samt entiteterna Butik, Varor och Produkt? En vara och en produkt är ju egentligen samma sak. Varor och produkter är bara skillnad i singular/plural. Kan det vara så att Varor egentligen ska vara Lager? Det finns nog inget fel att ha relationen direkt mellan Butik och Produkt, utan att använda Lager, men man måste kunna argumentera för sitt val. Det kan vara så att Lager är överkurs.

Din Produkt-entitet är inte helt korrekt. Det är inte lämpligt att skapa ett nytt attribut för varje ny produkt. Vad hade hänt om man hade en motorsåg? Jo, alla andra attribut hade blivit null. Motorsågen är inte en symaskin eller stekpanna, etc.
Vad är det som kännetecknar en produkt i en butik? Vad delar alla olika produkter för egenskaper? Egenskaperna de delar bör vara egna attribut.

Entiteterna och förhållandet mellan Chef, Person namn, Personal samt Adress hade jag ändrat en aning. Det känns inte semantiskt korrekt att ha entiteten Person namn. Den förbjuder rent semantiskt att lägga på flera entiteter. Det låter exempelvis väldigt konstigt om man skulle lägga till attributet personnummer till den då namnet anger att det enbart bör vara namnrelaterat. Jag hade bytt namn på Person namn till Person. Vidare hade jag ändrat förhållandet mellan Chef, Person, Personal till Är. (En personal är en person, en chef är en person). Detta gör det även mer logiskt att en Person bor på en Adress, inte bara Person namn.

En parentes gällandes semantik vilket är ett ord jag ser ut att ha använt mycket men kanske inte förklarat.

När man pratar om semantik när det gäller datorvetenskap (men säkert rent generellt) så är det att ordet betyder/är/innebär/etc det som det är. Det hade varit konstigt att döpa en tabell till Hund och sen sparar man katter och hästar i den också. Tabellen borde i det fallet heta Djur exempelvis. Semantiken gör att man kan vara precis i vad man faktiskt vill göra/lagra/identifiera vilket underlättar för en annan person att verkligen förstå vad syftet är. Det är en form av abstraktion som blir mer korrekt för att det är vad man faktiskt syftar på.
Edsger W. Dijkstra förklarar detta med abstraktion och semantik väldigt bra: "The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise".
Så istället för att se på Hund, Katt och Häst som unika entiteter så abstraherar man dessa till Djur.
Sidoparentes:
Ibland kan det vara lika viktigt att ha separata entiteter, men då är det även viktigt att entiteterna är separata. I Katt-tabellen sparar man katter, i Hund-tabellen sparar man hundar. Hur modellen/databasen/verksamheten faktiskt fungerar invaliderar inte att man vill kunna vara semantiskt korrekt i när man pratar om verksamheten för att faktiskt kunna modellera korrekt.

Dold text

Singular och plural spelar ingen direkt roll, det är enbart en smaksak.
Rent databasmässigt så är singular att föredra då det i majoriteten av fallen blir mer semantiskt korrekt att skriva sina querys exempelvis. Det finns däremot många fler argument kring det. Jag har skapat modeller/databaser med och utan plural och i vissa fall är det bra och i andra inte. Generellt skulle jag säga att singular är bäst men att i det stora hela inte spelar någon större roll.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

@Leedow: Hm okej. Ska sitta och klura lite på detta nu i kväll med den nya information jag fått :P. Och den förklaringen på semantik var jättebra!

Permalänk
Medlem

@Leedow:

Detta är efter jag har ändrat. Ska även säga att adressen är förenklad och räcker med ett adressnamn.

https://imgur.com/2SA0rrX

Permalänk
Medlem

@Superpu:

Ser bättre ut!

Titta igen på vilken sorts data/egenskaper/attribut som tabellen i uppgiften listar.
Se över om du uppfyller möjligheten att lagra dessa med attributen som du har.

Sen är det väl kardinaliteten kvar också? Vet inte riktigt hur långt uppgiften kräver att du ska göra.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

@Leedow: Såg att jag glömde lägga till ett attribut för produkterna(namn eller produktnamn).

Permalänk
Medlem

@Leedow: https://imgur.com/UGWBbTa

Här är från den första uppgiften. Är detta nära på att vara rätt?

Permalänk
Medlem

@Superpu:

I helhet ser det bra ut.

Jag skriver ner funderingar.

Historik-entitetens attributer måste ses över.
Jag tror du borde föreställa dig det som en loggbok och vilka abstrakta attribut varje händelse har. Vad har varje historikhändelse för egenskaper i verkligheten och vilka känns lämpliga att ha med i modellen?

Gällandes Hyresgäst så finns det ett attribut som inte är lämpligt att ha - Ålder. Det står i uppgiften att både personnummer och ålder är exempel på attribut som ska med men detta är olämpligt anser jag.
Ålder är ett absolut värde i databasen som inte är relativt till åskådarens tidsperiod. Sparar man åldern 28 så måste man ju uppdatera det värdet varje gång personen fyller år, vilket är ohållbart i längden. Om man inte uppdaterar värdet så kommer ålder 28 stå kvar även om det har gått fem år.
Det är bättre att spara personnummer (behöver inte vara fullständigt) och på så sätt har man ett värde som är relativt till åskådarens tidsperiod. Detta har du redan i Person.

I uppgiften så tas det upp att Adress ska vara förenklad och att man ska tänka på normalisering. I uppgiften står det samtidigt att varje byggnad ska ha en adress och varje adress ska ha en byggnad.
Jag ser inget direkt fel med det du har nu men samtidigt är det inte så vanligt att det ser ut på det där sättet i verkligheten.
I verkligheten så har vanligtvis varje byggnad flera portar. Dessa portar är gatunumret.
Med det sagt så vet jag uppriktigt sagt inte hur man ska göra. En del av förenklingen är kanske att varje byggnad enbart har en port? Då fungerar det du har utan modifikation.
Om jag personligen hade gjort denna uppgift utan dessa regler så hade jag modellerat det några steg ytterligare genom att ta med exempelvis Port eller Byggnadsdel. Hur man modellerar in det är lite av smaksak. Ett sätt är att koppla byggnaden till byggnadsdel och låta adressen vara kopplad till byggnaden men att "gatunumret" kommer från "portnumret" på byggnadsdelen exempelvis.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

@Leedow:
Glömde tacka för alla hjälp