Just nu i M3-nätverket
Gå till innehåll

Problem med onödiga poster


Lemorz

Rekommendera Poster

Hej.

 

Håller på att skapa en filmdatabas i Access 2007.

 

Mina tabeller:

 

Film (filmID, titel, genre, speltid, år, skådespelarID, regissörID)

 

Skådespelare (skådespelarID, namn, född, död)

 

Regissör (regissörID, namn, född, död)

 

 

Alla primärnycklar är av typen räknare i alla tabeller.

 

 

Mitt problem är:

 

Om en skådespelare har varit med i två filmer så tilldelas han/hon automatiskt ett skådespelarID per film

Dvs. om jag har 10 filmer med samma skådespelare så blir det 10 poster i skådespelare tabellen.

 

Kan man på nåt sätt få till det så att varje gång jag skriver in en viss skådespelares Namn så får han/hon alltid samma skådespelarID, så att det inte blir fler poster än nödvändigt (alltså en post per skådis)

 

Tack på förhand.

Länk till kommentar
Dela på andra webbplatser

Som du har gjort det så kan en film bara ha en skådespelare...

 

Du borde ha extratabeller som kopplar ihop skådespelare och regisörer med deras filmer.

Dessutom så är det kanske bättre att bara ha en tabell för Personer oavsett om de är skådespelare eller regissörer (det är ju inte ovanligt att de är både och) som du sedan knyter till olika filmer.

 

Samma sak för Genre.

 

Du behöver i kopplingstabellerna egentligen bara två fält (som tillsammans skapar en sammansatt primärnyckel) t.ex. FilmPersoner (filmID, skådespelarID).

Dock så är det nog bra att lägga till ett fält som talar om vad de gjorde i filmen. Om de var skådespelare, regisör, manusförfattare eller producent för den delen.

 

Mycket enkelt exempel på hur det skulle kunna se ut:post-3164-1276107377,82_thumb.png

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon
Du behöver egentligen bara två fält (som tillsammans skapar en sammansatt primärnyckel): FilmSkådespelare (filmID, skådespelarID) F

När det gäller filmer så skulle jag hellre kalla relationstabellen för Character (eller Karaktär om man nu envist vill använda svensk nomenklatur) med tre id-fält

 

Character {ActorId, FilmId, CharacterId}

(Här krävs alltså även en tabell för karaktärer)

 

Det är ju minst dessa tre unika entiteter som avgör en roll. Samma skådis kan ex. spela flera roller i samma film, samma karaktär kan förekomma i flera filmer och dessutom porträtteras av olika skådisar, inom såväl samma som olika filmer , vilket gör att förslaget FilmSkådespelare inte känns tillräckligt.

Länk till kommentar
Dela på andra webbplatser

Sant, jag höll nog på och redigera mitt inlägg när du skrev ditt :)

 

Utöver det så vill man antagligen kunna ange namn på karaktären som skådespelaren spelar osv. En karaktär kan ju dessutom återkomma i flera olika filmer.

 

Hur som helst så är det nog bäst att börja med att skriva ned lite "regler" och förutsättningar innan man skapar tabellerna.

Vad för information skall in i databasen och hur hänger den ihop.

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Ett litet konkret exempel kanske hjälper trådskaparen att hänga med i vad som nu föreslås.

 

Character

---------

1 Hercule Poirot

 

Movie

-----

1 Death on the Nile

2 Murder on the Orient Express

 

Actor

-----

1 Albert Finney

2 Peter Ustinov

 

Relationstabellen, med fälten ActorId, MovieId, CharacterId, skulle då ha posterna

 

Participation

-------------

1, 1, 1

2, 2, 1

 

Här har vi alltså två skådisar som porträtterat samma roll i varsin film.

 

EDIT: DEATH on the Nile heter förstås filmen och inget annat =)

Länk till kommentar
Dela på andra webbplatser

Tack för era informativa svar.

 

Det har klarnat lite, men får fortfarande inte ordning på det ursprungliga problemet.

 

Lägger jag till en post i film-tabellen (automatiskt ID: 1) och sen lägger till poster för skådespelare resp. regissör så är allt frid och fröjd.

 

Men om jag som post nr 2 i film-tabellen lägger in en annan film som har samma skådespelare eller regissör så blir det fel på dessa tabeller. Alltså både regissören och skådespelaren läggs in två gånger med två olika ID.

 

Tanken är att man ska kunna skriva in all info om varje film, skådespelare, regissör i ett och samma formulär, men som det är nu är det svårt att hålla reda på vilken film som är knuten till vilken regissör/skådespelare.

Länk till kommentar
Dela på andra webbplatser

... inte ordning på det ursprungliga problemet.

 

Men om jag som post nr 2 i film-tabellen lägger in en annan film som har samma skådespelare eller regissör så blir det fel på dessa tabeller. Alltså både regissören och skådespelaren läggs in två gånger med två olika ID.

 

Tanken är att man ska kunna skriva in all info om varje film, skådespelare, regissör i ett och samma formulär, men som det är nu är det svårt att hålla reda på vilken film som är knuten till vilken regissör/skådespelare.

 

Om du försöker fortsätta med dom ursprungliga tabellerna där tabellen film består av FilmID, SkådespelarID och RegissörID så kan du som tidigare sagts bara kunna ha en skådespelare resp en regissör per film.

 

Vill du tex lägga upp flera skådespelare/film måste du skapa en ny tabell som innehåller filmID och skådespelarID. Då kan du lägga upp varje skådespelare en gång i tabellen Skådespelare. Sen skriver du in en post med filmID och skådespelarID för varje skådis som är med i respektive film.

 

Sen för att få med allt i ett formulär så är det en del trixande, men först tabellerna.

Länk till kommentar
Dela på andra webbplatser

Har lyckats få till det skapligt nu med formulär och underformulär.

 

Dessvärre har ett nytt problem uppstått. Om jag måste lägga till en ny skådespelare eller regissör som inte tidigare finns i motsvarande tabeller så måste jag spara, stänga och på nytt öppna upp movie-formuläret där informationen inte tidigare fanns tillgänglig för att jag ska kunna lägga till den nya regissören/skådespelaren. Finns det något smidigare sätt att göra detta på?

 

Blev lite rörigt med förklaringen, men jag bifogar det jag har hittills så kanske det är lättare att förstå vad jag syftar på.

 

movieDB.zip

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

Nu har det mesta löst sig, det enda som återstår är att få till alla queries så att det går att söka i databasen.

 

Tack för all hjälp.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...