Maj 152010
 

Flattr this!

Nu har vi kommit till punkten då Base knäcker Calc när det gäller databaser.

Vår uppgift är fortfarande att jobba med en filmdatabas. Eftersom det kan bli lite störningar med att ha inknappade data i en tabell så väljer jag att göra en helt ny databas.

Vi vill ha ett till fält i databasen som heter Genre. Kan lika gärna vara skådespelare. Problemet är att en film kan ha flera genrer och en film brukar ha fler än en skådespelare. 😉

Skulle vi nu göra en tabell med fältnamnet Genre så går det bara att knappa in en genrer i varje ruta och därför fungerar det inte.

Så här går vi till väga:

Skapa dessa tabeller på samma sätt som vi gjorde här:

Tabell 1:

Tabell 2 (Här ska alla genrer såsom action, skräck m.m. skrivas in):

Glöm inte i tabell 1 och 2 att sätta autovärde till ja vid FilmID och GenreID.

Tabell 3 (denna tabell ska lagra kopplingen mellan filmer och dess genrer):

Notera i denna tabell att vi har två nycklar. Dessa nycklar är inte primära utan ”främmande” nycklar, dvs. dom är inte unika. FilmID ska exempelvis kunna ha samma nummer i flera poster.

För att skapa främmande nycklar, i detta fallet två fält så markera FilmID genom att trycka där nyckeln visas på bilden. Håll sen in ctrl-knappen på tangentbordet och markera sen där den andra nyckeln visas till vänster om GenreID. Nu när både FilmID och GenreID är markerade så högerklicka där nyckeln visas och välj ”Primärnyckel” så visas nycklarna på samma sätt som på bilden ovan.

Markera sen en av nycklarna och högerklicka så ser ni att ”primärnyckel” inte är ibockad, alltså är det ingen primär nyckel utan främmande nyckel.

Nu har vi dessa tabeller:

Nästa steg är att skapa kopplingar mellan dessa tabeller. Gå upp i menyn Verktyg och välj Relationer. Välj att lägga till samtliga tabeller. Dessa hamnar nu som små rutor där man kan flytta på dom hur man vill.

Vi ska nu fokusera oss på FilmGenre.

Markera FilmID i tabellen FilmGenre och dra den till FilmID i Filmtabellen.

Markera GenreID i tabellen FilmGenre och dra den till GenreID i Genretabellen och resultatet blir detta:

Här kan vi se att det står 1 på ena sidan av strecket och ”n” på andra, detta betyder ”en till många”-relation. Skulle vi istället dra från Filmtabellen till FilmGenre så blir resultatet ”en till en”-relation.

Exempel på hur detta fungerar.

Filmen Dödligt Vapen är en actionkomedi och så här kommer det att se ut:

Filmtabellen innehåller en film som heter Dödligt Vapen och som har FilmID 0.

Genretabellen innehåller Action som har GenreID 0 och Komedi som har GenreID 1.

FilmGenre kommer härmed att visa detta:

För att preparera inför del 2 av guiden så skriv in lite data i genre-tabellen.

Nu har vi gjort en relationsdatabas och i del 2 kommer jag att visa hur vi gör ett formulär så det blir smidigt att knappa in uppgifterna.

Skapa formulär till vår relationsdatabas (del 2 av 2)

  2 Responses to “Skapa en relationsdatabas (Del 1 av 2)”

  1. du säger ”kan lika gärna vara skådespelare” men hur hade du gjort då? De namnen kan du ju inte förbestämma såsom de olika genres i ditt exempel. De visst ju inte ett visst antal namn på skådespelare såsom det finns genres. Jag gör en databas där en KundID ska relateras till en lista på olika inlämnade produkter som jag inte heller vill/kan förbestämma. Har fastnat…

  2. Man får göra ett nytt formulär där man skriver in nya skådespelare kontinuerligt. Jag försöker för tillfället lära mig mer om makron för att sen visa hur man lägger upp en knapp på formuläret som dirigerar om en till det andra formuläret.
    Ska kolla på hur man förenklar självaste sökningen efter befintliga skådespelare så man inte behöver leta bland ett 100-tal olika när man väljer dessa.

Kommentera

%d bloggare gillar detta: