Avatar billede nph12 Nybegynder
03. september 2006 - 12:13 Der er 19 kommentarer og
2 løsninger

Hvordan designer jeg en database?

Hej
Hvordan designer jeg en database helt fra bunden? Hvordan skal jeg navngive de forskellige ting? Kan I anbefale nogen bøger som beskriver, hvordan man laver en database?

Jeg skal bruge databasen i forbindelse med en hjemmeside.
Avatar billede leif Seniormester
03. september 2006 - 12:55 #1
Der er ungen entydig løsning på designing af en database efter min mening. Det er meget brugt at man har ikke samme data liggende 2 steder med mindre det har et reelt formål.

Fx. i din Kundetabel har du kun postnr og når du så skal printe det ud, så henter du bynavnet fra din Postnr/by tabel.


Navngiv dine tabbeller og felter med logiske navne så skal det nok gå.
Avatar billede arne_v Ekspert
03. september 2006 - 16:15 #2
det er svært at designe databaser !

jeg har forsøgt at forklare lidt her http://www.eksperten.dk/artikler/55
Avatar billede nph12 Nybegynder
03. september 2006 - 18:09 #3
Jeg kigger lige på artiklen
Avatar billede nph12 Nybegynder
03. september 2006 - 21:31 #4
Jeg forstår ikke helt følgende:

Unik identifikation i tabellerne
Primary key
Foreign key

Det er måske lettere, hvis jeg skrive hvilke oplysninger, jeg vil havde ned i databasen.

Første omgang har jeg tænkt mig følgende:

Fornavn
Efternavn
Brugernavn
Adgangskode
E-mail adresse
Adresse
By
Postnummer
Område (København, Storkøbenhavn, Århus, Odense osv.)

Bagefter skal jeg havde tilføjet noget meget til brugeren som uddannelse, hobby m.m.
Avatar billede pidgeot Nybegynder
03. september 2006 - 22:10 #5
Unik identifikation i tabellerne betyder at der skal være et eller andet du kan bruge til entydigt at bestemme hvilken række du har med at gøre. Det vil typisk være et ID-nummer.

Din primary key (primærnøgle) består af de felter der bestemmer din række entydigt - dette vil som sagt typisk være et ID-nummer, men kan i visse tilfælde også være alle felter i tabellen (normalt når der skal bruges en ekstra tabel til at sammenkæde to tabeller med hinanden).

En foreign key (fremmednøgle) er et felt i en tabel som peger på en bestemt række i en anden tabel.

Ud fra det du kommer med der bør du smide alt andet end by og område i en enkelt brugertabel, og så have en seperat tabel med postnumre som kæder et postnummer sammen med en by (eller rettere, distrikt) - her vil postnummeret så være primærnøgle, fordi der ikke findes postnumre der hører til mere end et postdistrikt.
Område bør du muligvis droppe, da det burde være indlysende ud fra byen - men hvis du bruger den, bør du lave en ekstra tabel med de mulige områder, og så have et ekstra felt (fremmednøgle) i din postnummertabel der peger på et område.

De andre oplysninger du skal have kan enten være et tekstfelt, eller benytte samme princip som det med postnumrene - det afhænger af om det skal være fri tekst, eller om der er en fast liste der skal bruges.
Avatar billede arne_v Ekspert
03. september 2006 - 22:15 #6
jeg vil nok foreslå dig et ekstra felt id til din bruger tabel som primær nøgle

fornavn+efternavn er ikke unikt

hvis du altid har en email adresse på brugerne kunne den bruges som primær nøgle

hvis du splitter by ud i en seperat tabel vel den have postnr som primær nøgle og
postnr i bruger tabellen vil være en fremmed nøgle
Avatar billede nph12 Nybegynder
04. september 2006 - 11:05 #7
Øv, jeg synes ellers, at jeg var ved at forstå det, men nu er det bare helt sort.

Kan vi ikke tage det trin-for-trin? Meget gerne efter arne v artikel.

P.S. Kan I anbefale nogen bøger om, hvordan man laver database design?
Avatar billede nph12 Nybegynder
04. september 2006 - 21:03 #8
kan jeg bruge brugernavn som unikt id?
Avatar billede arne_v Ekspert
04. september 2006 - 21:10 #9
ja
Avatar billede nph12 Nybegynder
04. september 2006 - 21:54 #10
Noget i denne stil?

bruger
-------
brugernavn (PK)
fornavn
efternavn
adgangskode

hvad gør jeg med resten?

Jeg vil godt kunne søge på område, men det kan måske løses ved at søge intervaller af postnumre. Jeg skal lave formularen i php.
Avatar billede nph12 Nybegynder
05. september 2006 - 10:31 #11
Det er rigtigt? Eller kan man lave det på andre måder?

bruger
-------
brugernavn (PK)
fornavn
efternavn
adgangskode
e-mail adresse
adresse
postnummer (FK)

distrikt
----------
postnummer (PK)(FK)
by
Avatar billede arne_v Ekspert
05. september 2006 - 16:33 #12
jeps

(bortset fra at distrikt.postnummer kun er PK ikke FK)
Avatar billede nph12 Nybegynder
05. september 2006 - 17:53 #13
Altså sådan her?

bruger
-------
brugernavn (PK)
fornavn
efternavn
adgangskode
e-mail adresse
adresse
postnummer (FK)

distrikt
----------
postnummer (PK)
by

Hvad er relationen mellem de to tabeller? 1:1, 1:M eller M:M?
Avatar billede pidgeot Nybegynder
05. september 2006 - 18:06 #14
1:M. Hver bruger har kun et postnummer, men et postnummer kan bruges af mange brugere.
Avatar billede nph12 Nybegynder
05. september 2006 - 21:36 #15
OK. Jeg holder her, men kunne godt tænke mig, at lære noget mere om databaser. Hvordan kommer jeg videre?

Hvis der er nogen som vil have point, så opret venligst et svar.
Avatar billede arne_v Ekspert
05. september 2006 - 21:43 #16
Der er skrevet bøger om det. Tykke bøger.

På hvilket niveau er du med hensyn til matematik og programmering ?

(med henblik på en anbefaling)
Avatar billede arne_v Ekspert
05. september 2006 - 21:43 #17
og et svar fra mig
Avatar billede nph12 Nybegynder
05. september 2006 - 21:55 #18
Jeg har haft matematik på højniveau. Programmering er jeg lige startet på (her for et par uger siden).
Avatar billede arne_v Ekspert
05. september 2006 - 22:14 #19
"højniveau" ? folkeskolen ? gymnasiet ? universitet ?

Hvis du kan klare en tung sag så er:

An Introduction to Database Systems / C.J. Date

absolut en klassiker.

Og lad dig ikke narre af det der "introduction".

Du kan også starte her http://en.wikipedia.org/wiki/Relational_database og
følge diverse link og læse et overview og få nogle ideer til yderligere
læsning.
Avatar billede pidgeot Nybegynder
05. september 2006 - 22:28 #20
En anden bog der måske kunne bruges er Fundamentals of Database Systems af Elmasri - den havde vi da jeg lærte om databaser på 1. semester på datmatikeruddannelsen (2 år siden nu). Det er, som Date (og stort set alle andre bøger om emnet), tung læsning - men hvis man ellers kan tygge sig igennem det, kan man virkelig få meget ud af det.

Udfra hvad jeg har hørt om Date, er jeg dog ikke i tvivl om at han også nok ved hvad han snakker om, så det er nok mest af alt et spørgsmål om hvad der lige er tilgængeligt - ikke engang prisen burde spille nogen afgørende rolle, så vidt jeg lige har kunnet se koster de to bøger stort set det samme.
Avatar billede nph12 Nybegynder
05. september 2006 - 22:39 #21
Højniveau på gymnasiet.

Jeg kigger nærmere på de nævnte bøger. Mange tak for hjælpen:-)
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