Gå til innhold

Spørsmål til løsing av sql-oppgave


Anbefalte innlegg

Jeg er uenig med løsningsforslaget til et eksamenssett her, og lurer på om dere kan hjelpe meg.

Nedenfor har jeg lagt til oppgaven og løsningsforslaget. Oppgaven forutsetter at alle felter er fylt.

 

Spørring 1) Hvorfor knytter de spill til sjanger her? Er det ikke nok å bare skrive FROM spill WHERE sjangerid=1? (siden det står i matrisen at rollespill har id=1)

 

Spørring 2) I et annet løsningsforslag til samme oppgaven, har de ikke opprettet relasjonen mellom id i plattform og spillplattform. Men er ikke det nødvendig?

 

Jeg blir altså veldig forvirret av løsningene, kan dere hjelpe meg?

post-153007-1228436003_thumb.jpg

Lenke til kommentar
Videoannonse
Annonse

1) Jo, du har helt rett. Hvis en tenker på et GUI der en velger en sjanger fra en liste, så ville en vanligvist brukt id til valgt sjanger videre i spørringer, ikke navn. Hvis din besvarelse kun involverer spill tabellen med where på sjangerid så vil jeg si det er mer riktig enn løsningsforslaget. Ikke minst fordi din spørring er mindre ressurskrevende.

 

2) Du trenger ikke å opprette relasjoner (foreign keys). Spørringene vil fungere uten. Grunnen til at en oppretter foreign keys er dataintegritet. I tillegg kan query optimizer i enkelte tilfeller dra nytte av å vite at det er definert en foreign key.

 

 

Det som derimot SJOKKERER meg er at opplæringsinstitusjoner fortsatt lærer bort den gammeldagse spørresyntaxen for å koble sammen tabeller der en ikke bruker JOIN syntaxen, men i stedet lister opp tabellene og kobler dem sammen i WHERE statementet.

Lenke til kommentar

Til spørring 1 så spør de ikke om å få en liste over alle spillene i sjanger 1, men alle som har en sjangernavn som heter "rollespill". Det kan være flere enn det som ligger inne i eksempelet, og så lenge du ikke har programmert en liste over spill, men jobber rett i SQL, så blir det riktigere å søke etter alle i sjangernavn. Er sånnsett uenig med kaffenils om at det blir riktigere med å bruke kun ID-feltet; det kommer helt ann på hvilken oppgave du ønsker å løse.

Lenke til kommentar

Poenget er at oppgaveteksten ikke eksplisitt sier at en skal spørre på alle spill med sjanger hvor navn='rollespill'. Hvis det er det som menes så synes jeg oppgaveteksten er veldig vag. Derfor er det like riktig å spørre kun mot spill hvor sjangerid=1. Selv om sjanger-tabellen ikke definerer at navn er unik, så virker det ulogisk at en skal kunne ha flere rader med samme navn, og dermed synes jeg det er like riktig å skrive spørringen slik trådstarter sier.

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