7. SQL constraints og triggers1 Aktive elementer i SQL.

Slides:



Advertisements
Lignende præsentationer
Stored Procedure Stored Procedure er programstumper, der gemmes i databasen og afvikles op databaseserveren på samme måde som forespørgsler. Med Stored.
Advertisements

Databaser Teori.
Relationsdatabaser og SQL
3. Funktionelle afhængigheder og normalisering
Krav og usecases Larman kap. 5 og 6 (del1) Larman kap del1
SQL 1 DDL og DML.
Elmasri kap , Databaser Kvalitetsattributter og arkitektur Sikkerhed Transaktioner.
Eksamensspørgsmål: 4: Brugen af nøgler i en "Relationel DB" herunder: Primary Key og Foreign Key samt Super Key og Candidate Key.
Intro Eksamen 4-ugers-projekter? Eksamensforberedelse De sidste tre gange?
View Procedures Trigger og Function Jesper Tørresø DAB1 E07 1. november 2007.
Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Regnskab & økonomistyring - Lektion 15 HD 5. semester forår 2010 v/ Jens Godik Højen, April 2010.
Regnskab & økonomistyring - Lektion 2 HD 5. semester forår 2010
Mapning af 1 til mange forbindelser
Opslagsfelter (Access, del 6). RHS – Informationsteknologi 2 Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser vores.
Relationsdatabaser og SQL
Beskrivelses- og analyse-teknikker understøttet af Oracle Designer Del 2 af 2: Proces- og funktionsdiagrammering Aalborg Universitet, d. 9. oktober 2006.
NOEA/IT FEN - Databaser/Sikkerhed 1 Lektion 10 Sikkerhed og integritet Områder Autorisationsmatrix Realisering i SQL.
XML1 4.7 XML and Its Data Model. XML2 Introduktion til XML, 178 XML = eXtensible Markup Language Markup language –sprog, hvor data "pakkes ind" i tags.
XML1 4.7 XML and Its Data Model. XML2 Introduktion til XML, 178 XML = eXtensible Markup Language Markup language –sprog, hvor data "pakkes ind" i tags.
2:Relations modellering og design regler.
SQL Introduktion Jesper Tørresø DAB1 F08 6. Februar 2008.
6. SQL1 Standardiseret spørge-sprog mv. til relationsdatabaser.
Relationsdatabaser og SQL
Operationer på relationer
22/092VE/E00/RB1 Introduktion til SQL Datalogi 2VE E00 DIKU Forelæsninger 22/9 og 29/9.
Relationsdatabaser og SQL
2009NOEA/IT - Databaser/SQL1 Realisering af den relationelle model i SQL-baserede DBMS’er SQL er mere end forespørgsler - det omfatter bl.a. –DDL Data.
1 HMAK XMLRelationel model og XMLNOEA / PQC 2005 SQLServer og XML Hent data via URL Generering af xml –Raw –Auto –Explicit Hent data via template Evt.
SQL – Oracle Relationsdatabase
1 SQL2. 2 Funktioner der laver aggregerede beregninger Returnerer count() Antal rækker der opfylder bestemt betingelse min() Laveste værdi (eller null)
Årsmøde Organisationen Danske Arkiver
Den relationelle model
SQL – Oracle Relationsdatabase
Relationelle databaser og XML
SQL Jesper Tørresø DAB1 E oktober Punkter for i dag. SQL baggrund. Relationel algebra. Brug af VS2005.
2009NOEA/IT - Databaser/arkitektur1 Den relationelle model En teoretisk model for databaser Hviler på et sundt teoretisk grundlag Omfatter: Datastruktur.
1 SQL2. 2 Funktioner der laver aggregerede beregninger Returnerer count() Antal rækker der opfylder bestemt betingelse min() Laveste værdi (eller null)
8.7 Security: Grant and revoke1 Sikkerhed 8.7 Security and User Authorization in SQL.
1. Database-systemer, introduktion
Clustered Index Scan & Seek Af Anita (DM08204). Clustered Index Organiserer/strukturer Organiserer/strukturer Én pr. tabel Én pr. tabel Valg af indexeringskolonne.
Opslagsfelter (Access, del 6). RHS – Informationsteknologi – Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser.
17. Fejl-håndtering1 Fejl-håndtering 17. Coping With System Failures.
Slide Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 15 Algorithms for Query Processing and Optimization.
Intro Større applikationer, f. eks: Bogpris.dk. Nye bøger.
8.6 Transaktioner1 Transaktioner 8.6 Transactions in SQL.
Administratordelen - Sidsel Præsentation af administratordelen Sitemap Webstruktur Transaktioner Fremtid.
Tina Ratzer Hendes hjemmeside skal indeholde: Kontakt Forhandlerliste
Intro Databaserne? Gik det som det skulle?. Databasestøttet webpublicering Forelæsning nr 8 Hvorfor data i en RDB (relationel database)? Databasemodellering.
Grundlæggende XML og XML- baserede teknologier til textmodellering DTD 2. kursusgang (7/ )
Databaser, introduktion1 Kurset ”Databaser” Introduktion.
Januar 2003Databaser, introduktion1 Databaser, forår 2003 Introduktion.
SQL Jesper Tørresø DAB1 E September Punkter for i dag. SQL baggrund. Relationel algebra. SQL koncept –Vises ved brug af VS2008.
8.5 JDBC1 JDBC 8.5 Java Database Connectivity. 8.5 JDBC2 JDBC introduktion, 393 JDBC er ikke en forkortelse for –Java Database Connectivity Sun har defineret.
Oracle Application Express Lektion 2 7. Semester 2008.
Databaseadgang fra C#:
OPERATIONEL ANALYSE AF WEBADFÆRD OAW – LEKTIONSGANG 11.
Database.
Database Some walk through. Database Design – Begreber 1 Database: En fælles samling af logiske relaterede data (informationer) DBMS (database management.
Opgaver Design tabeller Kvalitetscheck af (3NF) tabeldesignet Skriv CREATE TABLE-sætninger.
Den relationelle model
Oracle Application Express Lektion 1 7. Semester 2008.
Objekt-relationel DBMS1 4.5 The Object-Relational Model 9.4 User-Defined Types in SQL 9.5 Operations on Object-Relational Data Ullman: Object-Relational.
Intro Databaserne? Gik det som det skulle?. Databasestøttet webpublicering Forelæsning nr 7 Hvorfor data i en RDB? Databasemodellering Begrebet nøgle.
SAS Code analyzer Barbara Biørn olsen.
Omsætning af en model til en RDB Jesper Tørresø DAB1 F Marts 2008.
Database Some walk through lv/ Figures & some text from: © Pearson Education Limited 1995,
Modellering og data Nyt forløb.
MySQL dat2sem2018Fall Modul 2 – uge 2.
Dat2sem2019 Bornholm Modul 2 – uge 2
Præsentationens transcript:

7. SQL constraints og triggers1 Aktive elementer i SQL

7. SQL constraints og triggers2 Constraints, 315 Regler om data –Erklæres over for DBMS'en. –DBMS'en checker løbende at regler overholdes ved insert delete update –Brud på regler  DBMS nægter at udføre insert / delete / update, der bryder reglen.

7. SQL constraints og triggers3 Constraints II, 315 Regler kan også implementeres i de applikationer, der bruger databasen. –Konsekvens: alle applikationer skal checke regler - altid! –Konsistens: alle applikationer skal være enige om reglerne Database Applik. 1 Applik. 2

7. SQL constraints og triggers4 Typer af constraints, 315 key constraint –mængde af attributter, der identificerer hver række i en tabel foreign key constraint –mængde af attributter, der referer til en key i en [anden] tabel generelle constraints –på hver række land in ('DK', 'US') –på hele tabellen

7. SQL constraints og triggers5 SQL primary key, 316 Syntaks 1: create table person ( cpr char(11) primary key, … ); Attribute level. Anvendes hvis nøglen indeholder 1 attribut. Eks. fig. 7.1, side 317 Syntaks 2: create table studKursus ( studCpr char(11), kursusnr number(1000), primary key (studCpr, kursusnr) ); –Table level. –Anvendes hvis nøglen indeholder flere attributter. –Eks, fig. 7.2, side 316

7. SQL constraints og triggers6 SQL unique, 317 max. 1 primary key pr. tabel –andre unikke mængder af attributter kan markeres unique. syntaks –attribute level hvis en enkelt attribut er unique –table level hvis flere attributter tilsammen er unique.

7. SQL constraints og triggers7 primary key og unique skaber indekser, 318 DBMS laver indeks for hver primary key og hver unique –mange "gratis" indekser DBMS checker ved hvert insert / update –om nye data overholder primary key / unique ved at indsætte / opdatere unikt indeks.

7. SQL constraints og triggers8 Fremmednøgler, 319 fremmednøgle –en mængde af attributter, der referer til primærnøglen / unique i en [anden] tabel –Regel Det refererede skal eksistere –Ingen dangling tuples [side 323] –Sådan er det ikke på www - der er mange "løse" links. DBMS checker ved insert, update og delete Fremmednøglen må dog være null, dvs. ikke referere til nogen.

7. SQL constraints og triggers9 SQL fremmednøgler, 320 create table Person ( cpr char(11) primary key, … postnr number(4), foreign key (postnr) references postby (postnr) ); –Eks. 7.3, side 320 MySQL –DBMS, der bl.a. bruges til web-applikationer. –Default: Tillader at man skriver foreign key …, men det har ingen effekt {DBMS checker ikke om det refererede eksisterer}

7. SQL constraints og triggers10 Reference integritet, 321 Generel regel: –Det refererede skal eksistere. Hvad sker der hvis man forsøger at slette / ændre data, som andre referer til? –Nægt sletning / ændring! –Cascade politik on delete set null / cascade on update cascade Eks. 7.4, side 322

7. SQL constraints og triggers11 Cascade politik, 322 on delete set null –alle fremmednøgle, der referer til det slettede, skal sættes til null. on delete cascade –alle rækker med fremmednøgler, der referer til det slettede, skal også slettes!! on update cascade –alle fremmednøgler, der referer til det ændrede, skal også ændres. –findes ikke i Oracle [primærnøgler bør ikke være databærende og skal derfor ikke ændres!]

7. SQL constraints og triggers12 Constraints på attributter, 327 not null –attribut datatype not null –værdien null forbydes i denne kolonne checkes af DBMS –eks. side 328 check –attribut datatype check (betingelse) –værdierne i denne kolonne skal altid overholde betingelsen checkes af DBMS –eks. side

7. SQL constraints og triggers13 Navngivning af constraints, 334 Constraints bør navngives –ellers kan man [næsten] ikke senere ændre / slette dem –eks. 7.11, side 334 –DBMS navngiver anonyme constraints Oracle: Alle dine constraints på tabellen Student ses vha. –select * from user_constraints where table_name = 'STUDENT'; –User_constraints er en såkaldt system-tabel, der vedligeholdes af Oracle.

7. SQL constraints og triggers14 Ændring af constraint, 334 alter table … –ændrer på en tabel –kan også ændre / slette / tilføje constraints –eks. 7.12, side

7. SQL constraints og triggers15 Gensidig afhængighed Hvad kom først: Hønen eller ægget? Fra www-db.stanford.edu/~ullman/fcdb/oracle/or-triggers.html Ved kreering af en tabel med foreign key skal den refererede tabel være kreeret. Problem –Hvis tabel A refererer til tabel B og vice versa. Hvilken tabel (A eller B) skal så kreeres først? Løsning –create table A uden foreign key til B –create table B med foreign key til A –alter table A add foreign key til B

7. SQL constraints og triggers16 Gensidig afhængighed, eksempel create table employee ( empID number(3) primary key, deptID number(3) ) create table department ( deptID number (3) primary key, bossID number (3), foreign key (bossID) refers to employee (empID) initially deferred deferrable ) alter table employee add constraint emp_dept_fk foreign key (deptID) refers to department (deptID) initially deferred deferrable

7. SQL constraints og triggers17 Gensidig afhængighed, insert, 323 Problem –Man kan ikke indsætte første række i Employee uden at referere til Department og vice versa Løsning –foreign key erklæres "deferrable initially deferred" Fremmednøgler checkes ikke ved insert, men først ved senere commit (så man kan nå at indsætte i begge tabeller inden commit) Eks. 7.6, side 325

7. SQL constraints og triggers18 Assertions, 336 Checks vs. assertions –Tabel side 339 –Eks. side 329 nederst Assertion syntaks –create assertion navn check (betingelse) Eksempler –Fig. 7.6, side 338 Assertions skal checkes ved hvert ændring (insert, update, delete). Det tager tid!

7. SQL constraints og triggers19 Triggers, 340 Lille "program", der udføres ved en bestemt begivenhed (event) {insert, update, delete} Eks. fig. 7.8, side 341 –update / insert / delete of attribut on tabel begivenheden –before / after begivenheden –adgang til både nye og gamle data –when betingelse trigger udføres kun hvis betingelse er sand. Eks. fig. 7.9, side 343

7. SQL constraints og triggers20 Instead-Of triggers, 344 Ikke med i SQL-99 standarden –Men interessant alligevel. –Er med i Oracle. Trigger udføres i stedet for egentlige begivenhed. Godt til opdatering af views –Trigger "griber" opdatering af views og opdaterer i stedet basis tabellerne. –Eks. 7.17, side