Uploaded by Benjamin Josefsson

Sammafattning Databaser

advertisement
Daniel Wallman
Viktor Sandström
2016-01-09
Sammanfattning Databaser
Allmänt
- En databas är en organiserad samling data
- Skillnaden mellan data, information och kunskap är de olika nivåerna av abstraktion.
Data är den lägsta nivån av abstraktion, sen information och slutligen når man kunskap
som har den högsta nivån av abstraktion.
- DBMS är ett Database Management System - mjukvara som ger gränssnitt mellan
användaren och databasen.
- Set-teorin
• Ett set är en samling objekt. Objekten kallas medlemmar av settet.
• Ett set innehåller inte dubletter (viktigt).
• Ett set betecknas av stor bokstav ( A ).
• En medlem betecknas av liten bokstav ( b ).
Data
• Strukturerad data
- Kräver en modell över typ, hur den ska sparas och kommas åt.
- En databas innehåller strukturerad data. Strukturerad data nås ofta via SQL.
• Semi-strukturerad data
- Använder taggar eller andra typer av markörer för vissa element i datan, medans
andra delar av datan kan vara ostrukturerad. Ex är ett mail, där ”huvudet” med
mottagare, sändare, datum är strukturerad och själva meddelandet ofta är
ostrukturerat.
- XML och andra markup-språk används ofta för semi-strukturerad data.
• Ostrukturerad data
- Data som inte är strukturerad.
Big Data
- Big Data är samlingar av data som är så stora och komplexa att de inte går att behandla
med traditionella metoder.
- Eftersom Big Data lever i många olika datorer på olika platser blir utmaningen att hitta
metoder för att söka och analysera datan och dessa kallas Data Mining.
- Utmaningen i att analysera Big Data är att hitta nya, okända relationer mellan data för att
få fram ny kunskap. Kunskapen från dessa relationer kan bidra med nytta som
affärstrender, sjukdomsspridning m.m.
- Big Data kännetecknas av;
•
•
•
•
•
•
Volym (stor)
Hastighet (hög)
Variation i format
Variation i hastighet - ex när något trendar på nätet.
Komplexitet
Variation i kvalité
- Sensorer för datainhämtning kan vara fysiska eller digitala, och antalet sensorer ökar
hela tiden vilket leder till enorma mängder data.
- Det är inte inhämtningen av stora mängder data som spelar roll - det är vad du gör med
datan som betyder något.
- MapReduce modellen
• MapReduce är ett mjukvaru-framework för att distribuera stora volymer data till flera
maskiner som kan analysera enskilda delar av datan och sedan sammanställs allt.
- Internet of Things (IoT)
• IoT är nätverket av fysiska objekt som genom sina olika sensorer inhämtar data och
talar med andra fysiska objekt och utbyter data.
• Exempelvis ett ”smart elnät” som med sensorer mäter var det används mest ström
just nu och automatiskt anpassar tillgången därefter.
Databasdesign - faser
• Konceptuell fas
- Skapa modell över organisationen data. ex ER-diagram.
- Identifiera entiteter.
• En entitet är en representation av en samling objekt som alla delar samma
egenskaper.
• Bestäm attribut, primärnycklar, främmande nycklar, flervärdesattribut.
• Stark entitet - en entitet som är självständig.
• Svag entitet - en entitet som är beroende av en annan entitet för att finnas. (Har
en PK som är foreign)
- Identifiera relationer.
• Multiplicitet - Består av kardinalitet och deltagande.
- Deltagande - Minimum, måste entiteten ha en annan entitet? Dvs 0 eller minst
1?
- Kardinalitet - Maximum, kan entiteten ha en eller flera av en annan entitet?
1..*
Deltagande
Kardinalitet
• Tänk på att relationer också kan ha attribut, dessa tillhör då endast relationen. ex
DVD Stars Actor.
Stars
DVD
Actor
character
• Rekursiva relationer
- Design problems (se kap 6.7)
• Fan traps
• Chasm traps
- När du har flera entiteter beroende av varandra i en ”kedja”, om någon entitet i
kedjan är optional tappar du relationen genom hela ”kedjan”.
• Båda uppstår av dålig design och indirekta relationer, löses ofta genom att skapa
en till relation mellan de två berörda entiteterna.
• Kolla modellen efter redundans.
- Dubbelkolla 1..1 relationer så att det inte är synonymer och kan slås samman.
- Ta bort redundanta relationer, dvs. om samma information kan fås av flera
relationer.
• Logisk fas
- Skapa en mer strukturerad modell.
- Översätt ER-diagrammen till tabeller.
• 1..* relationer - Entiteten på ”ensamsidan” blir förälder och entiteten på
”mångasidan” blir barn. Barnentiteten får primärnyckeln från föräldern som en
främmande nyckel.
• 1..1 relationer - Titta på deltagandet;
- Obligatoriskt på båda sidor - kombinera till en ny tabell.
- Obligatoriskt på en sida - Dela upp i två tabeller och bestäm förälder och barn.
- Valfritt deltagande på båda sidor leder till en irrelevant lösning, däremot kan
man försöka analysera om en entitet oftare ”har” en annan.
- *..* relationer - Skapa tabeller för entiteterna och en joint-tabell för relationen.
Denna joint-tabell får primärnycklar från båda entiteterna.
- Normalisera tabellerna.
• Fysisk fas
- Implementera databasen (SQL osv)
Normalisering
- Normalisering är en serie av tester som syftar till få bort redundant data ur tabellerna.
Man testar tabeller mot regler för normalform (1NF, 2NF, 3NF osv).
- I testerna kollar vi på relationerna mellan kolumnerna i en tabell, inte mellan
medlemmarna/objekten.
- Tabeller som inte är i normalform kan innehålla anomalier, det finns tre typer. Vi vill få
bort dessa med normalisering.
• Insertion anomalies - Det finns risk för inmatningsfel eftersom tabellen innehåller
samma data på flera ställen.
• Deletion anomalies - Det finns risk att värdefull information försvinner när vi vill ta bort
annan information.
• Update anomalies - Om samma information finns på flera ställen måste vi uppdatera
på en massa ställen när vi vill ändra något.
Normalformer
(Alla normalformer förutsätter att de tidigare normalformerna redan är uppfyllda.)
• Fält (field/non-PK): Alla rutor i tabellen som inte är nycklar.
• Nyckel(key/PK): De rutor i tabellen som är nycklar.
• 1NF
- Inga fält får innehålla mer än ett värde.
• 2NF
- Gäller tabeller med composite primary keys - Alla fält är beroende av alla nycklar.
• 3NF
- Inga fält får vara beroende av andra fält som inte är nycklar.
• Funktionella beroenden
- Ett funktionellt beroende beskriver vilka kolumner som är beroende av varann.
Skrivs a
b Där a bestämmer b med andra ord b är funktionellt beroende av a.
- Exempelvis dCenterNum
dCentreAdress.
• Transitiva beroenden
- Om a b och b c är c transitively dependent på a. Detta vill man eliminera i 3NF.
Relationell algebra
• ⨅a - project
- returnerar tabell med efterfrågade attribut/kolumner(a).
• σa - restrict
- returnerar tabell med de objekt som uppfyller villkoren.
• ⨝ - natural join.
- Returnerar de objekt i tabellerna som har samma värde i delade attribut.
• ⨝θ - theta join.
- Är i princip en join med några villkor på.
• x - Cartesian product.
• ρa/b - rename.
- Returnerar tabell där attribut b har bytt namn till a.
• ∧ - Logical AND
• ∨ - Logical OR
•
- Logical NOT
Optimering
- Att räkna ut cartesian product är ”dyrt” i datorkraft, det kan leda till väldigt stora
tabeller. Detta gör att vi kan optimera vår algebra genom att restricta innan vi gör
cartesian product. σB ∧ C ∧ D ( R x P ) = σD ( σB ( R ) x σC ( P ))
Detta gäller när
villkoret B endast gäller tabellen R, villkoret C endast gäller tabellen P och villkoret
D gäller de båda.
• a ∈ A betyder att a är medlem av A.
• a ∉ A betyder att a inte är medlem av A.
Urval / funktioner
• { x | P(x) } där P är ett villkor/kriterie/funktion. exempelvis:
{ x | x är ett positivt heltal mindre än 4 } ger = { 1,2,3 }
• Union - medlemmar som tillhör A eller B. ex: A ∪ B . ex: { x | x ∈ A eller x ∈ B }
• Intersection - medlemmar som tillhör A och B. ex: A ∩ B . ex: { x | x ∈ A och x ∈ B }
• Difference - som subtraktion. Kan skrivas som: B — A eller B \ A.
- Definition: { x | x ∈ B och x ∉ A }
Download