Avatar billede trp79 Nybegynder
19. august 2003 - 08:42 Der er 13 kommentarer og
1 løsning

Bør jeg oprette seperat tabel?

Hejsa,
Jeg har en Database med en tabel indtil videre. Brugere kan uploade en backup af deres data i denne tabel, hvor blandt andet uploadings datoen og klokkeslet gemmes.
Jeg har tænkt mig at lave det sådan, at man kan hente en backup igen, hvor man skal have mulighed for at vælge hvilken dato man ønsker at hente backup fra.

Mit spørgsmål er så: hvor mange tabeller bør jeg bruge til det? Skal jeg have alle date i en tabel, eller bør jeg lave en "history" og en "last upload" tabel hvor jeg har alle de sidste uploads i "history" og den sidst nye upload i "last upload" ?
Avatar billede erikjacobsen Ekspert
19. august 2003 - 09:04 #1
Umiddelbart nej. Du skal nok sætte index på dato og/eller brugernavn, da det
er de felter, der bliver brugt til at finde data igen.
Avatar billede arne_v Ekspert
19. august 2003 - 09:06 #2
Det kan ikke siges udfra de foreliggend eoplysninger.

Men der er nogle regler for tabel-design:

1)  ikke flere værdier i et felt

Altså ikke et felt med værdien:
123,456,789

2)  ikke redundante data

Altså ikke:

navn      adresse          værdi
Mogens    MVej 1          123
Mogens    MVej 1          456
Mogens    MVej 1          789

Hvis du følger de regler så går du ikke helt galt med din tabel-struktur.
Avatar billede trp79 Nybegynder
19. august 2003 - 09:23 #3
Det er i forbindelse med et kundekartotek. Min tanke er at man skal have mulighed for at uploade en backup af sine data og til enhver tid kunne hente en backup ned - præcis som den så ud den uploade dato.
Der ligger altså en masse information omkring kunder, disse behøver nødvendigvis ikke at have ændret sig alle sammen, men det er vel ikke redundant i dette tilfælde, altså sådan "undgå redundant data".

Håber oplysningerne er lidt mere uddybende,

mvh
Torben
Avatar billede trp79 Nybegynder
19. august 2003 - 09:26 #4
Det skal lige siges at der i kundekartoteket er mange andre information end bare tlf nr, adresse osv. Der er oplysninger om omsætning til dags data, diverse noter omkring kunden osv...
Avatar billede arne_v Ekspert
19. august 2003 - 09:31 #5
Hvis du vil have dataene tilgængelige i din database, så vil det kræve
en rimeligt kompleks tabel struktur.

Men du kan vel også vælge f.eks. at zippe alle data og så gemme
en "klump" som en værdi (i et felt af typen MEDIUMBLOB eller
sådan noget).
Avatar billede trp79 Nybegynder
19. august 2003 - 09:42 #6
Jeg tror jeg holder mig fra den komplekse struktur, da jeg ikke er god til databaser. Så som det er nu forbliver det hele i en tabel.

Eric hvis du også lige smider et svar, så får du også del i pointene.

Tak for hjælpen.

Mvh
Torben
Avatar billede erikjacobsen Ekspert
19. august 2003 - 09:43 #7
Så vidt jeg forstår dit spørgsmål, så har du een tabel, og der ligger
alle oplysninger. Og det er den samme, bortset fra oplysninger om backup-
tidspunkt etc, der indeholder de rigtige data. Er det korrekt opfattet?
Avatar billede erikjacobsen Ekspert
19. august 2003 - 09:44 #8
Ingen point til mig. Arne trænger mest, han har ikke så mange ;)
Avatar billede arne_v Ekspert
19. august 2003 - 10:07 #9
Ikke så mange point som dig.

Men jeg klarer mig.
Avatar billede trp79 Nybegynder
19. august 2003 - 10:36 #10
Som det er nu har jeg bare en tabel, i stil med:

firmatabel
firmanavn firmadr firmanote uploaded
B&O        adr1.  notenote 16072003 10:18:18
B&O        adr1.  noteNy  18082003 10:14:14


Omstabel
firmanavn oms år
B&O      10  2004

Så var det jeg tænkte at istedet for at have det sådan, så var det måske smart (rent performance mæssigt) at have en history tabel, så kun de nyeste upload, som man må formode vil blive hentet oftest, ligger i firmatabel.
Altså have en firmatabel og en firmahistorytabel.
Det giver måske lidt mere mening?
Avatar billede arne_v Ekspert
19. august 2003 - 10:54 #11
Det tror jeg ikke.

Data skal hentes fra disk under alle omstændigheder.

Og hvis der er index på det du bruger til at udvælge med (formentligt
firmanavn og uploaded), så bør det gå rimeligt hurtigt.
Avatar billede trp79 Nybegynder
19. august 2003 - 10:58 #12
Jeg er ikke lgie med på hvad du mener med index?
Firmanavn og uploaded vil tilsammen udgør en sammensat primærnøgle, hvis det er det du mener?
Avatar billede arne_v Ekspert
19. august 2003 - 11:03 #13
Index er en standard database ting til at gøre opslag hurtigere.

Det svarer sådan set til et index i en bog. I.s.f. at skulle bladre din
Java bog igennem for at finde noget om PreparedStatement, så slår du op
i indexet og ser at det er på side 237.

Et index på et felt (eller en kombination af felter) i en tabel gør
at databasen lyn hurtigt kan finde records med en bestemt værdi.

Hvis firmanavn og uploaded er en sammensat primær-nøgle, så er der automatisk
index på den.

Og så skal det nok køre effektivt.
Avatar billede trp79 Nybegynder
19. august 2003 - 11:31 #14
Det lyder godt :o)
Mange tak for hjælpen og forklaringerne Arne.
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
Computerworld tilbyder specialiserede kurser i database-management

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