Föreläsning 2: Översikt över ett databassystem DVA234 Databaser IDT Akademin för Innovation, Design och Teknik
Innehåll Föreläsningens mål: Att ge en överblick över databassystemets arkitektur, delar och användande. Databashanteraren Fördelar med databashanterare ANSI/SPARC Arkitekturen Mer om SELECT Microsoft SQL Server & Server Management Studio 2
Databassystemet Användare Användare Användare Användare Verktyg: Modellering Optimering Administration Programmerings API Rapportverktyg... Erbjuder möjligheten att skapa anpassade vyer Extern vy A Extern vy B Extern vy C En programvara som hanterar databasfilen Databashanteringssystem (DBMS) Databassystem En stor fil (eller flera), oftast på disk. Databas 3
Databashanteringssystem - DBMS DBMS = Database Management System Betjänar användare av databasen 1. Användare skickar begäran om en databastjänst till DBMS (t ex i SQL) 2. DBMS tar emot begäran och analyserar den Vad vill användaren göra och är detta korrekt formulerat? (syntaxkontroll) Bryter denna begäran mot databasens integritet (semantikkontroll) Har användaren rätt att göra denna begäran? Skapa en exekveringsplan baserat på begäran Optimera exekveringsplanen 3. DBMSen utför nödvändiga operationer för att utföra begäran. (Låter betydligt enklare än vad det är, se föreläsningen om transaktioner ) 4. Slutligen packar DBMSen ihop ett resultat av begäran och returnerar detta till användaren. 4
DBMS arkitekturer Det finns flera olika DBMS arkitekturer, de vanligaste är: Client/Server databas - DBMS i en egen process Körs ofta på en annan servermaskin än klienterna Bra stöd för skalbarhet, dataoberoende, standardiserade gränssnitt, datadelning Applikationsdatabaser Kompileras ihop med applikationen 1 DBMS per applikation Mindre footprint (dock inte alltid sant), färre kontextswitchar mellan processer Saknar ofta standardiserade gränssnitt, ofta medioker datadelning Exempel: SQLite, extremedb Applikationsdatabas/ Embedded Library Client/Server databas App. App. App. Applikation Databas Databas 5
2-tier client/server arkitektur Den vanligaste C/S arkitekturen bygger på 2 skikt (tiers) Client Klientapplikationer kopplar upp sig direkt till databasen via någotapi Applikation Klienter kan vara lokala eller koppla upp från annan dator. Typexempel: DBMS Databas Server Biljettbokningssystem för flyg 1000-tals klientapplikationer mot 1 databaserver 6
3-tier client/server arkitektur Applikation Server DBMS Databas Client Mellan Server Server 3-skikts arkitekturen används om man har en mellanserver Applikationserver Webserver Server och mellanserver kan finnas på samma eller olika maskiner Typexempel: Webserver: webservern anropar databaservern och bygger därefter upp en dynamisk websida som presenteras för användaren 7
Tre stora fördelar med en DBMS 1. Enkelt Intuitivt textbaserat gränssnitt 2. Kraftfullt Komplicerade saker kan göras på ett enkelt sätt 3. Flexibelt Lätt att ändra i befintliga databaser 8
Enkelt: Skapa en databas En databas kan relativt enkelt skapas med hjälp av ett datadefinitionsspråk (DDL) DDL är en del av SQL Används för att skapa, ändra och ta bort tabeller och objekt i databasen. DDL hanterar alltså inte datat i databasen utan endast databasens schema, dvs databasens struktur. Jämför att skapa och ändra i strukter i C. DDL kan normalt endast användas av administratörer 9
Kommer ni ihåg vår exempeltabell? STUDENT Personnr# Namn Program Startår Poäng 810602-0547 Stina Nilsson DVP 2014 65 800129-0355 Stefan Andersson Nätverk 2013 73 790518-0219 Per Johansson Nätverk 1999 110 761130-1288 Nina Persson Nätverk 2014 72 721210-1256 Rikard Sjöström DVP 2014 70 621021-3459 Tor Hedman DVP 1995 105 680906-1882 Eva Ekman Nätverk 2015 25 10
Skapa/ta bort tabeller Skapa tabellen STUDENT: CREATE TABLE STUDENT( Personnr char(11) PRIMARY KEY, Namn varchar(50), Program varchar(50), Startår int, Poäng int); Ta bort tabellen STUDENT: DROP TABLE STUDENT; Notera att endast tabellens schema och inget data skapas 11
Enkelt: manipulera data Data kan enkelt hanteras med hjälp av ett datamanipuleringsspråk (DML) DML är en del av SQL Används för att lägga till, ändra och ta bort data DML ändrar alltså inte databasens schema Jämför att lägga till en post i en strukt i C. DML kan normalt användas av alla användare (Men oftast väldigt kontrollerat) 12
Lägga till/ta bort data Lägga till data: INSERT INTO STUDENT (Personnr, Namn, Program, Startår, Poäng) VALUES ( 680220-1234, Rikard Blom, DVP, 2011, 0); Lägga till vissa data: INSERT INTO STUDENT (Personnr, Namn, Startår) VALUES ( 680220-1234, Rikard Blom, 2011); Ta bort alla studenter DELETE FROM STUDENT; Ta bort specifika studenter DELETE FROM STUDENT WHERE Startår=1999; 13
Modifiera data Ändra data för samtliga studenter UPDATE STUDENT SET Poäng= Poäng + 5; Ändra flera data för samtliga studenter UPDATE STUDENT SET Poäng= Poäng + 5, Program = DVP ; Ändra data för specifika studenter UPDATE STUDENT SET Poäng=210 WHERE Namn = Tor Hedman ; 14
Enkelt: Flera tabeller Oftast består en databas av flera tabeller Naturligtvis kan man skapa många tabeller i en databas MEN Ofta finns det samband mellan tabeller, t.ex. Ett program har ett antal studenter Ett bankkonto har transaktioner Man vill att detta ska återspeglas i databasens schema genom att införa restriktioner Studenter kan bara gå på program som finns Transaktioner måste tillhöra ett existerande konto 15
Främmande nyckel Samband mellan tabeller skapas med främmande nycklar Primärnyckel (pk) identifierar unikt de olika raderna i en tabell Primärnyckel PROGRAM Programnamn# Nätverk DVP Akademi IDT IDT Energiteknik EST Främmande nyckel (fk) skapar en referens från ett attribut till en primärnyckel i en annan (eller sin egen) tabell. Alla värden i fk måste återfinnas i någon rad i (pk) STUDENT Personnr# Namn Programnamn Startår Poäng 810602-0547 800129-0355 790518-0219 Stina Nilsson Stefan Andersson Per Johansson Främmande nyckel DVP 2014 65 Nätverk 2013 73 Datateknik 1999 110 Programmet finns inte, denna rad går inte att lägga till i databasen 16
Skapa tabell med främmande nyckel Skapa tabellen STUDENT som refererar PROGRAM CREATE TABLE STUDENT( Personnr char(11) PRIMARY KEY, Namn varchar(50), Program varchar(50) FOREIGN KEY REFERENCES PROGRAM(Programnamn), Startår int, Poäng int); 17
Kraftfullt Komplicerade saker kan göras på ett enkelt sätt Att kunna mata in data i en databas är oviktigt om man inte kan söka i datat. Databassystem tillåter mycket komplexa frågor I SQL används operatorn SELECT för frågor I de kommande exemplen, fundera lite på hur mycket kod som skulle behöva skrivas för att söka i strukter i C. 18
Hämta data Hämta samtliga studenter: SELECT * FROM STUDENT; Hämta specifika attribut för samtliga studenter (project): SELECT Namn, Program FROM STUDENT; Hämta specifika studenter (restrict) SELECT * FROM STUDENT WHERE Program= Nätverk ; 19
Hämta data från flera tabeller (JOIN) Hämta namnen på alla som läser på IDT SELECT Namn FROM STUDENT, PROGRAM WHERE Program=Programnamn AND Akademi= IDT Detta är ekvivalent med SELECT NAMN FROM STUDENT JOIN PROGRAM ON Program=Programnamn WHERE Akademi= IDT Ummm, det här var krångligt! Resultat: Namn Stefan Andersson Javisst. Men vi kommer att gå igenom hur detta fungerar på föreläsningen om relationsmodellen Per Johansson 20
Flexibelt Lätt att ändra i befintliga databaser Med hjälp av DDL operationer kan man enkelt ändra i databasens schema. Även under drift. Jämför detta med strukter i C där man behöver kompilera om applikationen om man ändrar något. Värt att påpeka är att man måste tänka sig noga för när man ändrar i en driftsatt databas I SQL finns det inga Är du säker? frågor.j 21
Modifiera tabeller Lägga till ett attribut ALTER TABLE STUDENT ADD Adress VARCHAR(255); Modifiera befintligt attribut (SQL Server syntax) ALTER TABLE STUDENT ALTER COLUMN Namn VARCHAR(255); Ta bort attribut ALTER TABLE STUDENT DROP COLUMN Adress; 22
Databashanterarens olika språk DDL Data Definition Language Används för att skapa och modifiera de olika schemana i en databas, t.ex. DML Data Manipulation Language Används för att skapa och modifiera datat i en databas, t.ex. Förutom dessa två finns ett tredje språk: DCL Data Control Language Används för att ändra accessrättigheter i en databas, t.ex. GRANT SELECT Ge en användare rätt att läsa en tabell GRANT EXECUTE Ge en användare rätt att köra t.ex. en funktion REVOKE DELETE Ta bort en användares rätt att göra delete i en tabell DDL och DCL brukar bara Databasadministratörer ha rätt till 23
3-Schema eller ANSI/SPARC arkitekturen Extern nivå A Används av de flesta databaser. Framtagen av ANSI/SPARC Study Group on DBMS (1978) och består av tre nivåer: Externa nivån - administrerar hur data presenteras för användare Konceptuella nivån administrerar ett användargemensamt schema, oberoende av fysiska överväganden Interna nivån - administrerar hur data lagras fysiskt Extern nivå B Extern nivå C Externt schema: Views, stored procedures, funktioner + tabeller som användaren har rätt att se/uppdatera Konceptuell nivå Konceptuellt schema: Hela databasen som den faktiskt ser ut Intern nivå Internt schema: Records, pages, offsets, index, flashminne, hd 24
Ett exempel på ett konceptuellt schema 25
Ett exempel på externt schema Webbsidan Webbsidan skall presentera labbgrupperna Detta görs genom att skapa ett anpassat schema i form av en projektion av det konceptuella schemat (databasvy) Groupname Name 1 Name 2 Labass A1 Stina Nilsson Stefan Andersson Simin A2 Per Johansson Nina Persson Simin B1 Rikard Sjöström Tor Hedman Mobyen 26
Ett exempel på externt schema Akademiadministratör Administratören ska lägga till studenter på kurs Detta görs genom att ge denne full tillgång till tabellen student men att ta bort tillgång till allt annat 27
Skapa vyer Skapa en vy som listar studenter som läser kursen DVA234: CREATE VIEW DATABASSTUDENT AS SELECT NAMN FROM STUDENT JOIN KURSDELTAGARE ON STUDENT.Personnr=KURSDELTAGARE.Personnr WHERE KURSDELTAGARE.Kurskod= DVA234 ; Denna vy kan läsas som en tabell: SELECT * FROM DATABASSTUDENT; Övriga operationer som INSERT, UPDATE och DELETE mot vyer kräver särskilda regler. DCL (Grants) kan sättas individuellt för vyn En lärare skulle till exempel inte ha rätt att läsa eller skriva till STUDENT, men rätt att läsa DATABASSTUDENT 28
Dataoberoende Varför 3 olika scheman?? Logiskt dataoberoende: Förmågan att ändra ett konceptuellt schema utan att behöva ändra externa scheman och deras applikationsprogramvara. Fysiskt dataoberoende: Förmågan att ändra ett internt schema utan att behöva ändra ett konceptuellt schema. När ett schema på en lägre nivå ändras, behöver man endast ändra mappningen till ovanliggande schema. Scheman på högre nivåer behöver därför inte ändras i en DBMS som fullt ut stöder dataoberoende (ANSI/SPARC). 29
Mer om SELECT Hittills har vi endast tittat på WHERE-delen för att välja ut data. SELECT Namn, Program FROM STUDENT WHERE Program; Where påverkar vilka rader som ska väljas ut Hur påverkar jag hur en kolumn ska presenteras? DISTINCT Alias Aggregatfunktioner 30
Select med DISTINCT-operatorn DISTINCT används för att hämta rader med unika kolumnvärden Lista de program som våra studenter går på SELECT DISTINCT Program FROM STUDENT; Resultat: PROGRAM DVP Nätverk 31
Select med alias (AS) Alias används för att sätta nytt namn på en kolumn i en selectsats Notera att kolumnen i bastabellen inte byter namn!! Lista alla DVPstudenter SELECT Namn AS DVPstudenter FROM STUDENT WHERE Program= DVP ; Resultat: DVPstudenter Stina Nilsson Rikard Sjöström Tor Hedman 32
Aggregatfunktioner Aggregatfunktioner påverkar data för ett attribut. COUNT(column): SELECT COUNT(*) Räkna antal studenter AS Antal studenter FROM STUDENT; SUM(column): Beräkna summan av studenters poäng SELECT SUM(Poang) AS Poängsumma FROM STUDENT; AVG(column): Beräkna medelpoäng för studenter SELECT AVG(Poang) AS Medelpoäng FROM STUDENT; MIN(column): Visa poängen för student med minst poäng SELECT MIN(Poang) FROM STUDENT; MAX(column): Visa poängen för student med flest poäng SELECT MAX(Poang) FROM STUDENT; 33
Räkna alla distinkta rader Aggregatfunktioner kan kombineras med DISTINCT Vad gör följande query? SELECT COUNT(DISTINCT Program)FROM STUDENT; Resultat: 2 34
Sortera data ( order by ) Lista alla DVPstudenter i bokstavsordning SELECT Namn, Personnr FROM STUDENT WHERE Program= DVP ORDER BY Namn; Lista alla DVPstudenter i omvänd bokstavsordning SELECT Namn, Personnr FROM STUDENT WHERE Program= DVP ORDER BY Namn DESC; 35
Gruppering av kolumnvärden Aggregering med gruppering T ex för att beräkna medelvärden eller antal individer för olika grupper Beräkna medelpoäng för DVP resp Nätverksstudenter SELECT Program, AVG(Poang) AS Medel FROM STUDENT GROUP BY Program; Resultat: PROGRAM Medel DVP 80 Nätverk 70 36
Villkorsuttryck (WHERE) Används för att filtrera ut/bort vissa rader WHERE kan användas i SELECT, UPDATE och DELETE. Exempel på operatorer: Lika med: WHERE A = B Jämförelser <>, <, >, <=, >= Booleska villkor: WHERE A AND ( B OR C ) NULL-test: Subselect villkor: t. ex.: WHERE A IS NULL AND B IS NOT NULL WHERE A IN (villkor, ) WHERE A IN (subselect) SELECT * FROM STUDENT WHERE Startår IN (2001, 2002);...); SELECT * FROM STUDENT WHERE Startår IN ( SELECT År FROM Årskullar WHERE 37
Microsoft SQL Server Management Studio En del av MS SQL Server Professional Liknande look and feel som Visual Studio Delar av funktionaliteten finns i Visual Studio Används bland annat till: Administrera servern (Lägga till/ta bort användare, rättigheter) Administrera databaser (Skapa/Ta bort) Bygga databaser (scheman etc) Populera databaser Ni kommer att använda denna mycket under kursen 38
Starta studion och logga in 39
De olika elementen i studion Här hittar du dina objekt, dvs databaser, användare osv. 40
Använda SQL 41
Använda SQL forts Du kan behöva uppdatera denna innan tabellen syns här 42
Spara dina databasfrågor TIPS: På laborationerna kan det vara en god ide att spara sina databasfrågor till redovisningen..;) 43
Använda designläget Här kan du skapa och ändra tabeller grafiskt Du kan sätta individuella egenskaper på olika attribut Dina ändringar skrivs till databasen när du sparar. Som du också se kan man även lägga till och visa data. (se drop down menyn till vänster) 44
Några ord om designläget Designläget är på sitt sätt mycket enkelt att använda Point and click för de flesta funktioner. MEN, det finns alltid en nersida.. ;) Med SQL läget kan du enkelt spara alla dina tidigare queries i en SQL-Batch fil. Enkelt att skapa om databasen ifall du gör något fel. Designläget är inte vattentätt när du börjar ändra i tabeller, det är inte säkert att du kan spara dina ändringar utan måste börja om. 45
Summering av föreläsningen Föreläsningens mål: Att ge en överblick över databassystemets arkitektur, delar och användande. Databashanteraren Fördelar med databashanterare ANSI/SPARC Arkitekturen Mer om SELECT Microsoft SQL Server & Server Management Studio 46