Avatar billede tanx Nybegynder
24. februar 2004 - 00:40 Der er 5 kommentarer og
1 løsning

Databasestruktur - mange tabeller?

Jeg er igang med at lave en database i access, men nu er jeg dog stødt ind i et problem, som jeg håber der er en her der kan hjælpe med.

Databasen vil komme til at indeholde adresseoplysninger, samt en række forskellige informationer om div. diplomatiske repræsentation.

Der vil komme til at være i omegnen af 50.000 rækker med hver 30 kolonner, som indeholder mellem 8 og 30 tegn. (Mange af kolonnerne vil dog være fremmednøgler) Så vidt jeg kan forstå vil den mængde data i én tabel nedsætte databasens effektivitet betydeligt, med mindre man vælger netop at splitte oplysningerne op i tabeller, hvilket jeg har overvejet. Det er så her problemet kommer:

Indtil videre har jeg spekuleret på om man kunne dele databasen op i tabeller; der vil så være to for hvert land i verden. Én tabel, der hedder "i_danmark", som indeholder oplysninger om alle repræsentationer i Danmark - og tilsvarende er der så en tabel der hedder "ud_danmark", som indeholder oplysninger om alle danske repræsentationer i udlandet. - Der vil være omkring 500 rækker i hver tabel, hvilket jo er noget mere overskueligt.

Nu kommer det interessante: Eftersom oplysningerne om en repræsentation, lad os bare sige den danske ambassade i Stockholm, vil være at finde i både tabellen "ud_danmark" men også i "i_sverige" opstår der jo et problem med redundans, hvilket for det første vil nedsætte søgehastigheden, og for det andet vil resultere i at opdateringen af databasen vil besværliggøres eftersom der er to tabeller informationerne skal lægges ind i og slutteligt vil fordoble størrelsen på databasen.

Hvis der er nogle der har en god idé eller et godt alternativ, der tager højde for det store antal rækker og samtidigt optimerer databasen, ville jeg blive meget glad!
Avatar billede annpro Nybegynder
24. februar 2004 - 01:05 #1
Du skal vist igang med at læse noget om normalisering, men det er ikke noget der bare lige er til at tage hul på, dette er noget at database eksperter læser om i flere år, før at man bliver dygtig nok til at få noget rigtigt ud af det.

Hvis du skal ha en anden person til at hjælpe dig ville det måske være en god ide at lægge den ud på nettet, og tilføje et link herinde, så var det lidt lættere, at se om din normalisering er i orden, men held og lykke :)
Avatar billede mugs Novice
24. februar 2004 - 05:59 #2
"50.000 rækker med hver 30 kolonner"

Se på dine kolonner (Data), og opdel disse i flere tabeller, så de indbyrdes data er "i familie" med hinanden. Hvis du f.eks vil have byen hvori repræsentationen er beliggende, skal byen være i tabellen "land", da by og land jo er knyttet til hinanden:

- Der skal kun være een tabel ned lande. Opret en nøgle på feltet "land".
- o.s.v.

Når du har gjort dette, laver du en sidste tabel. I denne opretter du alle repræsentationene på den måde, at du ved hjælp af kombinationsbokse, kan "plukke" data fra de andre tabeller. Lav derefter relationer mellem tabellerne.
F.eks. skal comboen hvor du vil have land, slå op i tabellen "land" og så fremdeles.
I denne tabel laver du samtidig et felt (Ja/Nej type), der angiver om repræsentationen er beliggende i Danmark. Det burde ellers være nok ved at angive hvilket land der er tale om. Du kan så senere lave kriterier i en forespørgsel, der hedder Not Like "Danmark", og du vil så få en liste med alle de poster hvor feltet "land" ikke indeholder tekststrengen Danmark.

"der tager højde for det store antal rækker":

50000 poster er ikke noget problem for Access. Størrelsen af db er udelukkende begrænset til db's samlede størrelse på ca 2 Gb.

Iøvrigt ening med annpro: Læs noget om normalisering. Det er alfs og omega.
Avatar billede trer Nybegynder
24. februar 2004 - 08:42 #3
Lige et input vedr valg af Access som platform; Access er beregnet som en "slutbruger-database" - dvs en lille database til en enkelt bruger, og den kan *ikke* kaldes for driftssikker i andre sammenhænge.

Access har fx ingen backup funktionalitet eller logning, det betyder at du er henvist til almindelig fil-backup af database filen - og dermed at såfremt der sker et nedbrud mister du samtlige dataændringer siden sidste fil backup...

Overvej meget meget at benytte fx SQL Server til data lagringen - den er sværrere at arbejde på end Access, ja, men mere driftssikker, hurtigere til at håndtere queries etc og absolut beregnet til flere samtidige brugere.

Hvis du ikke har behov for mange samtidige brugere er der en special udgave af SQL Server der kaldes MSDE - det er en "light" version som er beregnet til 5 brugere (kan dog håndtere flere). Den kan du downloade fra Microsofts hjemmeside www.microsoft.com/sql

Access og SQL Server har det i øvrigt godt sammen, du kan benytte access som en ren frontend henover en SQL Server database - så du får Access frontend og sql servers overlegne styring af data.
Avatar billede mugs Novice
02. marts 2004 - 20:55 #4
?
Avatar billede tanx Nybegynder
05. marts 2004 - 12:59 #5
Hej mugs: Sorry, jeg ikke fik svaret før nu, men i hvert fald, mange tak for hjælpen ;)
Avatar billede mugs Novice
05. marts 2004 - 13:08 #6
tanx > Selv tak. Men hjalp vores forslag?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester