För att skapa sportklubben som beskrivs i webbkursen (se slutet av sidan för fil ni kan ladda ner och öppna i FileMaker) så som vi gjorde på laboration 1:
Skapa databasen
Välj Arkiv -> Skapa ny databas.
Döp filen till något lämpligt – säg Sportklubb
.
Ni kommer nu automatiskt in i layoutläget. Det går att skapa fält (kolumner) därifrån, men det finns ett bättre sätt som kan minska på förvirringen.
Skapa tabellerna
Glöm layoutläget för stunden, och gå istället till Arkiv -> Hantera -> Databas. Därifrån kan ni hantera allt som har med databasens schema att göra: skapa/ta bort/modifiera tabeller, skapa/ta bort/modifiera kolumner, och göra kopplingarna/relationerna mellan dem.
Börja med att klicka på fliken Tabeller. När man skapar en FileMaker-databas skapas automatiskt en tabell (och en layout) med samma samn som filnamnet. Det är sällan vad vi vill ha. I det här fallet får vi tabellen sportklubb
, men vårt sportklubbsexempel ska ju inte ha någon sådan tabell. Markera tabellen och skriv i stället Medlem
i textrutan Tabellnamn längst ner i fönstret och klicka på Ändra.
Skapa också de två andra tabellerna som behövs: Sektion
och Deltar
. (Skriv helt enkelt t.ex. Sektion
och tryck på Skapa.)
Skapa fälten
Klicka sedan på fliken Fält. Nu är det dags att skapa de fält (kolumner) som behövs i varje tabell. Vi börjar med tabellen Medlem
(det går att växla mellan de olika tabellerna genom att klicka på rullistan längst upp till vänster i fönstret).
Fyll i fältnamnet Medlemsnummer
med typ Numeriskt
och tryck på skapa. (Medlemsnummer
är lämplig primärnyckel.)
Voilà, vi har ett fält! Hail Eris!
Skapa även Namn
(med typ text) och Telefonnummer
(med typ text (kan också vara numerisk, men vi vill kanske kunna hantera telefonnummer med streck eller blanksteg)).
Markera också fältet Medlemsnummer
och klicka på Tillval (eller dubbelklicka bara på Medlemsnummer
). Kryssa för Löpnummer. Det gör att FileMaker automatiskt sätter värdet för Medlemsnummer
när en ny post skapas. Det är vanligen så man vill ha det för primärnycklar – alltså att databasen automatiskt hanterar dess värde. Klicka också på Förhindra ändring av värdet vid datainmatning längst ner för att se till att man inte kan ändra värdet manuellt – för det ska man vanligtvis inte kunna göra.
(Så generellt: det är bra att alla tabeller man har har ett fält av typ numeriskt som också är löpnummer som inte kan ändras manuellt.)
Byt sedan till tabellen Sektion
och skapa fälten Sektionskod
(text), Namn
(text) och Ledare
(numeriskt). Ledare
kommer senare att bli referensattribut som hänvisar till ett visst Medlemsnummer
i tabellen Medlem
.
Byt till tabellen Deltar
och skapa fälten Medlemsnummer
(numeriskt) och Sektionskod
(text). Båda dessa kommer att bli referensattribut (till Medlemsnummer
i tabell Medlem
, respektive Sektionskod
i tabell Sektion
). Nu är det dags att göra kopplingarna!
Skapa kopplingar/relationer
Klicka på fliken Relationer. För att det ska se lite mer logiskt ut (för er själva): flytta om rutorna så att Deltar
ligger mellan Medlem
och Sektion
.
Dra sedan medlemstabellens primärnyckel, Medlemsnummer
, till fältet Medlemsnummer
i tabellen Deltar
. Dra sektionstabellens primärnyckel, Sektionskod
, till fältet Sektionskod
i tabellen Deltar
.
Vi har nu gjort ett många-till-många-samband!
Interludium: hvorfor?_?
Varför behöver vi Deltar
-tabellen? För att annars är det omöjligt att representera att en medlem kan vara medlem i flera sektioner (och omvänt att en sektion kan ha flera medlemmar).
Man kan tänka sig att vi hade skippat Deltar
-tabellen och i stället gjort en till kolumn, Sektion
, i tabellen Medlem
, och kopplat den direkt till Sektionskod
i tabellen Sektion
. Men då skulle en medlem bara kunna vara med i en enda sektion, för en post (rad) i en tabell får bara ha ett enda värde för ett givet fält (kolumn). Eller med andra ord, en tabell innehåller bara enkla värden (se Padron-McCarthy & Risch s. 77). (Det hade alltså varit ett många-till-ett-samband: en sektion kan ha flera medlemmar, men en medlem kan bara vara med i en sektion.) …så därför måste vi ha den här Deltar
-tabellen, som kallas för mellantabell eller sambandstabell.
Ett till samband!
Vi har ett samband kvar: en sektion ska kunna ha en (och i vårt exempel bara en) ledare. Fältet Ledare
i tabellen Sektion
ska alltså vara kopplat till fältet Medlemsnummer
i tabellen Medlem
. Dra helt enkelt Ledare
(i Sektion
) till Medlemsnummer
(i Medlem
). FileMaker kommer då att ploppa upp en ruta som säger att det inte kan finnas mer än en relationsväg mellan tabeller och föreslår att göra en till “tabellförekomst”. Det är okej. Döp denna till MedlemLedare
för att det inte ska bli rörigt sen. Tryck på OK! Då dyker rutan MedlemLedare
plötsligt upp.
Interludium: tabellförekomster
Här krävs ett klargörande: relationsfliken visar inte tabellerna “i sig”, så att säga, utan tabellförekomster
(“table occurrences”). Varje sådan tabellförekomst refererar till en viss tabell. Sektion
och Sektion 2
refererar båda till tabellen Sektion
(kan verifieras genom att dubbelklicka på dem – båda har tabellen Sektion
som datakälla). Det kan vara lite förvirrande i början, speciellt eftersom FileMaker automatiskt skapar tabellförekomster när man skapar tabeller. Men tabellförekomsterna är alltså själva tabellerna! Tar ni bort alla tabellförekomster är de faktiska tabellerna fortfarande kvar (och vice versa). För att citera manualen (s. 116):
Varje förekomst av en tabell i relationsdiagrammet motsvarar ett sätt att visa informationen.
…
Du kan inte skapa cirklar i relationsdiagrammet i FileMaker Pro och varje försök att skapa en cirkel leder därför till att FileMaker Pro skapar en ny tabellförekomst med ett unikt namn. En ny förekomst fungerar som övriga förekomster i diagrammet och du kan fortsätta med den nya relationen.”
Layoutdags
Klicka på OK i “Hantera databas”-fönstret. Vi är nu klara med schemat, det vill säga det som beskriver databasens struktur: vad som kan finnas i databasen – vilka tabeller och fält som finns, och hur fält relaterar till varandra. Vi har inte lagt till någon faktiskt data. Det ska vi göra nu!
Välj Visa -> Layoutläge (eller tryck Ctrl+L i Windows; Cmd+L i Mac). Uppe i vänstra hörnet, se till att layout Medlem
är vald. Den är tom! Så vill vi inte ha det. I layoutläget bestämmer vi ju hur bearbetningsläget – där vi matar in, eller visar poster – ska se ut, och utan fält är det föga meningsfullt.
Visa Fältväljaren om den inte redan är uppe: Visa -> Fältväljare. Klicka i fältväljarrutan, under Telefonnummer
, och tryck sen Ctrl-A (Windows) eller Cmd+A (Mac) för att markera alla fält. Dra dem sedan till layouten. FileMaker skapar då fält med tillhörande etiketter. Det är tillräckligt för att vi ska kunna börja lägga in några medlemmar.
Lägg in några medlemsposter
Välj Visa -> Bearbetningsläge (eller Ctrl+B i Windows, Cmd+B i Mac).
Klicka på Ny post. Eftersom vi tidigare valt att Medlemsnummer
ska vara ett löpnummer så fyller FileMaker automatiskt i det värdet. Så skriv bara ett namn och ett telefonnummer. FileMaker sparar automatiskt. Upprepa detta några gånger för att skapa ytterligare tre medlemmar. (I menyraden med knapparna kan ni ändra “Visa som” från “Formulärvy” till “Tabellvy” gör att se alla skapade poster på en gång.)
Lägg in några sektioner
Uppe till vänster, ändra layout från Medlem
till Sektion
. För att göra som i webbkursens exempel, klicka på Ny post och skapa en post med sektionskod A, namn Bowling, ledare 4. Gör också de andra två: B, Kickboxning, 4 och C, Konstsim, 2.
Lägg in några deltaganden
Ändra layout från Sektion
till Deltar
. Skapa ett gäng deltaganden (dvs vilka medlemmar som är med i vilka sektioner) – förslagsvis samma som i webbkursen: 1, A; 1, B; 1, C; 2, C; 3, A.
EXTRA: Värdelistor
Gå tillbaka till layouten Sektion
. När man väljer vilken medlem som ska vara ledare för en sektion vill man knappast skriva in själva medlemsnumret manuellt. Bättre vore väl kanske att få upp en lista på namn, och välja bland dem? Ja, visst vore det bättre. Det går att ordna. Byt till Layoutläge och klicka på fältet Ledare
i layouten. I fönstret Granskare, klicka på fliken Data. Under Fält, *Styr formatmall, ändra från Redigeringsruta (vanligt textfält) till Snabbmeny.
Gå sedan tillbaka till Bearbetsningläget. Då ser ni att textfältet ändrats till en rullista, eller snabbmeny. Den är dock helt tom! Varför är den dom? Den är tom för att vi inte sagt åt FileMaker vad snabbmenyn ska innehålla. I snabbmenyn vill vi få upp en lista över alla medlemmar, så att vi lätt kan välja en av dem. Så – vi behöver skapa denna lista. Vi behöver en värdelista.
Skapa värdelistan
Gå till Arkiv -> Hantera -> Värdelistor. Klicka på Ny. Det ska vara en lista över medlemmar, så skriv förslagsvis Medlemmar som namn på värdelistan. Klicka på Använd värden från fältet:. På vänstra sidan, under “Använd värden från första fältet”, välj Medlem
och markera sedan Medlemsnummer
– för fältet Ledare
i tabellen Sektion
är ju ett referensattribut till just Medlemsnummer
i tabellen Medlem
. Om vi inte gör mer än så här så kommer menyn bara innehålla själva medlemsnumrena, alltså siffrorna 1, 2, .. osv. Det är inte så praktiskt. Klicka därför på “och visa värden från andra fältet”, och markera Namn
.
Detta gör att när man använder den här värdelistan så är det Medlemsnummer
som är det värde som faktiskt fylls i (som sig bör), men Namn
är det som (också) visas. Då kommer listan att vara till exempel “1 Olle”, “2 Stina” osv. Vill man att det i listan bara ska stå “Olle”, “Anna” osv kan man kryssa för “Visa endast värden från det andra fältet”. Men åtminstone i början kan det vara praktiskt att se både ID och namn samtidigt, så tryck bara på OK, och OK igen, och igen.
Använd värdelistan
Nu har vi en värdelista med alla medlemmar. En och samma värdelista kan användas av olika fält i olika sammanhang – det är ju helt enkelt bara en lista som vi definierat och som FileMaker sedan alltid räknar ut automatiskt. I det här fallet vill vi använda värdelistan för att göra det enklare att välja ledare för en sektion, så gå till Layoutläget, se till att layouten Sektion
är vald, och markera rutan Ledare
i layouten. Sedan, i granskaren, vid “Värden från:“, välj Medlemmar
. Det säger åt FileMaker att den här snabbmenyn ska bestå av värdena från värdelistan Medlemmar
.
För att se att det faktiskt är så, gå till bearbetningsläget.
Nu kan ni göra samma sak i layouten Deltar
. Ni kan återanvända samma värdelista för medlemsnumret, men ni behöver skapa en till för att kunna välja sektion på samma enkla vis. (Exakt samma process som ovan, bara att det är Sektion
i stället för Medlem
.) Mer om detta i laboration 2!
Ni kan ladda ner en färdig variant av det vi gjort ovan. Spara och öppna i FileMaker.