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 }