Avatar billede kroger Nybegynder
09. august 2002 - 02:07 Der er 6 kommentarer og
1 løsning

design af database

Jeg er igang med at bygge en hjemeside med tilh. mssql database.
Jeg er meget i tvivl om hvordan den vil være praktisk at bygge op da jeg ikke har så meget erfaring på dette område...

Den skal indeholde nogle person oplysninger (navn adresse etc.), en kort beskrivelse (100 tegn) og søgeord (300 tegn).
Der er 40 forskellige kategorier som personerne skal være under, og indtil videre har jeg været så dum at lave 40 tabeller, hvilket jeg jo fandt ud af ikke var særlig praktisk med hensyn til perfomance.

Håber i har nogle ideer til opbygningen...

På forhånd tak.
  Kroger
Avatar billede kroger Nybegynder
09. august 2002 - 02:09 #1
Det skal også siges at der er en søgefunktion på siden, som skal kunne kigge hele databasen igennem.
Avatar billede slash Nybegynder
09. august 2002 - 07:55 #2
Uden jeg kender noget til hvilken kontekst det bruges i kan følgende måske bruges:

TABLE_USERINFO
UserID, Navn, Adresse, Beskrivelse, Soegeord
(UserID = Primære nøgle)

TABLE_KATEGORIER
KategoriID, KategoriNavn
(KategoriID = primær nøgle)

TABLE_USER_KATEGORIER
ID, UserID, KategoriID
(ID = primærnøgle, UserID og KategoriID = fremmed nøgler)
Avatar billede tmceu Praktikant
09. august 2002 - 07:55 #3
Det kunne lyde som om du kan nøjes med en person- og en kategoritabel. Husk primary key på begge tabeller og en foreign key mellem dem.
Avatar billede kroger Nybegynder
09. august 2002 - 16:34 #4
Hmm.
Jeg må indrømme at relationer ikke er min stærke side, men jeg prøver.
Så vidt jeg kan regne ud (hvis jeg følger slash eksempel) skal table_user_kategorier indeholde en userid f.eks. 1 og de kategori id´er som personen tilhører, hvilket ville være:
USerID    KategoriID
1          1
1          2
1          4
etc.

Er det nogenlund rigtig antaget?
Avatar billede kroger Nybegynder
09. august 2002 - 16:58 #5
Så er det at mit 7 mill. kr. spm kommer: Hvad vinder jeg ved at lave en selvstændig tabel med kategorier.
Som det er, vil de fleste personer kun optræde i højst 2-3 kategorier.
Min tanke er så om det ikke er nemmere for serveren (og mig) at der er et felt for hver person der indeholder de kategorier den hører til. og så lave en select ala:
SELECT navn, adresse, postnr FROM brugere WHERE kategori = 4;

I forhold til joins hvor den får sådan en select:
SELECT *
FROM brugere_person INNER JOIN (brugere_kategori INNER JOIN brugere_kryds ON brugere_kategori.kat_id = brugere_kryds.kat_id) ON brugere_person.person_id = brugere_kryds.person_id
WHERE brugere_kategori.kat_id = 2;

Er Access generet og ved godt * helst ikke skal benyttes i praksis...
Men her skal den læse mere data og åbne 2 tabeller...
Avatar billede slash Nybegynder
12. august 2002 - 08:02 #6
Dvs. du i Brugertabellen vil lave 40 kategoriid felter - hvis der fx. er 40 kategorier?? Dette er et meget ugunstigt DB-design....!

Skal brugere selv have mulighed for at til/framelde sig  givne kategorier???
Avatar billede kroger Nybegynder
10. oktober 2002 - 14:13 #7
Ups, jeg glemte vist at vende tilbage til den her, beklager.. Nå men tmceu´s svar ligner faktisk meget den opbygning jeg har valgt at køre med så han for pointene.
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