TMB Skrevet 12. november 2012 Del Skrevet 12. november 2012 Hei. Dersom jeg for eksempel vil lage en oversikt over hvilke farger som passer sammen, hvordan kan jeg linke dette til hverandre i en database? Hvis jeg for eksempel har lagt inn alle fargene i en tabell, så vil jeg f. eks. oppgi at gul passer bra sammen med rød og grønn (rød og grønn er en egen linje i tabellen) Går dette an? Bruker PHP og phpMyAdmin Håper noen skjønte hva jeg mente Lenke til kommentar
Djn Skrevet 12. november 2012 Del Skrevet 12. november 2012 Du kan lage en tabell med farger, og en annen for koblinger. Koblinger har to foreign keys som peker til IDer i farge-tabellen, og kanskje et ekstra felt for typen kobling ("Komplementær" eller hva du nå har basert det på). Mao: Farger har ID og navn : [1:"Rød" , 2:"Grønn", 3:"Blå", 4:"Rosa" ] Koblinger har fargeID1, fargeID2 og type : [ 1:2:"Komplementær", 1:4:"Fargetone"] Lenke til kommentar
TMB Skrevet 17. januar 2013 Forfatter Del Skrevet 17. januar 2013 Bumper denne. Er det mulig å få det forklart litt mer med teskje? Skjønte ikke hva du mente med tabellen for koblinger. Foreign keys? Komplementær? Lenke til kommentar
TMB Skrevet 17. januar 2013 Forfatter Del Skrevet 17. januar 2013 (endret) Si at jeg har en tabell med to rader; ID og farge 1 | Rød 2 | Grønn 3 | Gul 4 | Blå Så vil jeg (på en nettside) kunne velge en av fargene, og så få opp alle fargene som passer med denne fargen. Som jeg selv har forhåndsdefinert. Spørsmålet er hvordan jeg får definert dette, og hvordan jeg henter det frem hvis noen velger f. eks. rød på nettsiden? Da må det jo være en spørring som spør etter alle fargene som jeg har koblet til rød. Si at f. eks. gul og grønn skal kobles til fargen rød. Har ikke laget noe som helst enda, ellers hadde jeg posta HTML- og PHP-koden. Endret 17. januar 2013 av TMB Lenke til kommentar
quantum Skrevet 18. januar 2013 Del Skrevet 18. januar 2013 (endret) Det med komplementærfarger har med fargelære å gjøre, sier noe om forholdet mellom to farger. Komplementærfarger. Rød - Grønn, Gul - blå er komplementærfarger. Bruk google hvis du har behov for å vite. Fremmednøkler er felt i en tabell som refererer til en primærnøkkel i en annen tabell. Dette har du behov for å vite, så det må du google. I forhold til det du skriver over så mangler du altså en tabell hvor du sier hvilke farger som passer sammen, akkurat sånn som Djn forklarte. Si at fargetabellen din heter farge og koblingstabellen heter kobling, fargenavn-feltet heter fargenavn, farge-id-feltet heter id, og feltene i koblingstabellen heter id1 og id2. select distinct f2.fargenavn from farge f inner join kobling k where k.id1 = f.id inner join farge f2 on f2.id = k.id2 where f.fargenavn = 'Grønn' Dette bør gi deg navnet på de fargene som passer sammen med grønn. I teorien ihvertfall, ikke testet :o) CREATE TABLE Farge ( id INTEGER NOT NULL, farge VARCHAR NOT NULL, CONSTRAINT Farge_pk PRIMARY KEY (id) ); CREATE TABLE Fargekombinasjon ( fargeid1 INTEGER NOT NULL, fargeid2 INTEGER NOT NULL, CONSTRAINT Fargekombinasjon_pk PRIMARY KEY (fargeid1, fargeid2) ); ALTER TABLE Fargekombinasjon ADD CONSTRAINT Farge_Fargekombinasjon_fk FOREIGN KEY (fargeid1) REFERENCES Farge (id) ON DELETE NO ACTION ON UPDATE NO ACTION NOT DEFERRABLE; ALTER TABLE Fargekombinasjon ADD CONSTRAINT Farge_Fargekombinasjon_fk1 FOREIGN KEY (fargeid2) REFERENCES Farge (id) ON DELETE NO ACTION ON UPDATE NO ACTION NOT DEFERRABLE; Endret 18. januar 2013 av quantum Lenke til kommentar
koosepus Skrevet 18. januar 2013 Del Skrevet 18. januar 2013 (endret) - Endret 18. januar 2013 av koosepus Lenke til kommentar
TMB Skrevet 6. februar 2013 Forfatter Del Skrevet 6. februar 2013 -snip- Kan vi ta det steg for steg med de navnene jeg har satt på ting? Så jeg ikke blir enda mer forvirret her. Jeg prøvde å kjøre koden din men fikk error på linje 3, så jeg starta fra scratch og har nå laget følgende: En tabell med navn farger En tabell med navn kobling Farger har følgende to kolonner: id farge id har jeg satt til Primary og Auto Increment. Kobling har følgende to kolonner: fargeid1 fargeid2 Jeg har lagt til fire farger: 1 - blå 2 - rød 3 - grønn 4 - gul Og det er det jeg har gjort så langt. Hva blir neste? Inbiller meg at jeg må ha en tredje kolonne i tabellen kobling, som skal peke til den fargen (ID-en) som fargeid1 og fargeid2 passer sammen med. Korrekt? Og jeg bryr meg ikke om fargenyanser i denne omgang, det eneste jeg vil er å fastslå selv er: Gul passer med grønn Grønn passer med gul og rød Rød passer med blå og rød Blå passer med grønn og rød Lenke til kommentar
quantum Skrevet 6. februar 2013 Del Skrevet 6. februar 2013 (endret) Og det er det jeg har gjort så langt. Hva blir neste? Inbiller meg at jeg må ha en tredje kolonne i tabellen kobling, som skal peke til den fargen (ID-en) som fargeid1 og fargeid2 passer sammen med. Korrekt? Jeg skjønner ikke helt nøyaktig hva du vil, og tja, du skal muligens bare ha to kolonner i koblingstabellen, slik som du har gjort. Det kommer an på. Eksempelet ditt sier at Blå passer med Grønn, men Grønn passer ikke med Blå? Og passer Blå sammen med Grønn bare hvis det er Rød også? Gult passer med Grønt alene, men passer Gult med Grønt og en annen farge også? Og vil det være behov for å ha fler enn to farger på høyresiden a'la Blå passer med Grønn, Rød, Gul, Fiolett og Brun? Altså, skal du lagre informasjon om at en farge passer sammen med en kombinasjon av en eller to andre farger (eller fler), uten at en dermed kan slutte at en eller begge de andre fargene passer sammen med den første? Og - igjen - går grensen ved to på "høyresiden", eller kan det være flere? Gitt de fargene/id'ene du har lagt inn i fargetabellen så blir "Blå passer med Grønn og Rød" til to rader i koblingstabellen: fargeId1 | fargeId2 ----------------------- 1 | 2 1 | 3 ----------------------- Som du sikkert skjønner kan du lese dette som to regler også Blå passer med Rød Blå passer med Grønn Er det meningen? Og hvis vi innfører farge nr 5 - Brun fargeId1 | fargeId2 ----------------------- 1 | 2 1 | 3 1 | 5 ----------------------- Hva skal det bety? Blå passer med Rød og Grønn? Blå passer med Brun? Blå passer med Grønn og Brun? Blå passer med Grønn, Rød og Brun? Og igjen - Passer Brun med Blå, dersom Blå passer med Brun? Dersom Blå passer med Rød og Grønn, betyr det også at Rød Passer med Grønn, eller med Grønn og Blå? Endret 6. februar 2013 av quantum Lenke til kommentar
TMB Skrevet 7. februar 2013 Forfatter Del Skrevet 7. februar 2013 (endret) Beklager, skal selvfølgelig være slik: Gul passer med grønn og rød Grønn passer med blå, gul og rød Rød passer med grønn, blå og gul Blå passer med grønn og rød Da blir det vel riktig Og ja, det kan gjerne være fler enn to som passer. Endret 7. februar 2013 av TMB Lenke til kommentar
quantum Skrevet 7. februar 2013 Del Skrevet 7. februar 2013 (endret) Inbiller meg at jeg må ha en tredje kolonne i tabellen kobling, som skal peke til den fargen (ID-en) som fargeid1 og fargeid2 passer sammen med. Korrekt? Og ja, det kan gjerne være fler enn to som passer. Her har du vel egentlig besvart ditt eget spørsmål siden det er fler enn to som skal kunne passe med den ene på en gang. Generelt: Det er ikke noen god løsning å lage en koblingstabell med 1 + N kolonner hvis du vil lagre informasjon om at en farge passer sammen med opptil N andre. Akkurat hvaslags tabellstruktur som passer for deg kan jeg ikke vite, kanskje den du har fått alt vil funke, kanskje ikke, det kommer an på kravene dine, som du ikke sier så mye om. Endret 7. februar 2013 av quantum Lenke til kommentar
TMB Skrevet 7. februar 2013 Forfatter Del Skrevet 7. februar 2013 Jeg har ikke så mange krav bortsett fra at det skal funke som det der. Nå et spørsmålet hvordan jeg kobler tabellene sammen? Lenke til kommentar
quantum Skrevet 7. februar 2013 Del Skrevet 7. februar 2013 (endret) Fint, da er du jo i mål. Du kobler dem sammen med fremmednøkler som vist i eksempelet. Edit: "Koblingen" sikrer referanseintegritet, dvs. dersom en farge er brukt i en kobling, vil du ikke få lov til å slette den fra fargetabellen. Å hente ut "sammenkoblingene" fra tabellene gjør du med en join-spørring, som forsåvidt ikke er avhengig av fremmednøklene. Endret 7. februar 2013 av quantum Lenke til kommentar
Gjest Skrevet 7. februar 2013 Del Skrevet 7. februar 2013 Litt sånn halveis off-topic: Jeg tror ikke det å sette relasjoner til hvilke farger som passer sammen er riktig å lagre i databasen, det korrekte er vel å lagre dette i applikasjonen du lager i PHP. Lenke til kommentar
quantum Skrevet 7. februar 2013 Del Skrevet 7. februar 2013 (endret) Siden det ikke er så mange krav inne i bildet er selvfølgelig det også riktig :o) Hvis det er statisk informasjon, og det ikke er snakk om så mange kombinasjoner, behøves ingen database. Det kunne til og med lagres som strenger i en liste eller et array; "Rød passer sammen med Gul og Grønn" osv. Men vi er nå engang i databasegruppa ... Endret 7. februar 2013 av quantum Lenke til kommentar
TMB Skrevet 7. februar 2013 Forfatter Del Skrevet 7. februar 2013 Jeg fulgte denne guiden: http://www.sitepoint.com/mysql-foreign-keys-quicker-database-development/ Og nå har jeg skjønt det og nå funker det som jeg ville ha det Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå