Avatar billede mrfraggins Nybegynder
25. juni 2004 - 19:26 Der er 9 kommentarer og
1 løsning

Design af database

Hej Eksperter,

Jeg står overfor at skulle lave et system der kan varetage følgende:
- privatkunder og erhverskunder (firma)
- kontaktpersoner
- produkt
- forskellige kontaktpersoner knyttet til et produkt, med
  forskellige rettigheder, såsom Owner, Admin, Tech,
  Billing.

Det der kommer til at ske er at en privatkunde eller en erhverskunde bestiller et produkt, derefter kan han vælge at knytte nogle forskellige brugere til de forskellige roller/rettighedder.

Opbygning af databasen havde jeg forestillet mig skulle bestå af 6 tabeller, jeg prøver at gøre det hele så fleksibelt som overhovedet muligt og normaliseret.

Tabellerne er: user, role, user_role_link, product, product_role_link, company.

Således at det vil så således ud:

company -> product <- product_role_link -> role <- user_role_link -> user

company  product  p_r_link    role
-------  -------  --------    ----
id        id      id          id
name      name    productid  name
blah      blah    roleid      permission

u_r_link  user/person
--------  ----
id        id
roleid    name
userid    phone
          blah

Således kan et produkt have flere kontaktpersoner, af forskellige typer med forskellige rettigheder. Samtidig kan en person være knyttet til flere produkter. Det eneste jeg umiddelbart er i tvivl om er linket med "company" og "product", man kan ikke umiddelbart se hvilke personer der er i et company og det behøver de måske ikke.

Ville gerne have lavet diagrammet i Visio men har det ikke lige her på denne computer, hvis nogle skulle have lyst til at komme med forbedringer eller forslag så ville det være kanont lækkert!

På forhånd tak for hjælpen.
Avatar billede arne_v Ekspert
25. juni 2004 - 19:40 #1
Du kan alligevel ikke poste Visio her.

Jeg ville nok have lavet det som:

company
-------
id, PK
name
*

product
-------
id, PK
name
*

role
----
id, PK
name
*

user
----
id, PK
name
*

company_product
---------------
company_id, PK, FK->company
product_id, PK, FK->product

whoiswho
--------
company_id, PK, FK->company
product_id, PK, FK->product
role_id, PK, FK->role
user_id, PK, FK->user

men jeg er ikke sikker på ta jeg har forstået problemstillingen helt.
Avatar billede mrfraggins Nybegynder
28. juni 2004 - 07:47 #2
det giver faktisk meget godt mening, hvis det så er en privatkunde optræder der så ikke noget i company_product for det produkt men så vil company_id i whoiswho også være null? Kan det gøres pænere?
Avatar billede arne_v Ekspert
28. juni 2004 - 07:55 #3
Jeg tror faktisk at jeg ville registrere privat kunder ligesom firmaer.
Avatar billede mrfraggins Nybegynder
28. juni 2004 - 08:21 #4
Hvordan det?

Man bliver nød til at kunne skelne mellem de 2 slags kunder, da erhverv har 14 dages kredit og privat ikke har, samt af flere andre årsager. Lovgivningen for privat kunder er noget mere løs end for firmaer der er rimeligt bundet.
Avatar billede arne_v Ekspert
28. juni 2004 - 11:05 #5
Tilføj et eller flere felter i company tabellen som beskriver vilkår.
Avatar billede mrfraggins Nybegynder
28. juni 2004 - 11:35 #6
det kan der være noget om, men så har man lige pludselig et tomt firmanavn, eller ville du smide fullname ind der?

smid lige et svar også :)

tror umiddelbart hellere jeg vill ehave en null i whoiswho tabellen så.
Avatar billede arne_v Ekspert
28. juni 2004 - 11:46 #7
Jeg ville bare smide personens navn ind som firma navn.
Avatar billede arne_v Ekspert
28. juni 2004 - 11:46 #8
svar
Avatar billede arne_v Ekspert
28. juni 2004 - 11:47 #9
Felter som indgår i PK kan ikke være NULL.
Avatar billede mrfraggins Nybegynder
28. juni 2004 - 12:12 #10
det er også rigtig. så er man bare lidt tvunget til at have et felt i company der beskriver om det er en privat person eller et firma.
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