Databasteknik Introduktion Relationsmodellen Nyckelbegrepp för

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