Avatar billede radiv Nybegynder
29. november 2004 - 14:05 Der er 7 kommentarer og
1 løsning

Tabeller i en database - normalisering

Jeg skal gemme nogle oplysninger om en genstand, og har blandt andet disse tabeller:

Genstand
-ID (PK)
-kategoriID (FK)
-subkategoriID (FK)
-producentID (FK)

De tre sidste tabeller har alle ID som PK, og en beskrivelse.

En kategori har en eller flere subkategorier.
En subkategori har en eller flere producenter.

En producent kan optræde i en eller flere subkategorier.

Hvordan skal databasen se ud, med de nødvændige relationer, og normaliseret?
Avatar billede arne_v Ekspert
29. november 2004 - 14:44 #1
Hvis jeg har forstået dig rigtigt:

Genstand
--------
ID (PK)
subkategoriID (FK)
producentID (FK)
...

Producent
---------
ID (PK)
...

Subkategori
-----------
ID (PK)
kategoriID (FK)
...

Kategori
--------
ID (PK)
...
Avatar billede radiv Nybegynder
29. november 2004 - 15:02 #2
Delvist.

En genstand skal også have en kategoriID (FK), det er nemt nok.

Men til en producent, skal der også være muligt at se hvilke subkategorier den findes i. Fx kan producenten "Canon" tilhøre både subkategori "Kamera" og subkategori "Printer".
Avatar billede arne_v Ekspert
29. november 2004 - 15:08 #3
Jeg havde lavet 2 antagelser.

1)  at en sub kategori kun kunne tilhøre en kategori

og i så fald er det unødvendigt at angive kategori i Genstand, da den er
givet ved subkategori

2)  at sammenknytningen mellem producenter og subkategorier udelukkende
    sker gennem genstande

Det er ikke sikert at det giver den hurtigste SQL. Men du bad jo eksplicit om
noget normaliseret.
Avatar billede radiv Nybegynder
29. november 2004 - 15:59 #4
OK, antagelse 1 er korrekt, og det er selvfølgelig nok at angive kategori i genstand.

Til antagelse 2 kan jeg tilføje at til en given genstand skal der vælges kategori, subkategori og producent, i nævnte rækkefølge. Dvs. at valg af kategori A giver subkategorier Aa, Ab og Ac, og valg af subkategori Ab giver producenter Ab1, Ab2 og Ab3.

Da får jeg en ny tabel

Producent-subkategori
-------
producentID (PK)
subkategoriID (PK)

hvor det er nemt ud fra en subkategori at finde de tilhørende producenter.

Giver det mening?
Avatar billede arne_v Ekspert
29. november 2004 - 16:08 #5
Ja absolut
Avatar billede arne_v Ekspert
29. november 2004 - 16:11 #6
Men teoretisk skulle:

Genstand
--------
ID (PK)
subkategoriID (FK)
producentID (FK)
...

ProducentSubkategori
-------
producentID (PK,FK)
subkategoriID (PK,FK)

måske være:

Genstand
--------
ID (PK)
producentsubkategoriID (FK)
...

ProducentSubkategori
-------
ID (PK)
producentID (FK)
subkategoriID (FK)
Avatar billede radiv Nybegynder
29. november 2004 - 17:09 #7
Da har jeg:

1. Genstand
--------
ID (PK)
producentsubkategoriID (FK)
...

2. Kategori
--------
ID (PK)
...

3. Subkategori
-----------
ID (PK)
kategoriID (FK)
...

4. Producent
---------
ID (PK)
...

5. ProducentSubkategori
-------
ID (PK)
producentID (FK)
subkategoriID (FK)

Det ser I mine øjne ud som en ok løsning, så den giver jeg lige et forsøg. (og jeg har vel 14 dages returret? ;O)

Tak for hjælp, arne_v.
Avatar billede arne_v Ekspert
29. november 2004 - 17:15 #8
jeg ligger et svar så
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