2 svar
185 visningar
pepparkvarn 1871 – Fd. Medlem
Postad: 3 jan 2020 13:51

Översättning från ER-diagram till tabeller/relationer, inledningen

(Kul att inte ens moderatorn är säker på var denna tråd ska ligga någonstans... men eftersom den relaterar till databaser får den ligga här tills mina kollegor skäller på mig i modforumet. 🤗 )

För att träna på att översätta ER-diagram till tabeller/relationer (relations/schemas på engelska) har kvarnen hittat på några olika ER-diagram och försökt översätta dessa. Det första av dessa är diagrammet nedan: 

Detta diagram har malts (😉😈) ned till relationerna A(a, a1), B(b, b1), C(c, c2), C1(c, c1) och D(a, b, c, d1). Nu till mina frågor: 

  1. Är detta en korrekt översättning?
  2. C1-relationen är på egen hand då c1 är ett flervärt attribut. Behöver jag göra något mer med den relationen? 
  3. Ponera att D inte hade haft något eget attribut, hade det varit nödvändigt att ha med D(a, b, c) som relation då, eller hade den relationen avfärdats som grus i kvarnen? Den känns aningen... onödig?
Hjortron 12
Postad: 3 feb 2022 01:22

1. Ja, samtliga entiteter har en primärnyckel vilket är en plus! 

2. Nej, C1 blir en egen tabell när du översätter diagrammet till en "schema". Primärnyckeln c blir c1:s foreign key (vet inte vad det heter på svenska). 

3. Hajar inte riktigt tredje frågan.

 

Allt gott

/Hallon

Programmeraren 3387
Postad: 3 feb 2022 09:16

Det var LÄNGE sedan jag tittade på ett ER-diagram men förhoppnings klantar jag inte till det.

2) Om c1 är som t ex ett datum med separata år, månad, dag så behövs ingen separat tabell, de ingående delarna i attributet är som om du hade fler enskilda attribut. Om c1 däremot har jättemånga delar och kombinationer återkommer, eller skulle ha relaterats från en annan entitet, då är det värt att göra om den till en entitet med egen primärnyckel.

3)  Om jag minns rätt är "ruter" (D) en relation. Och i så fall behövs den även om den inte har ett attribut.

Om t ex A är ämne, B är årskurs (och vi struntar i C), då används D för att uttrycka kombinationer som Matte-Åk7, Matte-Åk8, Engelska-Åk8 osv. Det kan inte ersättas med en direkt relation mellan A och B, då skulle det bli upprepningar i de tabellerna. Med en tredje tabell C blir kombinationerna ännu fler.

Svara Avbryt
Close