FÖ 3: Databaskursen 1. Relationsdatabaskomponenter 2. Objekt, operatorer och integritetsregler 3. Databasobjekt 4. Objektet tabell 5. Synonymer 6. Schema 7. Integritetsregler och constraints: PK, FK, Unique, Check och not null 8. Lagringsarkitektur g 9. Tablespace och datafiler 10. Konceptuella modeller 11. Objektmodeller 12. Datamodeller 1 Pär Douhan, pdo@du.se
Komponenter Relationsdatabaskomponenter Objekt Operatorer > = <> < Integritetsregler 2
Databasobjekt Objekt Hur skapar vi objekt? Vi gör det med SQL DDL Exempel: Skapa en användare Tabell Funktion Procedur Trigger Sekvens Vy Index User etc. create user h14kandr identified by "123AwRR67" default tablespace data temporary tablespace temp quota 24576 k on data account unlock; 3
En tom tabell KUND kundnr password fnamn enamn email regdatum mobil 1. Ovan finns en tom tabell med namnet kund 2. Tabellen har kolumner som är namngivna. I detta exempel finns kolumnerna: kundnr, password, fnamn, enamn, email, regdatum och mobil 3. Kolumnerna är av en viss datatyp: number, date eller kanske varchar2 4. Kolumnerna kan liknas vid variabler 5. Tabellen kan liknas vid en klass. I detta fall klass = kund 6. Tabellen innehåller ingen data ännu 7. Vi har i detta läge endast metadata 4
En tabell med data KUND kundnr password fnamn enamn email regdatum mobil 56482 OLee45 Rolf Björk rb@gmail.com 20150214 0730211142 89658 PPkkAQW Malin Ek maek@du.se 20141223 58476 YyYp345 Jossef Mdoud jossef@du.se 20130212 0730533347 1. Det finns nu tre rader eller objekt (= kundobjekt) i tabellen 2. Dessa tre rader utgör tabellens data 3. Data i kombination med metadata medför att tabellen innehåller information. Information om kunder närmare bestämt 4. Tabellens minsta beståndsdel kallas för cell 5. En cell är en korsning mellan en rad och en kl kolumn 6. Om vi tittar i kolumnen mobil för kund med kundnr = 58476 7. Så ser vi att det står 0730533347 som värde i den cellen 5
NULL KUND kundnr password fnamn enamn email regdatum mobil 56482 OLee45 Rolf Björk rb@gmail.com 20150214 0730211142 89658 PPkkAQW Malin Ek maek@du.se 20141223 NULL 58476 YyYp345 Jossef Mdoud jossef@du.se 20130212 0730533347 1. Kund med kundnr = 89658 saknar mobil 2. Cellen är därför tom 3. Cellen innehåller ett null-värde 4. Null är inte samma sak som 0 (noll) 5. Null är ej definierat. Jämför med matematikens 1/0 6. Null är inte lika med null 7. Null + 100 =? 8. Null + 100 = null 9. Om vi har 100 och lägger till något som inte är definierat så får vi null 6
Synonymer svenska engelska formellt the 1960's tabell table relation file rad row tuple record kolumn column attribute field 7
Lagringsarkitektur i Oracle Logisk del Fysisk del Oracle instance 1 M Tablespace 2 16 2 10 Data files Segment Saker vi lagrar data i, t. ex. tabeller och index Extent Data block OS block 8
Söka i Data Dictionary Kontrollera vilka tablespace och datafiler som finns genom att söka i data dictionary select tablespace_name, file_name from dba_data_files order by tablespace_name; TABLESPACE_NAME FILE_NAME SYSAUX C:\ORACLE12SA\ORADATA\OSRVDB\DATAFILE\O1_MF_SYSAUX_BGCBVOO2_.DBF SYSTEM C:\ORACLE12SA\ORADATA\OSRVDB\DATAFILE\O1_MF_SYSTEM_BGCBZ9CT_.DBF UNDOTBS1 C:\ORACLE12SA\ORADATA\OSRVDB\DATAFILE\O1_MF_UNDOTBS1_BGCC2YR4_.DBF USERS C:\ORACLE12SA\ORADATA\OSRVDB\DATAFILE\O1_MF_USERS_BGCC2X5M_.DBF Ser till att nya datafiler hamnar på rätt ställe: alter system set DB_CREATE_FILE_DEST = 'C:\ORACLE12SA\ORADATA\OSRVDB\DATAFILE'; system SET altered. 9
Skapa ett nytt tablespace Skapa tablespace: create tablespace data extent management local segment space management auto online; tablespace data created. lägg till datafiler: alter tablespace data add datafile 'data01.dbf' size 1024m; tablespace data altered. alter tablespace data add datafile 'data02.dbf' size 1024m; tablespace data altered. 10
Kontrollera Kontrollera att tablespace och datafiler blev skapade: select tablespace_name, file_name from dba_data_files order by tablespace_name; TABLESPACE_NAME FILE_NAME DATA C:\ORACLE12SA\PRODUCT\12.1.0\DBHOME_1\DATABASE\DATA01.DBF DATA C:\ORACLE12SA\PRODUCT\12.1.0\DBHOME_1\DATABASE\DATA02.DBF DATA C:\ORACLE12SA\ORADATA\OSRVDB\DATAFILE\OSRVDB\DATAFILE\O1_MF_DATA_BGPD2H1W_.DBF SYSAUX C:\ORACLE12SA\ORADATA\OSRVDB\DATAFILE\O1_MF_SYSAUX_BGCBVOO2_.DBF SYSTEM C:\ORACLE12SA\ORADATA\OSRVDB\DATAFILE\O1_MF_SYSTEM_BGCBZ9CT_.DBF UNDOTBS1 C:\ORACLE12SA\ORADATA\OSRVDB\DATAFILE\O1_MF_UNDOTBS1_BGCC2YR4_.DBF BGCC2YR4 USERS C:\ORACLE12SA\ORADATA\OSRVDB\DATAFILE\O1_MF_USERS_BGCC2X5M_.DBF Det verkar ok! Vi har nu 2 datafiler på 1024 MB styck. Detta ger 2048 MB i totalt lagringsutrymme för vårt tablespace som heter DATA. 11
Schema create table kund... create table kund... user "karin" user "erik" Tablespace data Segment: karin.kund Segment: erik.kund Alla objekt som användaren erik skapar kommer att tillhöra schemat erik. 12
Integritetsregler Integritetsregler (integrity rules) hjälper till att: 1. Skydda data i en produktionsdatabas * 2. Hjälpa optimizer i ett Data Warehouse ** ** 13 *
Integritetsregler Integritetsregler tets e upprätthålls med constraints ts "I have a very simple rule: Put dates in dates, numbers in numbers, and strings in strings. Never use a datatype to store something other than what it was designed d for, and use the most specific type possible. " (Tom Kyte, Oracle) Datatyper är constraints! Varning för dumheter! Varchar2(4000) a date, hiding in a number, hiding in a string 42 FEB 2014 Use the right data types! "The difference between a question completing in a couple of minutes, or never completing." (Tom Kyte, Oracle) 14
Constraints Det finns fem olika typer av constraints för tabeller: 1. PK, Primary key 2. FK, Foreign key 3. Check 4. Unique 5. Not null Oracle kommer att lagra metadata om alla skapade constraints i data dictionary. 15
Primary key PK, Primary aykey eller e primärnyckel När man i praktiken väljer eller utformar identifierande variabler, kan man välja mellan helt konstruerade, artificiella identifikationsbegrepp och mer eller mindre naturliga. Under alla omständigheter är det viktigt, att identifikationerna är stabila på instansnivå. D.v.s. att de inte under några som helst omständigheter förändras under objektens (radernas) livsförlopp. Exempel på dåliga konstruktioner är informationsbärande identifikationsbegrepp, där den inbyggda informationen inte är garanterat stabil (t. ex. personnummer). Exempel på bra konstruktioner är nuvarande registreringsnummer för bilar, som är informationslöst men ändå lätt att uppfatta och memorera (t. ex. AKM445). Enligt definitionen är ett värde på en identifierande variabel en lokalt unik identifikation. Eftersom den entydigt pekar ut en viss objektinstans inom en given objekttyp (klass). (= en unik rad i en tabell) 16
Primary key KUND kundnr password fnamn enamn email regdatum mobil 56482 OLee45 Rolf Björk rb@gmail.com 20150214 0730211142 89658 PPkkAQW Malin Ek maek@du.se 20141223 58476 YyYp345 Jossef Mdoud jossef@du.se 20130212 0730533347 Vi kan skapa en primary key och koppla den till kolumnen kundnr i vår kundtabell. Denna PK constraint t kommer att medföra följande begränsningar: 1. Det kommer alltid att finnas unika värden i kolumnen kundnr 2. Det kan aldrig finnas två kundnr som är lika 3. Det kommer aldrig att finnas ett null-värde i kolumnen kundnr 17
FK, Foreign key FK, Foreign key eller främmande nyckel 1. Kll Kallas även för Rf Referential ilintegrityi eller referensintegritet i 2. Tabeller kan relateras till varandra genom att använda en foreign key constraint 3. En FK placeras på en kolumn i child-tabellen 4. Som en del av constraintdefinitionen i child-tabellen, så refereras en kolumn i en annan tablell, parent-tabellen Parent Table AVDELNING PK avdnr avdnamn Child Table PERSONAL PK anstnr fnamn enamn lön FK avdnr Om en rad stoppas in i child-tabellen, med ett icke-null-värde i FK-kolumnen, så måste det finnas en rad i parent-tabellen bll som har samma värde äd i den refererade kolumnen. 18
Parent-child och Master-detail AVDELNING # avdnr * avdnamn Denna tabell kan kallas för: Parent Eller: Master 1 M PERSONAL # anstnr (#)avdnr * fnamn * enamn * lön Vi kan alltså prata om Master-Detail eller Parent-Child föhållanden mellan tabeller. Denna tabell kan kallas för: Child Eller: Detail 19
FK, Foreign key exempel AVDELNING PERSONAL (PK) avdnr avdnamn anstnr fnamn enamn lön (FK) avdnr 100 Ekonomi 200 Produktion 300 Marknadsföring 125 Olov Andersson 29000 300 126 Lars Larsson 34000 300 101 Lena Ek 35000 200 Om vi försöker lägga till en ny rad i tabellen personal: insert into personal(anstnr,fnamn,enamn,lön,avdnr) lö values(158,'arman','kricic',36500,'400'); Kommer detta att fungera? Nej! Giltiga värden för FK kolumnen PERSONAL(avdnr) finns i den mängd av värden som existerar för PK kolumnen AVDELNING(avdnr) d.v.s (100, 200, 300) i vårt exempel 20
Unique KUND kundnr password fnamn enamn email regdatum mobil 56482 OLee45 Rolf Björk rb@gmail.com 20150214 0730211142 89658 PPkkAQW Malin Ek maek@du.se 20141223 58476 YyYp345 Jossef Mdoud jossef@du.se 20130212 0730533347 Vi kan skapa en unique constraint och koppla den till kolumnen email i vår kundtabell. Denna unique constraint kommer att medföra följande begränsningar: 1. Det kommer alltid att finnas unika värden i kolumnen email 2. Det kan aldrig finnas två emailadresser som är lika 3. Det kan förekomma null-värden i kolumnen email 4. Detta följer logiskt av att null inte är lika med null 21
Check AVDELNING PERSONAL (PK) avdnr avdnamn anstnr fnamn enamn lön (FK) avdnr 100 Ekonomi 200 Produktion 300 Marknadsföring 125 Olov Andersson 29000 300 126 Lars Larsson 34000 300 101 Lena Ek 35000 200 check(lön between 15000 and 150000) Vi kan skapa en check constraint och koppla den till kolumnen lön i vår personaltabell. Denna check constraint kommer att medföra följande begränsningar: 1. Det kommer alltid att finnas löner i intervallet 15 000 till 150 000 2. Det kommer inte att gå att ge någon en lön på t.ex. 12 500 eller 185 000 22
Not null KUND kundnr password fnamn enamn email regdatum mobil 56482 OLee45 Rolf Björk rb@gmail.com 20150214 0730211142 89658 PPkkAQW Malin Ek maek@du.se 20141223 58476 YyYp345 Jossef Mdoud jossef@du.se 20130212 0730533347 Vi kan skapa en not null constraint och koppla den till kolumnen email i vår kundtabell. Denna not null constraint kommer att medföra följande begränsningar: 1. Det kommer aldrig att finnas ett null-värde i kolumnen email 23
Konceptuella modeller Man bör inleda den infologiska delen av systemutvecklingsarbetet genom att modellera det stycke verklighet som IS (informationssystemet) ska handla om, och den verksamhet som IS ska understödja. Denna verklighet och verksamhet kallar vi också för objektsystemet. Objektsystemet t t = Object system = Reality of interest t = Universe of Discourse 24
Metoder Det finns ett behov av en generell begreppsapparat och en generell metodik för att modellera en verksamhet, ett problemområde, eller helt enkelt ett stycke verklighet på ett sätt som är gemensamt och begripligt för de olika intressenterna i ett IS. En modell som tas fram med detta syfte kan kallas för en infologiskt orienterad verklighetsmodell (en objektmodell). Det finns olika metoder för att ta fram modeller. På denna kurs kommer du att komma i kontakt med: 1. OPR Framework 2. Action-oriented conceptual modelling Personligen tycker jag att det är bra att kombinera dessa metoder, då de kompletterar varandra. 25
OPR(t) Objektmodeller kan vi sedan transformera till datamodeller. Datamodeller kan vi implementera i en databas med SQL DDL (create tbl) table). OPR Framework 1. OPR står för Object-Property-Relationship eller Objekt-Egenskap-Relation 2. Ett objekt är en konkret eller abstrakt storhet som användarna av ett IS kan vara intresserade att ha information om 3. Några exempel på objekt kan vara: varor, produkter, tjänster, personer, familjer, företag, organisationer, geografiska områden, händelser, transaktioner, processer, aktiviteter, sjukdomar, behandlingar. 4. En egenskap beskriver ett objekt på ett sätt som är lämpligt för ett visst syfte. En person kan ha en ålder, en bostadsadress, en inkomst o.s.v. Egenskaper kan vara betecknande (allmänna) eller benämnande (identifierande) 5. En relation är en logisk koppling mellan två eller flera objekt. En person kan vara gift med en annan person, en person kan vara anställd av ett företag, en bil kan ägas av en person 6. Tid, tiden förkommer i infologiska modeller i form av tidpunkter och tidsintervall. Exempel på tidkopplingar: Ett objekt kan ha en viss egenskap under ett visst tidsintervall. Räntan på ett konto kan vara 2,1% mellan två tidpunkter. 26
Action-orientedoriented Action-oriented o ted Conceptual modelling 1. I denna metod fokuseras förutom objekten även handlingar 2. Några exempel på handlingar kan vara: registreringar, g anmälningar, bekräftelser, erbjudanden o.s.v. 3. I OPR modellen brukar man prata om att objektifiera en relation 4. Här identifierar man handlingen eller det kommunikativa objektet eller det institutionella objektet direkt istället för relationen 5. För att kunna utföra olika handlingar krävs objekt i form av aktörer 6. Det finns en tydlig koppling till processmodeller (handlingsgrafer) 27
Action-orientedoriented o o o o o o o I processmodellen (handlingsgrafen) kan vi direkt identifiera olika kommunikativa objekt (verb): Erbjudande (offert) Beställning Bekräftad beställning Leverans Betalning Ovanstående objekt kommer att finnas med i vår objektmodell 28
Process - datamodell Affärsprocess Datamodell o o o o o o Datamodellen ska utgöra ett stöd för affärsprocesserna Om det i affärsprocessen sker att en kund får en offert på en bil Så ska offertinformationen kunnas sparas ner i databasen Om en student anmäler sig till en tentamen Så ska denna information kunna sparas i databasen o.s.v. Man måste alltså känna till processer och begrepp för att kunna konstruera en objektmodell 29
Exempelmodell PERSON # persnr * fnamn * enamn o mobil ÄGARBYTE # id (#) persnr (#) regnr * datum FORDON # regnr * färg * märke * modell * datum modell # Primary key (#) Foreign key * Mandatory o Optional 1 1 1 M M M PK bildar FK i gaffelns riktning 30
Exempelmodell I början kan det vara bra att skapa tabeller med exempeldata så att man får en överblick och förstår den lagrade informationen. PERSON persnr fnamn enamn mobil 720217-7415 Carl Andersson 0730985475 840315-7140 Carina Larsson 0708365421 FORDON regnr färg märke äk modell ABC345 svart volvo v70 AKM454 blå audi a6 ÄGARBYTE id persnr regnr datum 24 720217-74157415 ABC345 20090201 365 720217-7415 AKM454 20110325 4265 840315-7140 ABC345 20130630 31