Just nu i M3-nätverket
Jump to content

Logiskt/strukturellt problem


.sun

Recommended Posts

Hej!

 

Jag har ett logiskt/strukturellt problem som jag inte lyckats finna lösningen på i någon bok eller på nätet.

 

Säg att jag vill göra en produktdatabas. Då har jag givetvis en tabell PRODUKTER med info som namn, beskrivning, art nr osv. Självklart har jag en primärnyckel - vi kallar den PROD_ID.

 

Varje produkt tillhör också ett segment, och vilka segment som finns att tillgå bestäms i tabellen SEGMENT, där varje segment är unikt och särskiljs med SEG_ID. Detta SEG_ID återfinns även i PRODUKTER för att man lätt ska se vilken produkt som tillhör vilket segment. Självklarheter så långt tycker jag.

 

Att lägga till en produkt är busenkelt - den får nästa lediga PROD_ID och man sätter rätt värde för SEG_ID för produkten och fyller i övrig info. Exempelvis produkten "bananer" får PROD_ID 5 (eftersom det finns fyra produkter sen tidigare) och SEG_ID 2 (som motsvaras av segmentet "Frukt").

 

Men... hur gör jag med en produkt som ska tillhöra två eller fler segment? Det går ju inte att sätta SEG_ID = 4 och SEG_ID = 6.

 

Finns det en smart lösning på detta som jag missat, eller måste man hitta på en massa specialkod (tänker mig t ex att SEGMENTs primärnyckel inte ökar med 1 för varje nytt segment, utan binärt, dvs värdena blir 1, 2, 4, 8, 16 osv).

 

Hjälp!!!

Link to comment
Share on other sites

Magnus Ahlkvist

Du tar bort seg_id from produkter-tabellen och skapar en tabell som heter något i stil med Connect_Produkter_Segment och som innehållar två fält - Seg_id och prod_id. Sätt en foreign-key-constraint på båda fälten så att de "pekar på" seg_id i segment-tabellen respektive prod_id i produkt-tabellen.

 

Link to comment
Share on other sites

  • 7 months later...

Och sen? Om jag gör ett SQL-anrop med "SELECT * FROM PRODUKTER WHERE PROD_ID = 5" för att hämta info om min banan, hur ser jag vilket segment det tillhör?

 

Behöver jag ingen koppling från tabellen PRODUKTER till Connect_Produkter_Segment?

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...