2024-02-26, 11:17
  #1
Medlem
Vinterrosens avatar
Hej! finns det någon vänlig själ här inne som kan hjälpa till hur denna https://ibb.co/L1GbH9b ska översättas till relationsmodell?

Jag vet hur ett många-till-många-till-många samband skulle sett ut då det finns ett exempel på det i min kursbok jag har, men hur ska man tänka om det är sambandstyper av högre grad än två med olika kardinaliteter?
Citera
2024-02-26, 12:38
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av Vinterrosen
Hej! finns det någon vänlig själ här inne som kan hjälpa till hur denna https://ibb.co/L1GbH9b ska översättas till relationsmodell?

Jag vet hur ett många-till-många-till-många samband skulle sett ut då det finns ett exempel på det i min kursbok jag har, men hur ska man tänka om det är sambandstyper av högre grad än två med olika kardinaliteter?
Här ser det ju ut som om det är en många till mångatabell, men endast ett betyg per kurs?

Isf kan ju tabellen se ut som studentid, kursid, betyg.

Studenten kan fortfarande läsa flera olika kurser, men det kan bara finnas ett betyg per kombination student-kurs.

Var det rätt svar på frågan?
Citera
2024-02-26, 13:31
  #3
Medlem
Vinterrosens avatar
Citat:
Ursprungligen postat av Proton
Här ser det ju ut som om det är en många till mångatabell, men endast ett betyg per kurs?

Isf kan ju tabellen se ut som studentid, kursid, betyg.

Studenten kan fortfarande läsa flera olika kurser, men det kan bara finnas ett betyg per kombination student-kurs.

Var det rätt svar på frågan?

Jag vet inte då jag inte har facit, men har tänkt i samma banor som du. Om det hade istället varit många-till-många-till-många relation visst hade det då varit att det kan finnas flera betyg per kombination student-kurs. Alltså exempelvis studenten hade kunnat läsa samma kurs två gånger och kunnat få två olika betyg i samma kurs? men visst hade tabellen ändå sett likadan ut? med studentID, kursID, betyg?
__________________
Senast redigerad av Vinterrosen 2024-02-26 kl. 13:33.
Citera
2024-02-26, 14:23
  #4
Medlem
Tabellen ser likadan ut om studenten kan ha max 1 eller flera betyg på samma kurs.

I SQL skulle man kunna lägga till CONSTRAINT UnikStudentKurs UNIQUE (Student, Kurs) -- om det bara får finnas ett betyg.

I verkliga livet kanske man skulle lägga till ett fält för betygsdatum om studenten kan få betyg flera gånger på samma kurs.
Citera
2024-02-26, 15:15
  #5
Moderator
Protons avatar
Citat:
Ursprungligen postat av ArundoDonax
Tabellen ser likadan ut om studenten kan ha max 1 eller flera betyg på samma kurs.

I SQL skulle man kunna lägga till CONSTRAINT UnikStudentKurs UNIQUE (Student, Kurs) -- om det bara får finnas ett betyg.

I verkliga livet kanske man skulle lägga till ett fält för betygsdatum om studenten kan få betyg flera gånger på samma kurs.
I ett sådant här fall hade jag nog till och med utsett studentid i kombination med kursid till primärnyckel, då får du samma effekt som din constraint, plus en en indexering på kuppen.
Citera
2024-02-26, 15:51
  #6
Medlem
Nu kanske jag har missförstått och databas-modellering är inte min starka sida men:

Det finns 2 huvudtabeller - Student och Kurs.

Sen finns det en relationstabell som består av studentId, kursId (foreign key) och betyg.

En rad i relationstabellen ser ut ungefär så här:

id = 6
studentId = 56
kursId = 12
betyg = A
Citera
2024-02-26, 16:48
  #7
Moderator
Protons avatar
Citat:
Ursprungligen postat av poiuy1298
Nu kanske jag har missförstått och databas-modellering är inte min starka sida men:

Det finns 2 huvudtabeller - Student och Kurs.

Sen finns det en relationstabell som består av studentId, kursId (foreign key) och betyg.

En rad i relationstabellen ser ut ungefär så här:

id = 6
studentId = 56
kursId = 12
betyg = A
Med den tabellen kan du lägga till samma student på samma kurs flera gånger om då jag misstänker att du vill ha id som PK.

Som sagt, får studentid och kursid tillsammans utgöra PK kommer tabellen garanterat bara kunna innehålla ett unikt studentid per unik kurs.

Varför ville du införa ett id i den tabellen? Det kommer ju inte tillföra nåt.
Citera
2024-02-26, 16:54
  #8
Medlem
Citat:
Ursprungligen postat av Proton
Med den tabellen kan du lägga till samma student på samma kurs flera gånger om då jag misstänker att du vill ha id som PK.

Som sagt, får studentid och kursid tillsammans utgöra PK kommer tabellen garanterat bara kunna innehålla ett unikt studentid per unik kurs.

Varför ville du införa ett id i den tabellen? Det kommer ju inte tillföra nåt.

Men även om du använder dig av en komposit-nyckel så måste du väl ändå sätta de två som primärnyckel?

Sen tappar du möjligheten att samma elev går kursen flera gånger.

Jag vet inte - jag är bara van från stället jag jobbar på (Java/Oracle) att man ALLTID har ett eget id på alla tabeller - även om två fk gör raden unik.
Citera
2024-02-26, 17:11
  #9
Moderator
Protons avatar
Citat:
Ursprungligen postat av poiuy1298
Men även om du använder dig av en komposit-nyckel så måste du väl ändå sätta de två som primärnyckel?

Sen tappar du möjligheten att samma elev går kursen flera gånger.

Jag vet inte - jag är bara van från stället jag jobbar på (Java/Oracle) att man ALLTID har ett eget id på alla tabeller - även om två fk gör raden unik.
Som jag påpekade kommer de två attributen TILLSAMMANS utgöra en PK. Det finns ingen anledning att blanda in ett eget id, framförallt inte när den inte kommer tillföra något.

Ingen sa något om att samma elev skulle gå kursen fler gånger för övrigt. Ska det vara möjligt kan jag förstå iden med ett eget id, men då känns det som om något annat saknas med. Han kan ju inte gärna ha gått kursen vid samma tillfälle i sådana fall?
Citera
2024-04-19, 19:44
  #10
Medlem
Den första frågan du behöver få svar på är om en student kan läsa samma kurs flera gånger, eller bara en gång. Om studenten kan läsa kursen flera gånger, kan den då få betyg på den för varje kurstillfälle, eller är det bara första kursen den kan få betyg, eller kan den läsa kursen flera gånger och välja att få betyg vid ett senare tillfälle, och får studenten gå kursen igen efter den har fått betyg. Om den kan få betyg vid varje tillfälle, vilket betyg är det då som ska gälla?

Om vi förutsätter att studenten kan läsa samma kurs flera gånger, och att den gången studenten betygss* ätts så får den inte gå kursen mera. Då skulle modellen kunna se ut så här:

student(
* student_id PK,
* övriga attribut
)

kurs(
* kurs_id PK,
* övriga attribut
)

läsa(
* läsa_id PK,
* tillfälle,
* student_id FK student(student_id),
* kurs_id FK kurs(kurs_id),
* betyg,
* övriga attribut
)

Sedan får applikationen validera om studenten har ett betyg eller ej på kursen.
Gäller däremot att studenten enbart får läsa kursen en gång så stryker du läsa_id och tillfälle, och skapar en sammansatt primär nyckel av student_id och kurs_id, i läsa tabellen.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in