Avatar billede krydset Nybegynder
25. oktober 2005 - 16:28 Der er 12 kommentarer og
1 løsning

design af produkt database

Hejsa....

Jeg har tænkt lidt over hvordan en db skal se ud til vare administration i en shop men kan ikke rigtig finde ud af det så det bliver ordentligt fleksibelt. Jeg giver her 150 point til en der kan vise en brugbar løsning.

Lidt krav til det.

Skal have flg.

En hovedkategori

til en hovedcategori skal der kunne tilføjes flere undercategorier(hvis man kan kalde det det eller skal man kalde det vare grupper) så i det tilfælde en underkategorier

eks.
en hovedkategori der hedder skal have flg underkategorier
Hardware
  -Mus
  -tasteturer
  -højtalere


produkter som skal indeholde alle produkter samt information om dem

attributer som skal kunne indeholde forkellige attributer til varer

Håber der en sjæl der kan hjælpe med design af det her da jeg er lost.


Mvh Thomas L.
Avatar billede mahler Nybegynder
25. oktober 2005 - 16:58 #1
Jeg ville nok gøre noget i stil med:
------------------------------------
CREATE TABLE category (
  id int(10) unsigned NOT NULL auto_increment,
  name char(100) NOT NULL default '',
  parent_id int(10) unsigned NOT NULL default '0',
  sort smallint(5) unsigned NOT NULL default '100',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

CREATE TABLE category_product (
  product_id int(10) unsigned NOT NULL default '0',
  category_id int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (category_id,product_id)
) TYPE=MyISAM;

CREATE TABLE product (
  id int(10) unsigned NOT NULL auto_increment,
  name char(200) NOT NULL default '',
  changed_time timestamp(14) NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;

CREATE TABLE product_extra (
  product_id int(11) NOT NULL default '0',
  name char(100) NOT NULL default '',
  value char(100) NOT NULL default '',
  sort smallint(5) unsigned NOT NULL default '200',
  PRIMARY KEY  (product_id,name)
) TYPE=MyISAM;
------------------------------------

Category lavet som "simpe hierarki". Se:
Se http://www.sitepoint.com/article/hierarchical-data-database

category_product: Lavet så et produkt kan ligge i flere kategorier.
Man kan ventuelt i stedet for dette table lægge category_id direkte i product-tabellen.

product: stam-data for produktet. bør udvides med de felter, som findes for alle produkter - f.eks. pris og lignende.

product_extra: Her ville jeg ligge alle produkt-specifikke data som "name"/"value" par. "sort" ville jeg bruge til at kunne prioritere rækkefølgen, som de vises i. Man kunne eventuelt lave primary key om til en "id integer unsigned auto_increment", i stedet for kombinationen af "id" og "name".
Avatar billede krydset Nybegynder
27. oktober 2005 - 08:55 #2
Hejsa er tilbage igen..

Jeg forstår ikke her der er 2 primary key´s kan det passe

CREATE TABLE category_product (
  product_id int(10) unsigned NOT NULL default '0',
  category_id int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (category_id,product_id)
) TYPE=MyISAM;
Avatar billede krydset Nybegynder
27. oktober 2005 - 09:06 #3
hvad betyder parent_id i category tbl
Avatar billede mahler Nybegynder
27. oktober 2005 - 09:26 #4
> Jeg forstår ikke her der er 2 primary key´s kan det passe

Det er et design valg.
Du kan enten lave en "unik primær nøgle" eller man kan lave en primær nøgle, der består af flere felter.

Det kan ofte være praktisk, at have en "id" som er primær nøgle alene og unik for tabellen, men hvis jeg tabeller, som binder to fremmednøgler sammen - foretrækker jeg at gøre kombinationen af de to fremmednøgler til primærnøgle i den tabel, som binder dem sammen.
Avatar billede mahler Nybegynder
27. oktober 2005 - 09:28 #5
> hvad betyder parent_id i category tbl

Det er en henvisning til et andet category.id.

Alle kategorier med parent_id=0 kunne være dine hovedkategorier ("hardware").
Hvis "hardware" har id=1, så ville "mus", "højtalere" og andre under kategorier have parent_id=1.
Avatar billede krydset Nybegynder
27. oktober 2005 - 10:16 #6
hmmm tror ikke helt jeg forstår det korrekt.

Som jeg ser det nu er der kun tabeller til
hovedkategori
underkategorier
men ikke varer
Avatar billede krydset Nybegynder
27. oktober 2005 - 10:20 #7
slut resulat vil jeg have til at se sådan her ud

Hardware
  -Mus
    -en mus
    -en mus til
  -tasteturer
    -et tastetur
    -et til tastetur
  -højtalere
    -en slags højtalere
    -en anden slags højtalere
Bøger
  -drama
    -en drama bog
  -gyser
    -en gyser bog

men kan være jeg har formuleret mig forkert :|
Avatar billede mahler Nybegynder
27. oktober 2005 - 10:29 #8
Data til "Category":
INSERT INTO category VALUES (1,'hardware',0,100);
INSERT INTO category VALUES (2,'mus',1,100);
INSERT INTO category VALUES (3,'tastaturer',1,100);
INSERT INTO category VALUES (4,'højtalere',1,100);
INSERT INTO category VALUES (5,'børger',0,100);
INSERT INTO category VALUES (6,'drama',5,100);
INSERT INTO category VALUES (7,'gysere',5,100);
INSERT INTO category VALUES (8,'trådløse mus',2,100);
INSERT INTO category VALUES (9,'optiske mus',2,100);
Avatar billede mahler Nybegynder
27. oktober 2005 - 10:31 #9
Data til product:
INSERT INTO product VALUES (1,'mus nummer 1',20051027103032);
INSERT INTO product VALUES (2,'mus nummer 2',20051027103034);
INSERT INTO product VALUES (3,'mus nummer 3',20051027103035);
INSERT INTO product VALUES (4,'tastatur 1',20051027103054);
INSERT INTO product VALUES (5,'tastatur 2',20051027103056);
INSERT INTO product VALUES (6,'tastatur 3',20051027103059);
INSERT INTO product VALUES (7,'bog 1',20051027103104);
INSERT INTO product VALUES (8,'bog 2',20051027103108);
INSERT INTO product VALUES (9,'bog 3',20051027103109);
Avatar billede mahler Nybegynder
27. oktober 2005 - 10:35 #10
Data til category_product:
INSERT INTO category_product VALUES (4,3);
INSERT INTO category_product VALUES (5,3);
INSERT INTO category_product VALUES (6,3);
INSERT INTO category_product VALUES (7,6);
INSERT INTO category_product VALUES (9,6);
INSERT INTO category_product VALUES (7,7);
INSERT INTO category_product VALUES (8,7);
INSERT INTO category_product VALUES (1,8);
INSERT INTO category_product VALUES (3,8);
INSERT INTO category_product VALUES (1,9);
INSERT INTO category_product VALUES (2,9);
Avatar billede mahler Nybegynder
27. oktober 2005 - 10:36 #11
Med ovenstående data vil du have følgende kategorier:

* hardware
** Mus
*** Trådløse mus
*** Optiske mus
** tastaturer
** Højtalere
* Bøger
** Drama
** Gysere
Avatar billede mahler Nybegynder
27. oktober 2005 - 10:37 #12
Mus nummer 1 vil ligge som både en trådløs og en optisk mus.
Mus nummer 2 vil ligge som en optisk mus
Mus nummer 3 vil ligee som en trådløs mås.

Alle tastaturerne ligger bare som tastaturer.
Avatar billede krydset Nybegynder
27. oktober 2005 - 12:12 #13
Ja her skal logikken bruges :-D

Jeg kigger på det igen og vender tilbge igeb
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