Gå til innhold

Anbefalte innlegg

Hallo,

jeg er relativ ny til MySQL men driver med et lite hobby prosjekt nå.

Det er en ting jeg sliter litt med, som jeg ikke har forstått helt av å lese, og det er det med one to many og many to many relasjoner. Hva er vanlig praksis å gjøre her? Many to many relasjoner vil jeg anta at man må opprette en ny tabell med 1 id fra hver tabell (skal disse være foreign keys?). Holder det med å bare ha 1 foreign key i den ene tabellen i one to many relasjon? Hvordan syntaks bruker man for å opprette en foreign key og hvordan vet man hvilken tabell denne tilhører? Hvordan legger man inn ting der man skal bruke en foreign key? Hvordan henter man ut ting? Hvordan bruker man join (inner/outer osv)?

 

Mye spørsmål her, men håper noen kan gi en kort forklaring/link til en god forklarende side/tutorial (vært på mysql sine sider, men fikk ikke altfor mye ut av det).

 

Takker for eventuelle svar.

Lenke til kommentar
Videoannonse
Annonse

en-til-mange: PK i "en" tabellen opprettes som FK i many tabellen.

mange-til-mange: Oppretter en koblingstabell med PK kolonner fra de to andre tabellene som til sammen utgjør PK i koblingstabell. Opprett to FK fra koblingstabell til de to tabellene.

Opprette FK: Enten i CREATE TABLE ..., CONSTRAINT fk_etellerannetnavn FOREIGN KEY(kolonne,..) REFERENCES <fk_tabellnavn>(kolonne,..)

eller i ALTER TABLE <tabell> ADD CONSTRAINT fk_etellerannetnavn FOREIGN KEY(kolonne,..) REFERENCES <fk_tabellnavn>(kolonne,..)

Man bruker standard INSERT, UPDATE, DELETE,SELECT for å lese og manipulere data i tabeller, uavhengig om det er definert foreign key i dem eller ikke.

Join: Les f.eks. her http://en.wikipedia.org/wiki/Join_(SQL)

Lenke til kommentar

En ting jeg har gått meg bort i noen ganger er relasjoner, helt til jeg skjønte at i begynnelsen må ikke nødvendigvis alle tabeller ha en relasjon. Nå. tidlig i min dba-karriere :) oppretter jeg kun relasjon når det er slik at poster i dattertabellen må slettes før poster i hovedtabellen slettes for å unngå foreldreløse poster.

 

Min inngang til join var når jeg måtte koble sammen to databaser på samme server. Det har mange bruksområder, men jeg bruker det når jeg skal matche to tabeller. Man begynner jo med

WHERE tabell1.feltID = tabell2.feltID

Min inngang var en CASE-setning. Om noen av postene i tabell1 fantes i tabell2, så skulle jeg ha en 'Yes', om ikke skulle jeg vise 'No'. Om jeg skulle brukt tabell2 direkte i en WHERE, så ville ikke resultatet vise de postene i tabell1 som ikke fantes i tabell2. Når man derimot bruker

WHERE

bla bla bla

RIGHT OUTER JOIN tabell2 ON tabell1.feltID = tabell2.feltID

så vil man få alle postene i tabell1, selv om de ikke finnes i tabell2, og man kan sette disse til 'No', Men oss nybegynnere imellom, det er ikke lett å forstå.

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...