Avatar billede henninghabor Nybegynder
31. marts 2007 - 23:26 Der er 7 kommentarer og
1 løsning

Relationer mellem flere databaser

Hej,

Jeg har nedenstående tabeller, hvor jeg gerne vil have at der er relation mellem tabellen produkter og de resterende.

Min første tanke var at have en kolonne (produkt_id) i alle andre tabeller end produkter, men da værdierne i f. eks. tabellen farver godt kan have relation til flere produkter, synes jeg det er dumt at have flere af samme værdi i tabellen farver.

En anden tanke var at have en tabel (relationer) med id, produkt_id, tabel_navn og tabel_id. Men når jeg så skal lave en sql forespørgsel, vil det sansynligvis fejle:

SELECT a.*, b.*, c.* FROM produkter AS a LEFT JOIN relationer AS b ON a.id = b.produkt_id LEFT JOIN b.tabel_navn AS c ON b.tabel_id = c.id

Hvordan skal jeg så gøre?

CREATE TABLE `billeder` (
  `id` int(11) NOT NULL auto_increment,
  `billede` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
);

CREATE TABLE `farver` (
  `id` int(11) NOT NULL auto_increment,
  `farve` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
);

CREATE TABLE `leverandører` (
  `id` int(11) NOT NULL auto_increment,
  `leverandør` varchar(255) NOT NULL,
  `adresse_1` varchar(255) default NULL,
  `adresse_2` varchar(255) default NULL,
  `postnummer` varchar(255) default NULL,
  `by` varchar(255) default NULL,
  `land` varchar(255) default NULL,
  `telefon` varchar(255) default NULL,
  `fax` varchar(255) default NULL,
  `hjemmeside` varchar(255) default NULL,
  `email` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
);

CREATE TABLE `priser` (
  `id` int(11) NOT NULL auto_increment,
  `pris` decimal(10,2) NOT NULL,
  PRIMARY KEY  (`id`)
);

CREATE TABLE `produkt_grupper` (
  `id` int(11) NOT NULL auto_increment,
  `produkt_gruppe` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
);

CREATE TABLE `produkter` (
  `id` int(11) NOT NULL auto_increment,
  `produkt` varchar(255) NOT NULL,
  `beskrivelse` text NOT NULL,
  PRIMARY KEY  (`id`)
);

CREATE TABLE `størrelser` (
  `id` int(11) NOT NULL auto_increment,
  `størrelse` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
);
Avatar billede erikjacobsen Ekspert
01. april 2007 - 08:02 #1
Det kommer an på hvordan din verden ser ud

1) Har et produkt 0, 1 eller flere priser
2) Har et produkt 0, 1 eller flere størrelser
2a) Har et produkt 0, 1 eller flere farver
3) Afhænger pris af størrelse og/eller farve
4) Skal der være en sammenhæng mellem produkter og leverandører
5) Har et produkt 0, 1 eller flere billeder
Avatar billede henninghabor Nybegynder
01. april 2007 - 10:03 #2
Hej Erik,

1, 2, 2a og 5: Her er et ukendt antal relationer. Der kan f. eks. være 1 pris, 2 størrelser, 3 farver og 1 billede.

3: Ja, da der ved nogle produkter kan være 1, 2, 4, 8, 16 eller flere stk.

4: Ja.
Avatar billede henninghabor Nybegynder
01. april 2007 - 10:04 #3
Til min seneste kommentar:

Selvom der er flere størrelser, kan der godt kun være 1 pris.
Avatar billede erikjacobsen Ekspert
01. april 2007 - 17:30 #4
Det lyder som en smule kompliceret :)  Så du skal nok være meget præcis i din formulering af problemområdet. Og meget gerne komme med eksempler, der uddyber det.
Generelt, ja, så kan du måske komme noget af vejen med fremmednøgler i de andre tabeller, der peger tilbage på produktet. Men der skal nok mere til hvis f.x produktets pris er afhængig af størrelse og farve. Og billeder kan være afhængig af det samme.

Det er ikke for ingenting at der holdes kurser i sådan noget ;)
Avatar billede henninghabor Nybegynder
01. april 2007 - 22:05 #5
Hej Erik,

Jeg har sq ikke lige pengene til et kursus, så jeg må tage til takke med den dygtige hjælp jeg kan finde på eksperten. :)

Jeg må tænke lidt mere over strukturen og vende tilbage, når jeg er kommet på en anden løsning.
Avatar billede henninghabor Nybegynder
17. juni 2007 - 23:10 #6
Hej erikjacobsen,

Vil du ha' points?
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 09:35 #7
Nej tak
Avatar billede henninghabor Nybegynder
03. juli 2007 - 20:28 #8
Så ta'r jeg dem selv. Tak for hjælpen. :)
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