Gå til innhold

Relasjoner og type MySQL tabeller


Anbefalte innlegg

Har skjønt at man skal bruke INNODB-tabeller i MySQL hvis man skal ha relasjoner mellom de forskjellige tabellene da dette er noe som ikke blir tatt hensyn til i default MYISAM (??) tabeller. Men hvor nødvendig er det å bruke "foreign keys" i en MYSQL database? Vil det være enklere/mer hensiktsmessig å lage default tabeller og heller skrive spørringer i php som kobler tabellene sammen? Eller bør jeg bruke INNODB? Hva er vanligst i relasjonsdatabase?

 

Har mange tabeller og alle er igrunnen koblet sammen med hverandre med forskjellige typer relasjon (en-en, en-mange, mange-mange)

Lenke til kommentar
Videoannonse
Annonse
Har skjønt at man skal bruke INNODB-tabeller i MySQL hvis man skal ha relasjoner mellom de forskjellige tabellene da dette er noe som ikke blir tatt hensyn til i default MYISAM (??) tabeller. Men hvor nødvendig er det å bruke "foreign keys" i en MYSQL database? Vil det være enklere/mer hensiktsmessig å lage default tabeller og heller skrive spørringer i php som kobler tabellene sammen? Eller bør jeg bruke INNODB? Hva er vanligst i relasjonsdatabase?

 

Har mange tabeller og alle er igrunnen koblet sammen med hverandre med forskjellige typer relasjon (en-en, en-mange, mange-mange)

Å definere relasjoner er kritisk for å ivareta dataintegritet. At spørringene mot databasen joiner sammen tabellene har ingenting med dataintegriteten å gjøre.

 

Hva mener du forresten med default tabeller?

Lenke til kommentar

default tabeller... når man bruker kommando "create table....." blir tabellene vel laget som MYISAM-tabeller hvis man ikke definerer dem som noe annet. Disse tabellene støtter ikke "foreign keys", så hvis man skal lage tabeller med fremmednøkkel må man definere at tabellene skal være INNODB. Så hvis man skal ha tabeller med relasjon til hverandre, må vel alle tabellene bli laget som INNOBD? Har jeg misforstått? Hva pleier dere andre å gjøre?

Lenke til kommentar

Har aldri hatt bruk for relasjoner i mySQL før, kun i Access på skolen, men skulle tro du kan bruke noe á la INNER JOIN for å lage relasjoner... Mener å ha sett at det er LEFT og RIGHT JOIN i mySQL, uten at jeg vet noe mer... Men dette er vel egentlig mest i spørringene, og ikke i selve oppsettet av databasen, noe som jo er to forskjellige ting...

 

Søkte litt i dokumentasjonen til mySQL: Foreign keys JOIN

Endret av Jibril2k
Lenke til kommentar

Ok, takk for svar!

Sitat fra den ene linken du hadde: "Note that foreign keys in SQL are used to check and enforce referential integrity, not to join tables." Så da virker det som om man ikke nødvendigvis trenger å bruke fremmednøkkel (og derfor ikke INNOBD tabeller) for å knytte flere tabeller sammen, men at relasjoner blir skapt ved hjelp av JOIN.

 

Men da over til et annet problem. Hvis jeg har to tabeller: brukere og innlegg. Innlegg har brukerid som fremmednøkkel og refererer til tabellen brukere. Vil alle innlegg av en bruker bli slettet hvis denne brukeren blir slettet?

 

Men hvis innlegg IKKE refererer til bruker (brukerid) på noe som helst måte, vil innleggene kunne bli bevart hvis brukeren blir slettet?

Lenke til kommentar

når du bruker fremmednøkler og relasjoner i sql blir tabellene knyttet sammen. når du bruker join i ei spørring henter du bare ut info fra flere tabeller samtidig, og tabellene er kun "knyttet sammen" når spørringen utføres. Det betyr i ditt tilfelle at ingen poster vil slettes hvis en bruker slettes, siden innlegg-tabellen ikke vet hvilken bruker som har skrevet innleggene, det er jo bare et tall i et felt. hvis du har knyttet de med relasjon så kan du bestemme selv hva som skal skje når en bruker slettes. enten så kan alle postene slettes, alle postene kan få null-verdi der det skal stå hvem som skrev de eller du kan nekte å slette en bruker som har skrevet poster. og akkurat det siste er vel veldig viktig. på den måten hindrer du at du mister info om brukere som har skrevet poster ved at de slettes.

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...