2012-03-22, 18:42
  #1
Medlem
Gerkans avatar
Tjena!

Jag håller på med en databas som ska vara som IMDBs databas, det ska gå att lägga in betyg på filmer och man ska kunna se vilka som är medverkande i filmen samt vilken roll/roller de har haft.

Här har ni en bild, hur gör jag?


Här är en bild: http://i43.tinypic.com/11cbj1w.jpg
Citera
2012-03-22, 18:47
  #2
Medlem
Protons avatar
Citat:
Ursprungligen postat av Gerkan
Tjena!

Jag håller på med en databas som ska vara som IMDBs databas, det ska gå att lägga in betyg på filmer och man ska kunna se vilka som är medverkande i filmen samt vilken roll/roller de har haft.

Här har ni en bild, hur gör jag?


Här är en bild: http://i43.tinypic.com/11cbj1w.jpg
Filmer och skådisar borde ju ha en många till många-relation, flera skådisar kan ju vara med i flera filmer, right? Tycker det saknas en "kopplingstabell" mellan filmer och skådisar IMHO.

Dina röster är för närvarande helt orelaterade till filmer, du borde ha ett filmid i din röst-tabell åtminstånde. Vad är det sedan som hindrar en person att rösta 10tusen gånger på en och samma film?

Vad ska roller innehålla för något?

Vad används personer till?
Citera
2012-03-22, 18:59
  #3
Medlem
gadzooxs avatar
Det där var lite snett, varför har du Förnamn och Efternamn i tabellen Medverkande, när du har en dedikerad tabell Personer? Helt rätt att ha en tabell för Personer, men Medverkande borde vara en länktabell för att få till en many-to-many-releation mellan Filmer och Personer.

För filmer:
Filmer: FilmID, Titel, Utgivningsår

För skådisar och deras medverkan i filmer:
Personer: PersonID, Förnamn, Efternamn, Födelseår
Medverkande: MedverkandeID, FilmID (FK), PersonID (FK), Roll

För betyg:
Röster: RöstID, FilmID (FK), Betyg

underline är primary keys, (FK) är foreign keys.


Tabellen Medverkande agerar kopplingstabell och knyter ihop FilmID med PersonID. Någon separat tabell för Roller behövs inte eftersom en skådis har en roll, den rollen är unik för en specifik film och knuten till den specifika skådisens medverkan i filmen. Det går alltså att ha rollnamnet direkt i tabellen Medverkande, men om du vill normalisera bort rollnamnet (samma roll kan ju vara med i en trilogi, exempelvis) så kan du behålla din tabell Roller samt ha RollID som foreign key i Medverkande snarare än att lagra rollnamnet direkt.

Sen borde du ha alla tabell- och fältnamn på engelska, och definitivt utan mellanslag i fältnamnen.
Citera
2012-03-22, 20:23
  #4
Medlem
Gerkans avatar
Citat:
Ursprungligen postat av gadzoox
Text

Tack så mycket!

Så här ser det ut nu: http://i41.tinypic.com/whgymo.jpg

En fråga bara, jag har gjort som du har skrivit nu och när jag ska kolla på subsheets i tabellen filmer för att se vilka som medverkat i filmen med en roll så ser jag bara ID numret, hur gör jag så det står namnet och roll med text?
__________________
Senast redigerad av Gerkan 2012-03-22 kl. 20:44.
Citera
2012-03-22, 21:53
  #5
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av Gerkan
Tack så mycket!

Så här ser det ut nu: http://i41.tinypic.com/whgymo.jpg

En fråga bara, jag har gjort som du har skrivit nu och när jag ska kolla på subsheets i tabellen filmer för att se vilka som medverkat i filmen med en roll så ser jag bara ID numret, hur gör jag så det står namnet och roll med text?
Nu börjar det likna något Iofs kanske det inte behövs något MedverkandeID i den tabellen, RollID + FilmID borde tillsammans kunna utgöra en composite primary key istället. Ett MedverkandeID tillför inget som helst värde till tabellen annat än att vara just primärnyckel, en composite key med nämnda fält tillför däremot något; förutom att agera primärnyckel samt ha ett egenvärde i vad de syftar på, garanterar de även att kombinationen roll+film är unik (för hur skulle en roll kunna förekomma flera gånger i samma film?)

Som svar på din fråga: http://en.wikipedia.org/wiki/Join_%28SQL%29
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