Granskning af database-struktur
Kære eksperterJeg er for nyligt begyndt at tumle med databaser og MySQL. Jeg øver mig ved at lave en database over byrådsmedlemmer og er nået til normalisering. Jeg har læst flere tutorials om emnet, men er stadig i tvivl om, hvad der er mest fornuftigt i konkrete tilfælde.
Derfor hører jeg gerne andres bud på en fornuftig struktur til projektet.
Indtil videre har jeg følgende tabeller:
kommuner.medlemmer
------------------
ID int(4), auto-increment
Køn varchar(1) - henviser til tabellen kommuner.køn
Navn varchar(35)
Parti varchar(40) - henviser til kommuner.partier
ErMedlem tinyint(1) - har værdien 0 eller 1
ErBorgmester tinyint(1) - har værdien 0, 1 eller 2
Kommune varchar(17) - henviser til kommuner.kommuner
Født date
Død date
Indtrådt date
Udtrådt date
Hop1dato date
Hop1til varchar(17) - henviser til kommuner.partier
Hop2dato date
Hop2til varchar(17) - henviser til kommuner.partier
Hop3dato date
Hop3til varchar(17) - henviser til kommuner.partier
ErMF tinyint(1) - har værdien 0, 1 eller 2
Noter tinytext
kommuner.køn
------------
M
K
kommuner.partier
----------------
A Socialdemokratiet
B De Radikale
[...]
O Dansk Folkeparti
kommuner.kommuner
-----------------
Albertslund
Allerød
[...]
Aarhus
Konkrete spørgsmål:
1) giver det mening at have tabellen kommuner.køn - eller ville det være bedre at taste værdierne direkte ind i kommuner.medlemmer? (det samme problem gælder for kolonnerne ErMedlem, ErBorgmester, ErMF)
2) Alle Hop-kolonnerne bruges i de tilfælde, hvor kandidater skifter parti. Jeg kender til et enkelt byrådsmedlem, som har været medlem af 3 forskellige partiet + en periode som løsgænger i denne valgperiode. Det giver temmelig mange celler med værdien NULL. Bør hoppene i virkeligheden have sin egen tabel - og burde de i så fald samles i 1 tabel eller splittes i 3 forskellige?
Mange hilsner
Kenneth