20TD02T Database - itnett/FTD02H-N GitHub Wiki
nettressurser Databasesystemer, 5. utgave
wiki-side basert på emnebeskrivelsen for 20TD02T Database:
20TD02T Database: Wiki for studenter
Emnebeskrivelse:
Dette emnet gir deg en grundig innføring i databasesystemer, med fokus på MySQL. Du vil lære om design, implementering, administrasjon og sikkerhet knyttet til databaser. Emnet legger vekt på praktiske ferdigheter og forståelse av teoretiske konsepter.
Læringsmål:
Etter å ha fullført dette emnet, skal du kunne:
- Kunnskap:
- Forstå grunnleggende databaseteori og arkitektur.
- Kjenne til ulike typer databaser og deres bruksområder.
- Forstå konseptene normalisering, ER-diagrammer og SQL.
- Ha kjennskap til brukeradministrasjon, indeksering, logging, backup/restore og kryptering i databasesammenheng.
- Forstå grunnleggende sikkerhetsprinsipper for databaser.
- Ferdigheter:
- Designe og implementere enkle databaser.
- Skrive SQL-spørringer for å hente ut, legge til, oppdatere og slette data.
- Normalisere databaser for å unngå redundans og sikre dataintegritet.
- Lage ER-diagrammer for å visualisere databasemodeller.
- Utføre grunnleggende administrasjonsoppgaver i MySQL.
- Generell kompetanse:
- Samarbeide med andre og dele kunnskap om databaser.
- Formidle faglige synspunkter og delta i diskusjoner om beste praksis.
- Tilegne deg ny kunnskap gjennom selvstudium og bruk av relevante ressurser.
Emnets innhold:
- Databasesystemer: Introduksjon til databaser, typer databaser, databasearkitektur, relasjonsdatabaser, ACID-egenskaper.
- SQL (Structured Query Language): Grunnleggende SQL-syntaks, SELECT, INSERT, UPDATE, DELETE, JOIN, subqueries, aggregatfunksjoner.
- Normalisering: Første, andre og tredje normalform, funksjonelle avhengigheter, Boyce-Codd normalform.
- ER-diagrammer (Entity-Relationship): Entiteter, attributter, relasjoner, kardinalitet, deltakelse, svake entiteter.
- Brukeradministrasjon i MySQL: Oppretting og tildeling av brukerrettigheter, roller.
- Indeksering: B-trær, hash-indekser, ytelsesoptimalisering.
- Logging: Transaksjonslogger, feilhåndtering.
- Backup og gjenoppretting (Restore): Strategier for sikkerhetskopiering og gjenoppretting av data.
- Kryptering: Beskyttelse av sensitive data i databaser.
- Datavisualisering: Presentasjon av data fra databaser i grafisk form.
- Sikkerhet: Autentisering, autorisasjon, SQL-injeksjon, sikkerhetskopiering.
Ressurser:
- Lærebok: Database Systems: A Practical Approach to Design, Implementation, and Management (Connolly & Begg)
- Nettsider:
- W3Schools SQL Tutorial: https://www.w3schools.com/sql/
- MySQL Documentation: https://dev.mysql.com/doc/
- LearnER (LærER): https://dbsys.info/apps_v10/LearnER/
- Online-kurs:
- Coursera - Databases and SQL for Data Science: [fjernet ugyldig nettadresse]
- Udemy - The Complete SQL Bootcamp: https://www.udemy.com/course/the-complete-sql-bootcamp/
Tips for å lykkes:
- Øv deg: Løs oppgaver og øvelser regelmessig for å styrke dine praktiske ferdigheter.
- Eksperimenter: Bruk MySQL til å lage dine egne databaser og teste ut SQL-spørringer.
- Spør om hjelp: Ikke vær redd for å stille spørsmål til læreren eller medstudenter hvis du trenger hjelp.
- Hold deg oppdatert: Følg med på utviklingen innen databaseteknologi og lær deg nye ting.
Lykke til med studiene!
20TD02T Database: Introduksjon til emnene med Blooms taksonomi
Dette emnet vil gi deg en solid forståelse av databasesystemer, med fokus på MySQL. Vi vil bruke Blooms taksonomi for å sikre at du utvikler ferdigheter på alle nivåer, fra grunnleggende kunnskap til avansert problemløsning.
1. Databasesystemer (Blooms taksonomi):
- Huske: Hva er en database? Hvilke typer databaser finnes? Hva er en relasjonsdatabase?
- Forstå: Forklar ACID-egenskapene (Atomicity, Consistency, Isolation, Durability). Beskriv fordeler og ulemper med ulike databasearkitekturer.
- Anvende: Gi eksempler på hvordan databaser brukes i ulike bransjer. Installer og konfigurer en MySQL-server.
- Analysere: Sammenlign og kontrast ulike databasetyper. Evaluer ytelsen til en database ved hjelp av benchmarking-verktøy.
- Evaluere: Vurder om en gitt databaseløsning er egnet for et spesifikt problem. Diskuter fordeler og ulemper med ulike sikkerhetstiltak for databaser.
- Skape: Design en enkel databasemodell for en gitt problemstilling. Utvikle en databaseapplikasjon som bruker MySQL.
2. SQL (Structured Query Language):
- Huske: Hva er SQL? Hvilke grunnleggende SQL-kommandoer finnes?
- Forstå: Forklar hvordan SQL brukes til å manipulere data i en database. Beskriv forskjellen mellom DDL, DML og DCL.
- Anvende: Skriv SQL-spørringer for å hente ut, legge til, oppdatere og slette data. Bruk JOIN til å kombinere data fra flere tabeller.
- Analysere: Identifiser ineffektive SQL-spørringer og optimaliser dem. Feilsøk SQL-kode for å finne og rette opp i feil.
- Evaluere: Vurder om en gitt SQL-spørring er sikker og effektiv. Diskuter fordeler og ulemper med ulike SQL-dialekter.
- Skape: Skriv komplekse SQL-spørringer som bruker subqueries, aggregatfunksjoner og vindusfunksjoner. Utvikle prosedyrer og funksjoner i SQL.
3. Normalisering:
- Huske: Hva er normalisering? Hvilke normalformer finnes?
- Forstå: Forklar hvorfor normalisering er viktig for å unngå redundans og sikre dataintegritet. Beskriv funksjonelle avhengigheter og hvordan de brukes i normaliseringsprosessen.
- Anvende: Normaliser en gitt databasemodell til tredje normalform. Identifiser potensielle problemer med en ikke-normalisert database.
- Analysere: Vurder om en gitt databasemodell er riktig normalisert. Finn og løs normaliseringsproblemer i en eksisterende database.
- Evaluere: Diskuter fordeler og ulemper med ulike normaliseringsnivåer. Vurder om det er nødvendig å normalisere en database til Boyce-Codd normalform i alle tilfeller.
- Skape: Design en databasemodell som er normalisert til tredje normalform fra bunnen av. Utvikle en strategi for å normalisere en eksisterende database.
4. ER-diagrammer (Entity-Relationship):
- Huske: Hva er et ER-diagram? Hvilke symboler brukes i ER-diagrammer?
- Forstå: Forklar hvordan ER-diagrammer brukes til å modellere relasjoner mellom entiteter i en database. Beskriv konseptene kardinalitet og deltakelse.
- Anvende: Lag et ER-diagram for en gitt problemstilling. Oversett et ER-diagram til en relasjonsdatabasemodell.
- Analysere: Identifiser potensielle problemer med et gitt ER-diagram, som manglende entiteter eller feil kardinalitet.
- Evaluere: Vurder om et gitt ER-diagram er korrekt og fullstendig. Diskuter fordeler og ulemper med ulike ER-modelleringsstiler.
- Skape: Design et komplekst ER-diagram som inkluderer svake entiteter, arv og rekursive relasjoner. Utvikle en databasemodell basert på et ER-diagram.
5. Brukeradministrasjon, Indeksering, Logging, Backup/Restore, Kryptering, Datavisualisering, Sikkerhet:
For hvert av disse emnene, følg en lignende struktur som ovenfor:
- Huske: Definer nøkkelbegreper og termer.
- Forstå: Forklar hvordan konseptene fungerer og hvorfor de er viktige.
- Anvende: Utfør praktiske oppgaver knyttet til emnet (f.eks., opprett brukere i MySQL, lag indekser, konfigurer logging).
- Analysere: Identifiser problemer eller forbedringspotensial i eksisterende konfigurasjoner.
- Evaluere: Vurder ulike tilnærminger og verktøy for å løse problemer.
- Skape: Utvikle planer eller strategier for å implementere løsninger (f.eks., en backup-strategi, en sikkerhetspolicy).
Ved å jobbe deg gjennom disse emnene og øve på ferdigheter på alle nivåene i Blooms taksonomi, vil du utvikle en dyp og praktisk forståelse av databaser og være godt rustet til å jobbe med dem i fremtiden.
20TD02T Database: Detaljert opplæring i del-emnene
1. Databasesystemer
Hva er en database?
En database er en strukturert samling av data som er organisert på en måte som gjør det enkelt å lagre, hente, oppdatere og administrere informasjonen. Databaser brukes i nesten alle moderne applikasjoner, fra nettsteder og mobilapper til bedriftssystemer og vitenskapelig forskning.
Typer databaser:
- Relasjonsdatabaser (RDBMS): Den vanligste typen, hvor data er organisert i tabeller med rader og kolonner. Relasjoner mellom tabeller etableres ved hjelp av nøkler. Eksempler: MySQL, PostgreSQL, Oracle, Microsoft SQL Server.
- NoSQL-databaser: Mer fleksible databaser som ikke følger den strenge relasjonsmodellen. De er ofte bedre egnet for store datamengder og ustrukturerte data. Eksempler: MongoDB, Cassandra, Redis.
- Grafdatabaser: Databaser som lagrer data som noder og kanter, og er spesielt nyttige for å representere komplekse relasjoner. Eksempler: Neo4j, ArangoDB.
Relasjonsdatabasemodell:
I en relasjonsdatabase er data organisert i tabeller. Hver tabell representerer en entitet (f.eks., kunder, produkter, ordre). Hver rad i en tabell representerer en forekomst av entiteten, og hver kolonne representerer et attributt (f.eks., navn, pris, dato).
ACID-egenskaper:
ACID står for Atomicity, Consistency, Isolation, Durability. Disse egenskapene sikrer påliteligheten og integriteten til dataene i en database:
- Atomicity: En transaksjon behandles som en enhet. Enten utføres alle operasjonene i transaksjonen, eller ingen av dem.
- Consistency: En transaksjon bringer databasen fra en gyldig tilstand til en annen gyldig tilstand.
- Isolation: Transaksjoner utføres som om de kjører sekvensielt, selv om de kan kjøre samtidig.
- Durability: Når en transaksjon er bekreftet, vil endringene være permanente, selv om det oppstår feil.
Eksempel: Installasjon av MySQL:
- Last ned MySQL Community Server fra den offisielle nettsiden.
- Følg instruksjonene for installasjon for ditt operativsystem.
- Start MySQL-serveren.
- Koble til MySQL-serveren ved hjelp av et klientverktøy som MySQL Workbench eller kommandolinjegrensesnittet.
2. SQL (Structured Query Language)
SQL er et standard språk for å kommunisere med relasjonsdatabaser. Det brukes til å definere, manipulere og kontrollere data i databasen.
Grunnleggende SQL-kommandoer:
SELECT
: Henter data fra en database.INSERT
: Legger til nye data i en database.UPDATE
: Endrer eksisterende data i en database.DELETE
: Sletter data fra en database.
DDL, DML og DCL:
- DDL (Data Definition Language): Brukes til å definere strukturen til en database (f.eks.,
CREATE TABLE
,ALTER TABLE
,DROP TABLE
). - DML (Data Manipulation Language): Brukes til å manipulere dataene i en database (f.eks.,
SELECT
,INSERT
,UPDATE
,DELETE
). - DCL (Data Control Language): Brukes til å kontrollere tilgangen til dataene i en database (f.eks.,
GRANT
,REVOKE
).
Eksempel: SQL-spørringer:
-- Hente alle kunder
SELECT * FROM kunder;
-- Legge til en ny kunde
INSERT INTO kunder (navn, epost) VALUES ('Ola Nordmann', '[email protected]');
-- Oppdatere en kundes e-postadresse
UPDATE kunder SET epost = '[email protected]' WHERE kunde_id = 1;
-- Slette en kunde
DELETE FROM kunder WHERE kunde_id = 1;
3. Normalisering
Hva er normalisering?
Normalisering er en prosess for å organisere dataene i en database på en måte som reduserer redundans (duplikate data) og forbedrer dataintegriteten. Dette gjøres ved å dele opp store tabeller i mindre, mer spesialiserte tabeller og etablere relasjoner mellom dem.
Normalformer:
Det finnes flere normalformer, men de vanligste er:
- Første normalform (1NF): Hver kolonne i en tabell må inneholde atomære verdier (dvs., ingen lister eller flere verdier i samme celle).
- Andre normalform (2NF): Tabellen må være i 1NF, og alle ikke-nøkkelattributter må være fullt funksjonelt avhengige av hele primærnøkkelen.
- Tredje normalform (3NF): Tabellen må være i 2NF, og det må ikke være noen transitiv avhengighet mellom ikke-nøkkelattributter.
Eksempel: Normalisering:
La oss si at vi har en tabell kalt ordre
med følgende kolonner:
ordre_id
(primærnøkkel)kunde_id
kunde_navn
kunde_adresse
produkt_id
produkt_navn
produkt_pris
antall
Denne tabellen er ikke normalisert fordi den inneholder redundante data (f.eks., kunde_navn
og kunde_adresse
gjentas for hver ordre en kunde legger inn).
For å normalisere tabellen, kan vi dele den opp i tre tabeller:
ordre
(ordre_id
,kunde_id
,produkt_id
,antall
)kunde
(kunde_id
,kunde_navn
,kunde_adresse
)produkt
(produkt_id
,produkt_navn
,produkt_pris
)
Nå er hver tabell mer spesialisert, og redundansen er eliminert. Vi kan bruke fremmednøkler (kunde_id
i ordre
-tabellen og produkt_id
i ordre
-tabellen) for å etablere relasjoner mellom tabellene.
4. ER-diagrammer (Entity-Relationship)
ER-diagrammer er visuelle representasjoner av en databasemodell. De viser entitetene (objektene) i databasen, attributtene (egenskapene) til entitetene, og relasjonene mellom entitetene.
Symboler i ER-diagrammer:
- Rektangel: Representerer en entitet.
- Ellipse: Representerer et attributt.
- Ruter: Representerer en relasjon.
- Linjer: Forbinder entiteter og relasjoner.
- Kardinalitetssymboler: Angir antall forekomster av en entitet som kan være relatert til en annen entitet (f.eks., en-til-en, en-til-mange, mange-til-mange).
Eksempel: ER-diagram for et bibliotek:
lån
bok --------- kunde
forfatter
Dette ER-diagrammet viser tre entiteter: bok
, kunde
og forfatter
. Relasjonen lån
viser at en kunde kan låne flere bøker, og en bok kan lånes av flere kunder. Relasjonen forfatter
viser at en bok er skrevet av en forfatter.
5. Brukeradministrasjon, Indeksering, Logging, Backup/Restore, Kryptering, Datavisualisering, Sikkerhet
Disse emnene er viktige for å administrere og sikre en database.
- Brukeradministrasjon: Involverer å opprette brukere, tildele rettigheter og roller, og overvåke brukeraktivitet.
- Indeksering: Brukes til å forbedre ytelsen til spørringer ved å lage indekser på kolonner som ofte brukes i søk.
- Logging: Involverer å registrere hendelser i databasen, som kan være nyttig for feilsøking og revisjon.
- Backup og gjenoppretting: Viktig for å beskytte data mot tap på grunn av feil eller katastrofer.
- Kryptering: Brukes til å beskytte sensitive data ved å gjøre dem uleselige uten riktig nøkkel.
- Datavisualisering: Involverer å presentere data fra databasen i en visuell form, som grafer eller diagrammer.
- Sikkerhet: Omfatter alle tiltak som er nødvendige for å beskytte databasen mot uautorisert tilgang, endring eller ødeleggelse.
(Fortsettelse fra forrige svar)
Eksempler og øvelser:
For å oppnå ferdigheter innen disse emnene, anbefales det å gjøre følgende:
- Brukeradministrasjon:
- Opprett brukere: Lær hvordan du oppretter nye brukere i MySQL og tildeler dem passord.
- Tildel rettigheter: Gi brukere tilgang til spesifikke databaser, tabeller eller kolonner.
- Bruk roller: Grupper rettigheter sammen i roller for enklere administrasjon.
- Indeksering:
- Lag indekser: Opprett indekser på kolonner som ofte brukes i
WHERE
-klausuler for å forbedre spørringytelsen. - Analyser spørringer: Bruk
EXPLAIN
-kommandoen for å se hvordan MySQL utfører spørringer og om indekser brukes.
- Lag indekser: Opprett indekser på kolonner som ofte brukes i
- Logging:
- Aktiver logging: Konfigurer MySQL til å logge hendelser som spørringer, feil og tilkoblinger.
- Analyser logger: Bruk loggfilene til å feilsøke problemer og overvåke databaseaktivitet.
- Backup og gjenoppretting:
- Lag fullstendige og inkrementelle sikkerhetskopier: Lær hvordan du tar sikkerhetskopier av hele databasen eller bare endringene siden siste sikkerhetskopi.
- Gjenopprett fra sikkerhetskopier: Øv på å gjenopprette databasen fra sikkerhetskopier i tilfelle datatap.
- Kryptering:
- Aktiver kryptering: Lær hvordan du krypterer sensitive data i MySQL, for eksempel passord eller personnummer.
- Administrer nøkler: Forstå hvordan du administrerer krypteringsnøkler på en sikker måte.
- Datavisualisering:
- Bruk visualiseringsverktøy: Lær å bruke verktøy som MySQL Workbench eller Tableau for å lage grafer og diagrammer basert på data fra databasen.
- Lag rapporter: Utforsk hvordan du kan lage rapporter som viser nøkkelinformasjon fra databasen på en lettfattelig måte.
- Sikkerhet:
- Implementer sikkerhetstiltak: Lær om beste praksis for databasesikkerhet, som å bruke sterke passord, begrense tilgang til sensitive data, og oppdatereprogramvare regelmessig.
- Beskytt mot SQL-injeksjon: Forstå hvordan SQL-injeksjonsangrep fungerer og hvordan du kan beskytte databasen din mot dem.
Ytterligere ressurser:
- Bøker:
- "SQL Practice Problems" av Sylvia Moestl Vasilik
- "High Performance MySQL" av Baron Schwartz, Peter Zaitsev, og Vadim Tkachenko
- Nettsteder:
- MySQL Tutorial: https://www.mysqltutorial.org/
- SQLBolt: https://sqlbolt.com/
- Online-kurs:
- Coursera: Databases and SQL for Data Science
- Udemy: The Complete SQL Bootcamp
Ved å kombinere teoretisk kunnskap med praktiske øvelser og eksperimentering, vil du utvikle en solid kompetanse innen databaser og være godt forberedt på å møte utfordringene i arbeidslivet.