Avatar billede groyk Novice
25. august 2009 - 14:55 Der er 9 kommentarer og
1 løsning

database struktur

Hej Eksperter

Jeg er ved at planligge en database til et mindre ERP system. har før lavet en komplet webshop mv. så det er ikke helt nyt for mig.

Er dog ikke super database / regnskabs mand. så er lidt usikker på om mit database layout godt, eller om der er ting jeg ikke har overvejet.

Jeg håber der nogle der evt. kan give mig lidt feedback på det layout jeg har lavet indtil videre.

Layoutet kan ses her
http://www.smartkant.dk/erp/erp.png

Og kan downloades til DBDesigner4 her
http://www.smartkant.dk/erp/erp.xml
Avatar billede arne_v Ekspert
26. august 2009 - 00:36 #1
Et par hurtige loese kommentarer:

- lad vaere med at saette size paa INT og DOUBLE da den ikke bruges til noget
- dine VARCHAR(3) kunne nok laves som CHAR(3) da der ikke er nok variabelt over dem
- undgaa TEXT hvis det ikke er absolut noedvendigt
- DECIMAL(6,6) duer ikke til valuta kurs DECIMAL(12,6) maaske xxxxxx.xxxxxx
- brug DECIMAL fremfor DOUBLE til price og quantity
- en del tabeller mangler en aktiv kolonne som du kan saette til false naar du "sletter" en raekke for man sletter naturligvis ikke selve raekken
Avatar billede arne_v Ekspert
26. august 2009 - 00:36 #2
Skal dine VER kolonner bruges til optimistic long time locking ?
Avatar billede groyk Novice
26. august 2009 - 22:25 #3
Hej arne_v

Mange tak for feedback. Ja tanken er at bruge ver kolonner til optimistic long time locking. (Mange tak for artiklen) Dog er de "bare" smidt på, men der vil muligvis være nogle af dem der ikke er nødvendige. ex. "relations tabeller" der ex. forbinder users og roles

vedr. kolonne til sletning, vil det sige at du ALDRIG vil slette en kolonne i databasen? hvad så ved update, her bør man vel også gemme den "gamle" række eller? (bingo, så har vi versions styring!) Alternativt kan man "update" rækkerne med mindre man aktivt beder om en ny revision?

Hvis man gør dette, kan man gemme forskellige versioner, og så trække den nyeste når der hentes data (bliver hurtigt en stor database?). Eller skal det gøres i en seperat "history" database?.

INT og DOUBLE fjerner jeg size på. Hvad er egentlig forskellen på INT og INTEGER?

DECIMAL(6,6) troede egentlig at det var DECIMAL(før_komma,efter_komma) -> Her lærte jeg lige noget.
Avatar billede arne_v Ekspert
26. august 2009 - 22:47 #4
Jeg vil normalt ikke slaette en raekke i databasen. Hvis man sletter en kunde vil man ikke kunne genskabe tallene fra en given rapport paa et senere tidsounkt. Saa jeg ville saette kunden som inaktiv. Samme med stort set alt andet.

At have alle versioner af alle data i databasen bliver nok for tungt. Man kan leve med at kundens adresse er hans nuvaerende adresse og ikke den paa tidspunktet for ordren.

INT og INTEGER er synonymer.
Avatar billede groyk Novice
27. august 2009 - 20:40 #5
OK. At trække vare og kundeoplysninger fra de respektive tabeller, og ikke gemme dette separat sammen med de øvrige ordreinformationer vil naturligvis være noget nemmere!

Kræver naturligvis at INGEN data slettes fra databasen som du skriver.

Vil denne tilgangsvinkel være ok iht. regnskabsloven? en faktura kan jo "ændres" efterfølgende!

Dette kan måske løses ved at gemme en "orginal" pdf faktura.

Takker for hjælpen indtil nu. Du må meget gerne smide et svar. poster nok løbende opdateringer til databasen her. hvis jeg skulle have flere spørgsmål.
Avatar billede arne_v Ekspert
27. august 2009 - 20:53 #6
Jeg kender ikke regnskabslovens krav.

Det er naturligvis noget som du skal have undersoegt.
Avatar billede arne_v Ekspert
27. august 2009 - 20:53 #7
og et svar
Avatar billede groyk Novice
10. september 2009 - 20:54 #8
Hej Arne

Lige et lille spørgsmål mere. Jeg har nogle kolonner (INTEGER) hvor jeg indsætter 0 for inaktiv og 1 for aktiv. Hvilken datatype skal bruges hvis jeg i stedet vil have "true" og "false" og er der ide i at gøre dette?
Avatar billede arne_v Ekspert
10. september 2009 - 21:06 #9
Typisk vil man bruge TINYINT.

BOOLEAN er synonym for TINYINT.

Et eksotisk alternativ er ENUM med 2 passende værdier.
Avatar billede groyk Novice
11. september 2009 - 07:31 #10
Takker for hurtig respons

Leder ikke efter eksotiske løsninger, men overskuelige og "rigtige"

Takker igen.
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