17, 18, 20- Datamodellering og databaser Flashcards
Hva er en database? Annet navn for data?
Heter egentlig DBMS (database managment system). DBMS er en produkt type og det finnes derfor mange leverandører og mange variasjoner. Eksempler: Mysol, Oracle, SQLserver. Vi har databaser fordi det er problematisk å lagre tradisjonelt.
Hvorfor er det foretrukket å lagre data i en database istedenfor å lagre den vanlig (excel, lokalt, osv.) 7 grunner.
- Autentisering: Vi kan opprette brukere som kan logge inn med brukernavn/passord, legge begrensninger.
- Akseskontroll: Brukere kan få tilgang til å se, endre, slette, legge inn ny data i databasen.
- Logging; Logg av hvilke brukere som har gjort hva.
- Backup: Data kan bli gjenskapet ved feil.
- Transaksjoner: Dersom det i en nettbank for eksempel skal skje en reduksjon av en konto og økning i en annen vil det være en fordel å gjøre disse komandoene i en samlet operasjon. Dersom transaksjoner skal skje, kan et DBMS rette opp i feil.
- Distruberte systemer: DBMS tåler å bli spress over flere maskiner
- Klient/tjener: Brukergrensesntt adskilt fra funksjonalitet. Fordelen er at flere klienter kan være koblet til flere tjener.
Hvilke datatyper kan du? (nevn)
BOOLEAN
INT-EGER:
FLOAT:
CHAR(X):
VARCHAR(X):
TEXT:
NULL;
Hvorfor trenger vi ulike datatyper?
I de fleste datasystemer må vi angi hvilken data (altså datatype) som en kolonne skal inneholde. Dette har to hensikter:
- For det første skal systemet kunne gjøre oss oppmerksom på at vi legger inn verdier som ikke passer i fletet. (feks datoer i feil format)
- Datasystemet kan hjelpe oss å håndtere den dersom det vet hvilken data det er.
BOOLEAN
Holder på verdiene true/false. Nyttig til feks å ta vare på data som «ønsker å bli kontaktet pr epost»
INT-EGER
Heltall
FLOAT
Desimaltall
CHAR(X)
Holder på X antall tegn. Dersom man ikke fyllet ut vil det bli mellomrom.
VARCHAR(X)
Kan holde på et variabelt antall tegn, men ikke flere enn angitt ved X
TEXT
Holder på en større tekst og vil i motsetning til VARCHAr også ta vare på spesialtegn som tabulator og linjeskift.
NULL
; Vi har ikke opplysninger om denne verdien.
Hva er det atomiske kravet?
Datamaskiner er ikke så flink på å dele opp data i mindre data. Derfor skal du som database designer dele opp dataen så mye som mulig. Atomisk betyr og dele opp så mye. Man skal ikke ha flere opplysninger i samme felt. Feks SQL er laget for å håndtere enkle verdier raskt. Flere verdier per felt krever ekstra ressurs og tid.
Unngå også å dobbeltlage. For eksempel med og uten mva. Dette vil gå mot målet med å bruke en DBMS. Derfor lagrer man attributter som er unike, altså som ikke skal beregnes fra andre atributter.
1 verdi pr felt.
Unngår lagring av beregnbare verdier
Hvorfor trenger vi en nøkkel? Hvilke typer har vi?
Primærnøkkel, kandidatnøkkel, og fremmednøkkel
En DBMS har dessverre ingen mulighet til å nummerere radene. Da må vi finne noe som er unikt for å finne igjen dataen.
Hva er en Primærnøkkel?
Sørger for å ikke dobbellagre fordi alle er unike da den har krav om unikthet innebygd.
Gir data unikt nummer. (som et id nummer)
Kandidatnøkkel
Når det er flere primærnøkler. Feks en tabell som inneholder både kundenummer og fødselsnummer. Begge disse kan være en primærnøkkel og da må vi velge en.