Avatar billede pnr Nybegynder
24. januar 2005 - 10:31 Der er 27 kommentarer og
1 løsning

Hjælp til design af database til dynamisk produktkatalog

Jeg skal til at lave et meget dynamisk produktkatalog. Produktkataloget er ikke stilet til en bestemt branche, men skal være så fleksibel at den kan bruges af mange forskellige brancher.

Min idé er følgende:

Jeg har bestemt at produkterne bliver inddelt under en hovedkategori (eks. Hardware), en underkategori (eks. Harddisk) og så selve produktet (Maxtor…). Kan det ikke dække over det meste?

Det skal være muligt at indtaste data omkring hvert produkt, da data for de forskellige produkter i en underkategori sjældent er ens skal dette også være dynamisk. Dvs. at for hver underkategori skal man vælge hvilke felter der høre til produkterne F.eks. under harddiske skal der opgives interface, størrelse, hastighed osv. og under printere skal der opgives type, sider i minuttet, farve/ sort-hvid osv.

Det skal også være muligt at oprette disse ”datafelter”, Dvs. at man kan oprette interface, størrelse, hastighed, type, sider i minuttet, farve/sort-hvid osv.

Er der nogle forslag til hvordan en sådan database kan skrues sammen, og hvad nu hvis der evt skulle være mulighed for at lave den i forskellige sprog?
Avatar billede arne_v Ekspert
24. januar 2005 - 10:43 #1
hovedkategori
-------------
id (PK)
navn

underkategori
-------------
id (PK)
navn
hovedkategori (FK)

produkt
-------
id (PK)
navn
underkategori (FK)
...

beskrivelse
-----------
produkt (delt PK, FK)
attributnavn (delt PK)
attributværdi

eller

beskrivelse
-----------
produkt (delt PK, FK)
attributnavn (delt PK)
sprog (delt PK)
attributværdi
Avatar billede krydset Nybegynder
24. januar 2005 - 11:02 #2
undskyld jeg lige bryder ind, hvad forstås der ved attributeværdi =
Avatar billede arne_v Ekspert
24. januar 2005 - 11:04 #3
eks.:

attributnavn attributværdi
størrelse    80 GB
interface    SATA
Avatar billede krydset Nybegynder
24. januar 2005 - 11:15 #4
Okay takker :-D
Avatar billede arne_v Ekspert
30. januar 2005 - 19:12 #5
OK ?
Avatar billede pnr Nybegynder
02. februar 2005 - 10:35 #6
Ja du må undskylde at jeg ikke har fået kigget så meget på dit løsningsforslag!

Jeg har lige et par spørgsmål til dit forslag.

Hvilken type skal jeg lave feltet "Attributværdi" i tabellen "beskrivelse", den skal jo både kunne indeholde en kort tekst og en meget lang tekst (ca. fra 0 - 1000 tegn). Er det et problem at lave den en varchar(1000), selv om hovedeparten af de data der skal i den måske kun fylder 20 tegn?

Har du lavet nogle løsninger der ligner denne database opbygning? Er der evt. noget jeg skal være opmærksom på ved at bruge dennne løsning?
Avatar billede arne_v Ekspert
02. februar 2005 - 10:43 #7
En VARCHAR fylder kun 2 byte + actual length i databasen, så det burde ikke være
noget problem.

Jeg har lavet tilsvarende løsninger masser af gange.

Det at attributnavn er en felt værdi kan godt give nogle data problemer. Altså
at der bruges forskellige værdier for det samme.

Men tit er det ikke et problem.

Og er det et problem så laver man en tabel med legale værdier i databasen og
lader databasen enforec ereferentiel integritet eller man lader applikationen
tvinge brugeren til at vælge fra en combo box hvor værdierne hentes fra
en konfigurations fil eller noget tilsvarende.
Avatar billede pnr Nybegynder
02. februar 2005 - 14:28 #8
Hvordan vil du forslå at sprogstyringen implementeres i hovedkategori, underkategori og produkt?
Avatar billede arne_v Ekspert
02. februar 2005 - 14:56 #9
D.v.s. at skal have attributterne på dansk, engelsk, tysk etc. ?

Så skal alle teksterne ud i seperate tabeller med en delt PK som er id i moder
tabellen og sproget
Avatar billede pnr Nybegynder
02. februar 2005 - 15:02 #10
Vil det sige at jeg skal bruge en tabel mere kun til teksterne i hovedkategori, underkategori og produkt?
Avatar billede arne_v Ekspert
02. februar 2005 - 15:06 #11
En til hver vil jeg mene
Avatar billede pnr Nybegynder
02. februar 2005 - 15:17 #12
Det vil ikke være smartere at lave følgende tabel:

Id(FK)
Tekst
Sprog

Også lade de 3 tabeller deles om denne?
Avatar billede arne_v Ekspert
02. februar 2005 - 15:22 #13
Så skal du sikre dig at de 3 tabeller aldrig har samme id.

For besværligt efter min mening.
Avatar billede pnr Nybegynder
03. februar 2005 - 12:46 #14
Jeg bliver ved med at spørge :-) Jeg hæver lige pointne lidt.

Jeg skal have lavet nogle produktlistninger hvor der skal vises nogle af de specifikationer der er angivet for hvert produkt. Det skal vælges dynamisk hvilke specifikationer der skal vises i denne liste for underkategori.

Hvordan vil du tilføje dette i databasen?
Avatar billede pnr Nybegynder
07. februar 2005 - 13:08 #15
arne_v: Har du mere at byde inde med, ellers vil jeg lukke og spørge videre i en ny tråd?
Avatar billede arne_v Ekspert
07. februar 2005 - 13:47 #16
Jeg forstår ikke det sidste (03/02-2005 12:46:39)
Avatar billede pnr Nybegynder
07. februar 2005 - 13:55 #17
Ok, databasen skal bruges til at vise produkter på en hjemmeside, på denne hjemmeside skal man kunne lave en søgning på f.eks. ordet "Sony" der efter skal de fundne resultater vise på følgende måde:

Sony monitore
Model    Beskrivelse    Størrelse      Opdateringshastighed
....
....
....

Sony Kameraer
Model    Beskrivelse    AntalPixel    Zoom
......
......

Man skal kunne vælge hvilke specifikationer man ønsker vist for hver produkt i denne listning.
Avatar billede arne_v Ekspert
07. februar 2005 - 20:52 #18
Kan du ikke det med den eksisterende tabel struktur ?

En query som joiner det hele med en WHERE LIKE på Sony og en ORDER BY kategori/underkategori
og så lad din applikation formatere
Avatar billede pnr Nybegynder
08. februar 2005 - 09:01 #19
Jo men brugeren af systemet skal kunne vælge dynamisk hvilke felter for hver underkategori der skal vises i en sådan liste, det skal jeg vel have en tabel der holder styr på så?
Avatar billede arne_v Ekspert
09. februar 2005 - 22:27 #20
Så skal du nok have en tabel mere:

beskrivelsekrav
---------------
produkt (delt PK, FK)
attributnavn (delt PK)
Avatar billede pnr Nybegynder
15. februar 2005 - 10:45 #21
Jeg har ikke glemt den her! skal nok vende tilbage når jeg lige får rodet lidt med dit forslag.
Avatar billede pnr Nybegynder
01. april 2005 - 14:13 #22
Nå nu fik jeg endelig tid til at rode videre med den her opgave, jeg håber du er med endnu.

Jeg har lagt et database diagram her: http://test.ibil.dk/db.gif Kan du evt. kigge på det og se om det er realistisk? Jeg smider lige 50 point mere i puljen.
Avatar billede arne_v Ekspert
01. april 2005 - 21:10 #23
Det ser ret prof ud det du har lavet.

Kommentarer:

1) jeg tror at relationstabel og relaterettabel kan slåes sammen til en tabel
  der bare har 2 relationer til produkt

2) hvorfor er der ikke sprog på beskrivelse når der er på alt andet ?
Avatar billede pnr Nybegynder
03. april 2005 - 08:19 #24
Tak for dine kommentarer!

Ja jeg har vist glemt sprog på beskrivelse! Men vil det være bedre at lave en ny primærnøgle i ProduktData (eks. produktDataId) og så bruge den som fremmednøgle i Beskrivelse? Eller er det lige meget at produktId og sprog er primær nøgle i både ProduktData og Beskrivelse?
Avatar billede pnr Nybegynder
13. april 2005 - 09:20 #25
Nå men hvis ikke der er flere kommentar til spørgsmålet vil jeg afslutte det for de her omgang det kan være at jeg referere til det på et senere tidspunkt.

arbe_v tusind tak for hjælpen.
Avatar billede pnr Nybegynder
13. april 2005 - 09:21 #26
arbe_v skulle have været arne_v, sorry
Avatar billede pnr Nybegynder
30. april 2005 - 00:12 #27
arne_v: kunne der være en chance for at du kan hjælpe mig her: http://www.eksperten.dk/spm/613467
Avatar billede arne_v Ekspert
30. april 2005 - 00:15 #28
jeg har set det, men jeg troede at janus kiggede på det - jeg kigger lige
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