Föreläsning 2: Översikt över ett databassystem

Relevanta dokument
Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

732G16: Databaser - Design och programmering

Databaser - Design och programmering

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Design och underhåll av databaser

Övningar i SQL. SQLAccess.doc Ove Lundgren

Structured query language (SQL)

Webprogrammering och 729G28 databaser Webprogrammering och databaser Kursöversikt Webprogrammering Designprocessen Lösningsförslag

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

1.Lär känna MS SQL Observera. Tips. Förberedelse

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

VAD GÖR DU / VEM ÄR DU?

729G28 Webprogrammering och databaser. Föreläsning 1: Diverse praktiskt om kursen Webprogrammering Databaser, terminologi

Databasutveckling Introduktion till SQL och TSQL

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

VAD GÖR DU / VEM ÄR DU?

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Webprogrammering och databaser. 729G28 Webprogrammering och databaser. Kursöversikt. Praktisk info. Webprogrammering. Ändringar mot förra året

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Databaser. Vad du ska lära dig: Ordlista

Databaser och Datamodellering Foreläsning IV

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

Sample exam questions. Database exam TIG058

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Tentamen DATABASTEKNIK - 1DL116

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Inga hjälpmedel är tillåtna

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Starta MySQL Query Browser

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

Grunderna i SQL del 1

WCMS-15, Webbutvecklare CMS

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Viktigt! Glöm inte att skriva Tentamenskod på alla blad du lämnar in.

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

Structured Query Language (SQL)

Databasspråket SQL - online.

1. Kvalitetsbegreppet 2. Kommunikation 4. Olika typer av datalagring. 5. Databas 6. DBMS 7. Molntjänster 8. Tabeller. 10. SQL 11.

Det är fullt tillåtet att göra laborationen innan laborationstillfället.

Välkommen till DVA234: Databaser

Relationsmodellen och syntetisk databasdesign

Databasspråket SQL - online.

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

Föreläsning 5: Relationsmodellen

Frågespråk och SQL. nikos dimitrakas rum 2423

3. Dynamiska webbplatser, 20 Yhp (4 v)

Analytisk relationsdatabasdesign

Webbprogrammering, grundkurs 725G54

Klientprogrammering mot databaser

Databasspråket SQL - online.

Skapa en databas. Skapa en tabell. Gör man antingen genom kommandot

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö.

Konceptuella datamodeller

TENTAMEN DATABASKUNSKAP ITEK12

Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen.

Karlstads Universitet, Datavetenskap 1

Databasspråket SQL - online.

Vyer, Prepared Statements, Triggers

Relationsdatabasdesign 2I-4067 HT99. Relationsalgebra. som resultat!

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

ÖVERVAKNING AV SQL SERVER

Vad är SQL? Introduktion till SQL

Välkommen till DVA234: Databaser

Stored procedure i ASP.NET

Databaser och SQL - en kort introduktion

1. Treskiktsarkitektur 2. Applika1onsprogramvara 3. Teknisk programvara. Kapitel 6 sid

Informa5onsmodellering

Informationssystem och Databasteknik

Databasspråket SQL - online.

Webservice & ERP-Integration Rapport

SQL, nästlade delfrågor Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

Prova på-laboration i SQL

Stored procedure i ASP.NET

Föreläsning 3 Transformation från konceptuell datamodell till relationsschema ( Syntetisk databasdesign ) Vad är ett databashanteringssystem?

Laboration 2, MS SQL. Observera. Tips. Förberedelse. Genomförande

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

Lösningar till tentamen i EDAF75

1. SQL DDL (Data Definition Language) 2. Skapa tabell

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Lösningsförslag, tentamen i Databaser

Transkript:

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