Introduktion Databasteknik Informationssökande system • Söker i stora datamängder som ej formaterats enligt något mönster (exempelvis Google) • Vanligtvis är dessa av typen read-only Databashanteringssystem (DBMS) Introduktion ER Schema Databasobjekt SQL • Består av ett litet ”schema” som beskriver strukturen • Kan innehålla stora mängder av homogen data • Möjlighet att lätt fylla på med mer data • Flera samtidiga användare med både läs- och skrivrättigheter Relationsmodellen Nyckelbegrepp för DBMS: • Relationsmodellen är väldigt spridd • Tillhandahåller ett flexibelt gränssnitt oberoende av användarens nivå • Baserat på det standardiserade frågespråket SQL • Portabilitet/Plattformsoberoende • Relationsmodellen tillhandahåller ett starkt dataoberoende Effektivitet: • Effektiv dataåtkomst måste tillhandahållas oberoende av datamängd Användarvänlighet: • Systemet ska vara både lättanvänt och tillhandahålla avancerade möjligheter System som baserar sig på relationsmodellen: • SQL Server (versionen SQL Server Express är gratis för utvecklare) • Oracle • mySQL • Access (mest för enanvändarsystem och vid utveckling) • Stöd för flera samtidiga användare • Begränsad dataåtkomst via vyer (views) • Begränsad dataåtkomst baserad på begränsningar i användarens rättigheter mfl Robusthet: Fleranvändarsystem: • Låsningar måste undvikas • Möjlighet att återskapa data med ett minimum av dataförluster Entity-Relationship Schema • Rektanglar represneterar Entiteter (”tabell”) Student • Attribut (”kolumn”) representeras av ovaler • Nyckelattribut har understrykningar Ett nyckelattribut är unikt för varje rad i entiteten ID Number Relationer Student Name City Major Null-värden: Relationer kan vara 1:1, 1:många eller många:många Notera att det förekommer lite flexibilitet... Ett attribut kan misslyckas at ta emot ett värde beroende på två anledningar: • Missing value-null. • Not applicable-null. Exempel: •Missing-value null indikerar att en students telefonnummer är okänt •Not-applicable null indikerar att studenten inte har någon telefon Street Address Lives at Student Street City - Null är inte samma sak som noll!! 1 Centrala delar i ett DBMS • Tabeller • Vyer • Datatyper • Defaults • Lagrade procedurer • Triggers • Indexering . Tabeller (Entiteter) Primärnyckel Person PersonID Fname Ename Income Address 7108118529 Åsa Åström 13000 1 7303038564 Markus Andersson 12300 2 7110220230 Jon Nilsson 12900 1 Address AddressID Street Streetno Pcode 1 Räkstigen 15 93015 City Skellefteå 2 Fiolgränd 3 93030 Ursviken Primärnyckel Tabeller forts… Sekundärnyckel Structured Query Language För att kunna ansluta till primärnyckeln i en tabell måste det finnas en Sekundärnyckel i en annan tabell CREATE TABLE person PersonID INT PRIMARY KEY, Fname CHAR(20), Ename CHAR(20), Income SMALLMONEY, Adress INT En nyckel kan vara en enkel kolumn (attribut) eller en kombination av två eller flera INSERT [INTO] person(PersonID, Fname, Ename, Income, Address) VALUES (’7108118529’,’Åsa’,’Åström’,13000, 1) En tabell ska följa Första normalformen, vilket innebär att det inte ska gå att bryta ner innehållet i ett attribut ytterligare UPDATE Person SET Ename = ’Nilsson’ WHERE Ename = ’Åström’ Två rader i samma tabell (entitet) kan inte identiskt innehåll, innehållet separeras med hjälp av en Primärnyckel DELETE [FROM] Person WHERE Fname = ’Åsa’ Integritet 1. 2. 3. Entitetsintegritet - Två rader i en tabell kan inte ha exakt lika innehåll Domänintegritet - Kontroll av innehåll i ett attribut, exempelvis ”Null-kontroll” Referensintegritet - Säkerställer på olika sätt att det alltid finns en relation mellan en primärnyckel och en sekundärnyckel Frågor i SQL SELECT Fname, Ename, Income FROM Person WHERE PersonID = ’7108118529’ SELECT Street, Streetno FROM Address WHERE Pcode like ’930*’ SELECT * FROM Person, Address WHERE AddressID.Address = Address.Person CREATE TABLE … CREATE INTEGRITY (INTEGRITY ersätts med CONSTRAINT för MS SQL-Server!) ON Person IS PersonID > 0001010000 AND PersonID < (Date) * 10000 AND PersonID <> ’Null’; PersonID Fname Ename Income Street 7108118529 Åsa Nilsson 13000 Räkstigen 15 Streetno Pcode 93015 City Skellefteå 7303038564 Markus Andersson 12300 Fiolgränd 3 93030 Ursviken 7110220230 Jon Nilsson 12900 Räkstigen 15 93015 Skellefteå 2 Vyer (Views) Lagrade procedurer och Triggers • En vy är en funktionell avbildning av en (eller flera) tabeller i en (eller flera) databaser En lagrad procedur är... • Strukturellt är en vy identisk med en fråga … en grupp av förkompilerade SQL-kommandon som lagrats i databashanteraren … ofta ligger den i någon form av cache (SQL Server lagrar dessa i Procedure Cache) • Funktionellt är den alltid aktuell, den känner av ändringar utförda i underliggande tabell (tabeller)it persist in time - Lagrade procedurer leder till prestandalökning! • Man kan ställa frågor mot en vy En Trigger är… • En vy kan med fördel användas för att begränsa åtkomst … en speciell sorts lagrad procedur som aktiveras av fördefinierade händelser CREATE VIEW Contact SELECT Fname, Ename, Street, Streetno, Pcode, City FROM Person, Address WHERE AddressID.Address = Address.Person SELECT * FROM Contact 3