TAG | databaser
13
Interessert i programmering/web/prosjektarbeid – hvilke fag skal du velge?
Innspill: 2 kommentarer · Kategori: Studier · Tagger: databaser, fag, programmering, prosjekt, samhandling, studieleder

Av: Svend Andreas Horgen, studieprogramleder nettbaserte fag, NTNU
Dette blogginnlegget er langt, men trolig oppklarende. Det er myntet på alle som har interesse for et eller flere av temaene programvareutvikling, webutvikling, programmering, informasjonsbehandling og prosjektarbeid. Mange kommer nemlig borti ulike former for utviklingsarbeid i jobbsammenheng, og lurer på hvilke fag de bør ta for å styrke sin kompetanse og evne til å bidra i slikt arbeid. Ved å lese dette blogginnlegget får du en gjennomgang av hva vi tilbyr og hvilke fag som hører godt sammen. Du vil kanskje få noen aha-opplevelser av å lese innlegget. Det er langt, men det er fordi vi har prøvd å tenke helhetlig. Så selv om du kanskje har programmering eller webutvikling som primærinteresse, bør du også lese de andre avsnittene for å sette alt inn i en helhetlig sammenheng. Du som ender opp med å ta bare ett eller noen få fag, kan uansett ha nytte av å kjenne til relaterte områder.
Innhold i dette innlegget
- Programmeringsfag
- Webutviklingsfag
- Databaser og databehandling
- Prosjektarbeid, administrasjon, ledelse og økonomiforståelse
- Andre støttefag
1: Programmeringsfag
Mange som jobber i arbeidslivet med utviklingsprosjekter kan ha nytte av å få en viss forståelse for programmering for å kunne bidra mer konstruktivt i slikt arbeid. Andre ønsker å spisse kompetanse innenfor programmering og jobbe mer eller mindre direkte med programmering. Atter andre igjen ser på programmering som en viktig del av sin faglige portefølje eller ønsker å øke kompetansen for å bedre forstå andre aspekter av IKT.
Vi har mange programmeringsrelaterte fag som tilbys etter- og videreutdanningsmarkedet via http://itfag.no. Her er noen generelle betraktninger om hva du kan velge og litt om sammenhengen mellom ulike fag. Du må nesten tolke dette i lys av dine mål og ønsker. Har du spørsmål utover teksten, så ta kontakt med studieprogramleder Svend Andreas Horgen ved NTNU.
- Grunnleggende programmeringsfag: Hensikten er å introdusere grunnleggende programmeringsteknikker og gi forståelse for hva programmering er. Du lærer konkrete ferdigheter innenfor det aktuelle språket som lar deg skrive egne programmer av en viss kompleksitet. Mange lar det være med det grunnleggende kurset, enten fordi de ikke ønsker mer innsikt i programmering utover grunnleggende nivå, eller fordi det oppleves som faglig tungt. Andre velger å fordype seg i videregående programmering. Vår klare anbefaling er at alle som skal jobbe med IKT har et grunnleggende programmeringsfag i sin portefølje. Det er nyttig i mange sammenhenger.Vi tilbyr følgende grunnleggende programmeringsfag:
- Programmering i Java: Du lærer grunnleggende objektorientert programmering. Du lærer om klasser og objekter i tillegg til løkker, if-setninger, funksjoner og liknende.
- Programmering i Visual Basic: Bruker Visual Studio .NET som utviklingsmiljø, noe som gjør det veldig lett å komme i gang med å lage små programmer. Merk at faget ikke tar opp objektorientering, fordi det kommer først i det videregående faget (Objektorientert programmering med systemarbeid).
- Programmering i C++: Dette er nok det vanskeligste av de tre språkene, men C++ er mye brukt i arbeidslivet. Ved å lære det vanskeligste først som sist, blir mer avanserte språk lettere.
- Videregående programmeringsfag: Du er (som nevnt ovenfor) ikke bundet av å fortsette med det språket du har som grunnleggende språk. Uansett hva du kan fra før kan du relativt «lett» lære et nytt språk. Syntaksen og noe av det nye språkets struktur er riktignok ulikt fra det du kan fra før av, men dette kan du lett lære deg ved å bruke litt tid i starten på YouTube-videoer e.l. Ofte har faglærer lagt opp til en kort repetisjon av språkets syntaks og særegenheter myntet for de som kommer fra andre språk, eller de som trenger en repetisjon. Det viktige er altså å ha forståelse for programmering på riktig nivå som forkunnskap før du starter med et videregående fag.Vi tilbyr følgende videregående programmeringsfag:
- Objektorientert programmering med systemarbeid: Bygger på Programmering i Visual Basic og starter med å ta opp objektorientering, kobling mot databaser og flere avanserte teknikker. Er det eneste faget som ikke er på 5 studiepoeng (det er på 10). Det skal gjøres et større utviklingsarbeid underveis som skal dokumenteres, og dette skjer gruppevis.
- Videregående programmering i Java: Bygger på Programmering i Java. Går i dybden på avanserte objektorienterte teknikker som arv, polymorfi, samarbeid og liknende.
- Applikasjonsutvikling for Android: Dette er et veldig populært fag hvor du lærer å lage apper til Android (mobil/nettbrett). Faget bygger på Videregående programmering i Java og krever i så måte gode forkunnskaper innen Java, så du må ikke melde deg på om du bare har fullført grunnleggende programmering. Du lærer også litt om MVC i dette faget.
- C++ for programmerere: Bygger på forståelse tilsvarende grunnleggende programmeringsfag og at en behersker objektorientering. Både de som har tatt Programmering i C++ og Java kan ta dette. De som har tatt Programmering i Visual Basic + kan grunnleggende objektorientert programmering (for eksempel gjennom Objektorientert programmering med systemarbeid) kan ta dette.
- C#.NET: Gir innføring i C#.NET-utvikling. Forutsetter grunnleggende objektorientert programmering. Altså samme krav som for C++ for programmerere nevnt i punktet over.
- Python for programmers: Faget er på engelsk og krever bare grunnleggende programmeringsforståelse (ikke krav om OOP i forkant, men en lærer det underveis).

Figuren viser at med Java og C++ kan du ta hvilket som helst av de videregående fagene. Visual Basic krever at du først lærer om objektorientering (OOP), typisk ved å ta Objektorientert programmering med systemarbeid, før du kan ta C++ og C#. Python kan tas uten å kjenne til OOP. Android krever at du har kunnskaper tilsvarende Videregående Java.
2: Webutviklingsfag
Ulike former for webutvikling har blitt mer og mer vanlig, og det å beherske webutvikling er et fortrinn. De som vil dypdykke i webutvikling, bør selvsagt strebe etter mest mulig, men også de som jobber med konvensjonell programmering, og de som ikke nødvendigvis skal programmere webløsninger selv, kan ha nytte av å få innsikt i hvilke teknologier som fins og litt om hvordan de virker.
Basisfaget hos oss er Webutvikling 1, som er helt grunnleggende. Webutvikling 2 bygger på Webutvikling 1. Webutvikling 2 går i bredden på mange teknologier, men rekker ikke å gå i dybden på alle. Det er absolutt nyttig, men om du vet at du for eksempel skal dypdykke i PHP eller ASP.NET eller Python eller HTML5, så kan du gå rett til Webprogrammering i PHP eller Webprogrammering i ASP.net eller Webprogrammering med Python eller HTML5 direkte. Du kan selvsagt også ta Webutvikling 2 uansett, men vær da forberedt på noe overlapp med dybde-fagene.
Et annet aspekt av webutvikling er «design». Webdesign kan være mer aktuelt enn en kanskje først skulle tro. Selv om du ikke vil bli hard-core designer selv, kan forståelse for design komme godt med i mange utviklingsprosjekter du deltar i.
Her er en liste av alle webutviklingsfag som vi tilbyr:
- Webutvikling 1: grunnleggende HTML, CSS og liknende. Fokuset er på å lære å lage en statisk webside.
- Webutvikling 2: mer i dybden på hvordan en kan lage et dynamisk nettsted. Fokus er på å kunne forstå ulike teknologier og klare å benytte seg av ferdige løsninger som tilpasses. Slik kan du utvikle større nettløsninger raskt og effektivt og forstå (i bredden, ikke dybden) hvilke dynamiske komponenter som kan inngå i et større nettsted.
- Webdesign: Du lærer teori om utforming av gode webgrensesnitt og websider, du får praktisk trening i CSS og det settes også fokus på universell utforming.
- HTML5: Mange muligheter med dette nye markeringsspråket og en rekke API-er som følger med HTML5
- Webprogrammering i PHP: Serversideprogrammering, lær å lage dynamiske løsninger opp mot en database
- Webprogrammering i ASP.NET: Serversideprogrammering, søsterfag med PHP men rettet mot Microsoft-teknologien .NET
- Webprogrammering med Python: Introduksjon til Python med fokus på webutvikling
3: Databaser og databehandling
De som er interessert i programmering og webutvikling, bør også lære seg noe om databaseteori og systemutvikling. Typisk:
- Databaser: Fordi de aller fleste programsystemer lagrer informasjon i en database.
- Databaser 2: Fordi jo mer databaseteori du kan, jo smartere kode vil du utvikle (siden du gjør mer avanserte operasjoner på databasenivå).
- XML-teknologi: Nyttig å kjenne til fordi det brukes som datautvekslingsformat mellom ulike applikasjoner, til eksport av data og for å representere data generelt sett. Dette gir også økt forståelse for metadata og databehandling generelt sett.
- Big data: Bearbeiding av store datamengder blir stadig mer relevant. Du lærer å forstå forretningsverdien av «big data», og noen konkrete teknikker for å behandle slike.
La oss dvele litt mer med hvorfor databaseteori er relevant i forbindelse med programmering. Informasjon som mates inn i et programsystem må lagres et sted. Dette gjelder uavhengig av om en programmerer for web eller et lager et frittstående program (PC/Mac/Linux) eller en app (mobile enheter). Informasjonen kan lagres i en filstruktur, eller i en database. Databaser er veldig utbredt, særlig i større systemer. Ved å forstå teori tilsvarende faget Databaser (og gjerne også Databaser 2) vil du få et helt annet syn på programmering og databehandling, og kan utvide programmeringsferdighetene dine til å nå et helt annet nivå. Derfor er det lurt å ta Databaser i parallell med programmering, eller å ta programmering først og så lære om databaser etterpå. Lærer du databaseteori først uten å kjenne til programmering eller databehandling, så kan lærestoffet virke noe teoretisk og kryptisk. Du får best utbytte om du kan lese databaseteori i lys av din forståelse for programmering/webutvikling.
4: Prosjektarbeid, administrasjon, ledelse og økonomiforståelse
Du deltar trolig i mange prosjekter gjennom din yrkeskarriere. Noen som prosjektdeltaker, andre som prosjektleder. Hvordan jobbe godt med IKT-prosjekter spesielt og prosjekter generelt (der IKT-støtte kan være en suksessfaktor)? Vi tilbyr noen interessante fag for deg som ser verdien av formalisert kompetanse på dette:
- Teamarbeid: Grunnleggende om å jobbe effektivt og godt sammen i grupper. Nyttig både i fag som krever gruppearbeid og i prosjekter i arbeidslivet. Dette faget legger opp til nettbasert gruppearbeid.
- Datastøttet samhandling: Bli enda bedre til å samhandle, samarbeide effektivt med moderne verktøy og gjennomføre prosjekter. Dette faget legger opp til nettbasert gruppearbeid.
- Samhandlingsplattformer med Sharepoint: Belyser typiske problemstillinger som må håndteres ved tilpasning av samhandlingsplattformer i organisasjoner. Siden Sharepoint er så utbredt, brukes det som case. En del utviklingsprosjekter er relatert til informasjon som allerede eksisterer i Sharepoint, så dette kan være et sentralt fag for mange. I tillegg er fokuset også på generell samhandling.
- Organisasjon og ledelse: Ved å forstå organisasjonsstrukturer, kultur og kommunikasjon i organisasjoner, samt endrings- og ledelsesprinsipper, får du et bedre grunnlag til å jobbe effektivt med andre.
- IT-strategi i organisasjoner: Gir et overordnet blikk som er viktig for å forstå behovet for endring i lys av eksisterende systemer. Setter fokus på IKT sin rolle i forretningsprosesser, ERP-systemer, outsourcing, sammenhenger mellom IT-strategi og forretningsstrategi, overordnede planer for innføring av nye IT-løsninger og liknende. Faget er IKKE bare for de med lederambisjoner!
- Økonomiforståelse: Fag som Økonomisk styring og regnskap og Bedriftsøkonomi kan være nyttig også for personer med utviklerkompetanse. Får du opprykk til en mellomleder eller lederstilling? Det å ha grunnleggende økonomiforståelse er ikke bare gull verdt, men nesten en forutsetning. Skal du noen gang starte egen bedrift? Gull verdt. Også mer spesifikke fag som Markedsorientert produktutvikling og Entreprenørskap kan vurderes.
- Sosiale medier: Dette er et fag som i utgangspunktet gir innsikt i forretningsmessig bruk av sosiale medier. En lærer mye om ulike Web 2.0-tjenester. Men de som kan programmering vil få et nytt perspektiv på sosiale medier i tillegg til det forretningsmessige, som kan berike webprogrammeringskunnskapene. Det å få erfaring med nye tjenester øver nemlig evnen til å tenke nytt om brukergrensesnitt og funksjonalitet på web. Det er lettere å få innsikt i hvordan slike tjenester må være konstruert for å virke rent teknisk, når en blir vant med å prøve dem i praksis.
- Økonomisk analyse med regneark: Dette faget kunne vært listet opp under programmeringsfagene, men siden fokuset er på anvendelse av regneark i en økonomisk sammenheng, nevnes det her i stedet.
5: Andre støttefag
Til slutt er det verdt å nevne noen «mykere» fag som en hard-core programmerer kanskje først tenker på som tørre og kjedelige og teoretiske. Slike kan likevel være nyttige, og de er spesielt nyttige for de som deltar i ulike former for IKT-relatert prosjektarbeid/utviklingsarbeid.
- Informasjonsforvaltning: Hvordan informasjon kan forvaltes i en bedrift.
- ITIL v3: Forstå tjenesteadministrasjon og kontinuerlig tjenesteforbedring med tilhørende prosesser og funksjoner. Før noe skal utvikles, er det greit å sette dette i en sammenheng med eksisterende tjenester.
- Eventuelt et eller flere grunnlagsfag for å forstå datakommunikasjon, operativsystemteori, datasikkerhet og liknende.
- IT, miljø og samfunn: Mange stusser over at jeg tar med dette faget, men ikke kims av et fag som IT, miljø og samfunn! Det er høyst relevant og tar opp temaer som er «tunge» å sette seg inn i på egenhånd, men som kan være veldig kritiske å overse i et utviklingsarbeid. Les følgende utvalgte læringsutbytter fra emnebeskrivelsen, og du ser kanskje hvorfor det er relevant for de som vil øke kompetanse innen utvikling av datasystemer:
- har kjennskap til aktuelle retningslinjer og lovverk knyttet til utvikling, anskaffelse, innføring og bruk av IKT data og datanettverk (for eksempel: personvern, universell utforming, offentlig anskaffelse, sertifisering, arbeidsliv, Copyright & Creative Commons (CC))
- har kunnskap om lover knyttet til bruk av data og datanettverk
Oppsummering
Hensikten med dette innlegget er ikke å selge inn flest mulig fag til de som har lyst til å lære mer om utvikling (programvareutvikling, webutvikling, programmering, informasjonsbehandling og/eller prosjektarbeid). Men faktum er at mange som har slike interesser, med fordel kan vurdere å ta ett eller flere relaterte fag i tillegg til det en først tenkte på. En «utradisjonell» kompetansesammensetning på din CV kan utgjøre den lille forskjellen som gjør at du får jobb, eller som gjør at et prosjekt lykkes. Forståelsen blir bedre jo flere aspekter en ser tilknyttet utviklingsarbeidet. Selv hard-core programmerere kan ha nytte av å kjenne til prinsipper for ledelse, prosjektstyring, økonomi og strategier for databehandling. Vi understreker at ikke alle bør ta alt. Du kan være veldig verdifull om du velger bare litt, eller ønsker å gå i dybden på bare et utvalgt område. Men for de (stadig flere) som ønsker hybridkompetanse, vil gjennomgangen over forhåpentligvis være oppklarende. Hovedrådet blir: Ta det du synes høres mest interessant ut, og som du tror blir nyttig i din nåværende eller evt. kommende jobb.
Ytterligere spørsmål kan rettes til studieprogramleder Svend Andreas Horgen, eller til hver enkelt faglærer som underviser de ovennevnte fagene.
Dette innlegget har 2 kommentarer. Gjerne bidra :-)
25
Foreninger (JOINs) i SQL, del 5
Innspill: 1 kommentar · Kategori: Data og teknologi · Tagger: databaser, join, SQL, studentbidrag
Av: Mikael Brevik, student og veileder i det nye Android-faget
Dette er siste del av bloggserien om JOIN, og vi skal nå se på CROSS JOIN. Del 1 handlet om INNER JOIN og NATURAL JOIN. Del 2 handlet om LEFT OUTER JOIN og del 3 om RIGHT OUTER JOIN. Del 4 handlet om FULL OUTER JOIN.
CROSS JOIN
Denne foreningen er litt anderledes enn de vi har sett på til nå. På norsk kalles dette gjerne kryssprodukt eller kartesisk produkt. Her har vi en forening uten noe nøkkelord, altså uten ordet JOIN i spørringen. Vi bruker rett og slett flere tabeller adskilt av komma etter FROM. Uten noe seleksjon (i praksis WHERE-nøkkelordet) vil dette gi alle mulige kombinasjoner av de to tabellene sammenlagt. Dette er det samme som INNER JOIN (se bloggserien del 1) vil gjøre dersom man ikke har en seleksjon eller seleksjonen alltid resulterer til TRUE.
Eksempel på CROSS JOIN
For å illustrere dette bedre lager jeg to nye tabeller. En av disse tabellene er cross_test_1
som har kun én kolonne/attributt; numb
. Denne tabellen inneholder følgende data: 1, 2, 3. Jeg har også en annen tabell med navn cross_test_2
som inneholder akkurat samme data.
Vi tester det ut:
Vi kan oppnå samme resultat med INNER JOIN (dersom seleksjonen mangler eller alltid resulterer i TRUE):
Noen ord helt til slutt
Da er artikkel-serien om forening i SQL over. Jeg vil takke for følget og håper dere har dratt nytte av disse innleggene. SQL er gøy, eller hva?
Dette innlegget har 1 kommentar. Gjerne bidra :-)
16
Foreninger (JOINs) i SQL, del 4
Innspill: 3 kommentarer · Kategori: Data og teknologi · Tagger: databaser, join, SQL, studentbidrag
Av: Mikael Brevik, student og veileder i det nye Android-faget
Dette er del 4 av bloggserien om JOIN, og vi skal nå se på FULL OUTER JOIN. Del 1 handlet om INNER JOIN og NATURAL JOIN. Del 2 handlet om LEFT OUTER JOIN og del 3 om RIGHT OUTER JOIN. Her er tabellene vi bruker i denne bloggserien:
FULL OUTER JOIN
Siden dette også er en OUTER JOIN kan vi kanskje se for oss hva vi kommer til å få. Dette er en ytterforening som ikke favoriserer noen side. Den kommer til å vise poststeder med og uten personer og personer med og uten poststed
Eksempel på FULL OUTER JOIN
Nå er det slik at hverken JavaDB eller MySQL støtter FULL OUTER JOIN, så jeg vil ikke få vist eksempel på resultat her. Resultatet ville i vårt eksempel være veldig likt RIGHT JOIN (fra del 3) bare med en ekstra tuppel, nemlig den uten registrert postnummer.
I siste del skal vi se på CROSS JOIN. Kom gjerne med tilbakemeldinger i kommentarfeltet.
Dette innlegget har 3 kommentarer. Gjerne bidra :-)
10
Foreninger (JOINs) i SQL, del 3
Innspill: 5 kommentarer · Kategori: Data og teknologi · Tagger: databaser, join, SQL, studentbidrag
Av: Mikael Brevik, student og veileder i det nye Android-faget
Dette er del 3 av bloggserien om JOIN, og vi skal nå se på RIGHT OUTER JOIN. Del 1 handlet om INNER JOIN og NATURAL JOIN. Del 2 handlet om LEFT OUTER JOIN. Før vi går i gang må vi gjenoppfriske tabellene vi bruker i denne bloggserien:
RIGHT [OUTER] JOIN
RIGHT OUTER JOIN er i praksis veldig lik LEFT OUTER JOIN. Eneste forskjellen på disse er hvilken side vi vil favorisere. I en LEFT JOIN er det person
som blir favorisert. Dersom vi derimot bruker RIGHT JOIN, på samme spørring, er det postal-tabellen som blir hovedtabellen.
Resultatet vil være en tabell over alle postkoder og tilhørende personer som er registrert. Siden vi ikke grupperer vil vi få flere resultater av samme postkode, da «tuplene» er av forskjellige kombinasjoner (forskjellige personer til samme postkode).
Eksempel på RIGHT [OUTER] JOIN
Vi vil nå hente ut alle postnummer og personer som er knyttet til disse.
Som vi ser er det mange steder som ikke har noen personer knyttet til seg og verdiene vises med NULL. Som nevnt tidligere vil det komme flere tupler med samme postnummer dersom vi har flere personer knyttet til det samme nummeret. For å illustrere dette legger vil til en person til fra Eide (6490).
Dersom vi kjører forrige spørring igjen vil vi få ut dette:
I del 4 skal vi gå gjennom FULL OUTER JOIN. Kom gjerne med tilbakemeldinger i kommentarfeltet.
Dette innlegget har 5 kommentarer. Gjerne bidra :-)
3
Foreninger (JOINs) i SQL, del 2
Innspill: 5 kommentarer · Kategori: Data og teknologi · Tagger: databaser, join, SQL, studentbidrag
Av: Mikael Brevik, student og veileder i det nye Android-faget
Dette er del 2 av bloggserien om JOIN, og vi skal nå se på LEFT OUTER JOIN. Del 1 handlet om INNER JOIN og NATURAL JOIN, mens RIGHT OUTER JOIN, FULL OUTER JOIN og CROSS JOIN kommer senere.
Du bør lese del 1 om du ikke har gjort det tidligere. Vi gjenoppfrisker kort tabellene som er utgangspunktet vårt i denne bloggserien:
LEFT [OUTER] JOIN
Nå beveger vi oss ut på ytterforening. I motsetning til INNER JOIN vil en LEFT OUTER JOIN favorisere en side av tabellene. Det er fortsatt en såkalt «equijoin». Relatert til det eksemplet vi har brukt tidligere vil det bety at vi kan hente ut alle postkodene uavhengig av om de har personer registrert til seg eller ikke – eller motsatt; alle personer uavhengig om de har registrert postkode.
Her er OUTER et valgfritt nøkkelord i spørringen. LEFT JOIN er såvidt jeg vet det samme som LEFT OUTER JOIN.
Eksempel på LEFT [OUTER] JOIN
Nå vil vi kun hente ut en komplett liste av alle personer vi har i databasen, uavhengig om de har registrert postnummer eller ei.
Du ser her at tabellen person
er den tabellen som står etter FROM-nøkkelordet. Dette gjør den til en venstrestilt tabell, og det er den vi favoriserer ved å bruke LEFT JOIN. Her vil vi altså i motsetning til INNER JOIN også hente ut personene uten registrert postnummer.
Følg med i neste del hvor vi går gjennom RIGHT OUTER JOIN. Kom gjerne med tilbakemeldinger i kommentarfeltet.
Dette innlegget har 5 kommentarer. Gjerne bidra :-)
1
Foreninger (JOINs) i SQL, del1
Innspill: 5 kommentarer · Kategori: Data og teknologi · Tagger: databaser, join, SQL, studentbidrag
Av: Mikael Brevik, student og veileder i det nye Android-faget
Som ingeniørstudent og tidligere veileder i både «LO171D Programmering i Java» og «LC238D Datamodellering og databaser» har jeg erfart at foreninger i SQL kan være noe vanskelig å forstå seg på. I den sammenheng kompilerte jeg en lengre tekst som konkret beskriver forskjellige måter å forene tabeller på etter SQL-standarden. Artikkelen er nå delt opp i en bloggserie på 5 deler. Først en introduksjon hvor vi tar opp INNER JOIN og NATURAL JOIN, og så mer avanserte foreningstyper i henhold til denne bloggplanen:
- del 2: LEFT OUTER JOIN
- del 3: RIGHT OUTER JOIN
- del 4: FULL OUTER JOIN
- del 5: CROSS JOIN (noen kjappe ord)
Noen ord om foreninger (JOIN)
En forening, eller JOIN som det heter i SQL, er en rasjonell operator på lik linje med utvelgelse av kolonner (projeksjon) eller rader (seleksjon) som skal vises. Det er en operasjon på relasjonsdatabaser som brukes til å koble sammen to eller flere tabeller i en database – gjennom en felles kolonne. Ofte vil det være primærnøkkelen og fremmednøkkelen som blir brukt som bindeledd, men det er også mulig å forene tabeller med bruk av andre felt.
I denne bloggserien kommer jeg til å bruke en rød tråd av eksempler. Det betyr at jeg tar utgangspunkt i de samme tabellene gjennom alle innleggene. Disse tabellene ser slik ut (på rasjonell form):
postal_no(zip, place); person (pid, name, surname, address, zip*);
Vi vet at understrekede attributter er primærnøkler og de som er merket med en asteriks (*) er fremmednøkler. Zip-feltet i tabellen person
er valgfritt (NULL). Vi har her sammenhengen en-til-mange.
Tabellen postal_no
inneholder informasjon over alle postnummer i Norge og ser slik ut:
Tabellen person
inneholder forskjellige personer:
INNER JOIN
INNER JOIN er nok en av de foreningene som kommer til å bli brukt mest. Det er noe som kalles equijoin og betyr rett og slett at man henter ut informasjonen bundet sammen av to felles verdier i en kolonne/attributt
Det som gjør INNER JOIN forskjellig fra noen OUTER JOIN (som LEFT/RIGHT) er at vi henter kun ut de radene (også kalt «tupler») som har verdier i begge de kolonnene som vi forener om. Vi skal se mer på dette i eksempelet under.
I SQL vil INNER som regel være et valgfritt nøkkelord. Man kan med andre ord sløyfe det og kun skrive JOIN. Mange mener videre at det er god praksis å ha med nøkkelordet for å lettere tolke spørringene når man leser de.
Eksempel på [INNER] JOIN
Dersom vi nå vil sende ut et brev til personene vi har i databasen vår må vi hente ut en liste av personer med registrert adresse. Som vi vet er zip
et NULL felt i tabellen person
, så det er ikke alle personer som har registrert adresse til seg. Vi bruker INNER JOIN med seleksjon for å vise til hvilke felt som skal brukes til å knytte dataene sammen.
Vi kan også skrive dette på en alternativ måte.
Hva som vil skje dersom man ikke bruker seleksjon her vil vi få vite mer om i blogginnlegget «del 5: CROSS JOIN».
Om vi husker fra utlistingen av personer ovenfor vet vi at det er 3 innlegg i denne tabellen, mens her er det 2. Vi får ikke listet ut alle poststedene som ikke er bebodd av noen medlemmer i person-tabellen vår, og vi får heller ikke listet ut personer som ikke har noe poststed registrert. Merk videre at vi får skrevet ut kolonnen zip
to ganger. Dette er en gang for postal_no
og en gang for person
.
NATURAL JOIN
NATURAL JOIN er i all basis det samme som en INNER JOIN. Eneste forskjellen er at vi fjerner duplikatkolonner. Som påpekt i slutten av forrige avsnitt vil vi få frem zip-kolonnen to ganger med bruk av INNER JOIN (uten projeksjon). NATURAL JOIN vil skrive ut kun en kolonne for alle par av kolonner med samme navn.
Eksempel på NATURAL JOIN
Vi ser her at ZIP kommer kun ut som en kolonne. Desverre støtter ikke JavaDB NATURAL JOIN. Så da må man supplementere med en projeksjon:
Se bort i fra USING()
her. Den er brukt for å korte ned SQL-spørringen. USING()
kan bli brukt siden begge attributtene har samme navn i disse tabellene. Så det blir en slags snarvei for ON field = field2
Følg med på neste del når vi tar for oss LEFT OUTER JOIN. Bruker du SQL i praksis? Hva synes du om foreninger? Kom gjerne med tilbakemeldinger i kommentarfeltet.
Dette innlegget har 5 kommentarer. Gjerne bidra :-)
22
Hvorfor databaser?
Innspill: Comments off · Kategori: Data og teknologi · Tagger: databaser, video
Databaser brukes i så og si alle IT-systemer. Det å kunne strukturere og lagre data på en god måte i en relasjonsdatabase, er veldig viktig.
God kunnskap om realsjonsdatabaser og SQL er helt nødvendig hvis du jobber med programmering, både i systemutvikling og i webløsninger. Dette sier Tore Mallaug, faglærer i faget LN323D Databaser og medforfatter av den norske læreboka Databaser. Hør flere argumenter for hvorfor databaser er lurt i denne videoen:
Hvilket databasesystem bruker du, forresten?
Dette innlegget har Comments off. Gjerne bidra :-)