Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

IS: Datenbanken, © Till Hänisch 2000 Datensicherheit in DBMS Transaktionen, Rechte und semantische Integrität.

Kopien: 1
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],

Ähnliche Präsentationen


Präsentation zum Thema: "IS: Datenbanken, © Till Hänisch 2000 Datensicherheit in DBMS Transaktionen, Rechte und semantische Integrität."—  Präsentation transkript:

1 IS: Datenbanken, © Till Hänisch 2000 Datensicherheit in DBMS Transaktionen, Rechte und semantische Integrität

2 IS: Datenbanken, © Till Hänisch 2000 Ursprung Notwendigkeit zur effizienten Verarbeitung von Massendaten Zunächst batch-Verarbeitung Dann OLTP-Systeme Reise (Fluglinien, Hotelketten) Banken (Konten, Börsen) Produktion (Aufträge, Lagerhaltung) Verwaltung (Personal, Steuer)

3 IS: Datenbanken, © Till Hänisch 2000 Motivation Schneller Viele Datensätze verläßlicher Wichtige Daten (Finanzen,...) Zugriff auf Informationen Komlexe Strukturen durch viele Anwender Wenige bis zu vielen tausend ACID-Eigenschaften

4 IS: Datenbanken, © Till Hänisch 2000 Atomicity Die Änderungen an den Daten durch eine Transaktion finden entweder vollständig oder gar nicht statt Beispiel: Geld wird von Konto 1 abgehoben und Konto 2 gutgeschrieben

5 IS: Datenbanken, © Till Hänisch 2000 Consistency Änderungen finden so statt, daß das System konsistent bleibt Beispiele: Kontostand darf nicht kleiner als 0 werden Jede Buchung bezieht sich auf ein existierendes Konto

6 IS: Datenbanken, © Till Hänisch 2000 Isolation Für jede Transaktion T i sieht das System so aus, als ob alle T j mit i<>j entweder vor oder nach T i ablaufen Beispiel: Wenn jemand anderes gleichzeitig eine Buchung auf Konto1 oder Konto 2 macht, wird die Überweisung trotzdem korrekt ausgeführt

7 IS: Datenbanken, © Till Hänisch 2000 Durability Wenn eine Transaktion abgeschlossen ist, bleiben die Daten auch bei Abstürzen,... erhalten Beispiel Auch wenn der Geldautomat nach der Auszahlung abstürzt, taucht die Auszahlung im Konto (Auszug) auf

8 IS: Datenbanken, © Till Hänisch 2000 Performance Forschungsgegenstand seit mehr als 20 Jahren --> schnell typ. Zugriff auf einzelne Datensätze m< 100 ms unabhängig von Anzahl typ. mehrere Tabellen,... langsam aber: Overhead durch Transaktionen

9 IS: Datenbanken, © Till Hänisch 2000 Relationale Datenbanken ORACLE DB/2 Sybase ASE Microsoft SQL-Server Informix Microsoft ACCESS mySQL

10 IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL], [colconstraint] tableconstraint := CONSTRAINT name constraint-definition colconstraint := constraint-definition (später mehr) CREATE TABLE Person ( name VARCHAR (30), id INT ); mysql> describe person; | Field | Type | Null | Key | Default | Extra | | name | varchar(30) | YES | | NULL | | | id | int(11) | YES | | NULL | |

11 IS: Datenbanken, © Till Hänisch 2000 Constraints Constraints legen Bedingungen für Konsistenz fest, etwa Primary key Keine doppelten Werte Foreign key Der referenzierte Datensatz muß existieren (NOT) NULL Wert muß vorhanden sein Bei Verletzung wird das entsprechende SQL- Statement nicht ausgeführt (Fehlermeldung) Alternative: Automatische Aktion, z.B. DELETE CASCADE

12 IS: Datenbanken, © Till Hänisch 2000 Constraints PRIMARY KEY CREATE TABLE Person ( name VARCHAR (100) NOT NULL, vorname VARCHAR (40) NOT NULL, PersonAlter INTEGER NULL, PRIMARY KEY (name, vorname) ); Besserer Stil (constraints sollten benannt werden): CREATE TABLE Person ( name VARCHAR (100) NOT NULL, vorname VARCHAR (40) NOT NULL, PersonAlter INTEGER NULL, CONSTRAINT pk_person PRIMARY KEY (name, vorname) ); Da Entities und Relationships auf Relationen abgebildet werden, sind Beziehungen (Relationships) nicht mehr direkt erkennbar !! Um diese zu definieren (und insb. nur gültige Beziehungen zuzulassen, können FOREIGN KEY Constraints verwendet werden. FKs verweisen auf den PK einer anderen Relation.

13 IS: Datenbanken, © Till Hänisch 2000 FOREIGN Key constraints CREATE TABLE telefon ( nummer VARCHAR (20) NOT NULL, art CHAR (1) NOT NULL, name VARCHAR (100) NOT NULL, vorname VARCHAR (40) NOT NULL, CONSTRAINT fk_telefon_person FOREIGN KEY (name, vorname) REFERENCES person (name, vorname) ); Bei nicht zusammengesetzten PKs ist einfachere Schreibweise möglich: CREATE TABLE Telefon ( Nummer VARCHAR(30) NOT NULL, Art CHAR(1) NOT NULL, Person INTEGER CONSTRAINT fk_telefon_person REFERENCES Person(ID) );

14 IS: Datenbanken, © Till Hänisch 2000 andere Constraints UNIQUE Werte der entsprechenden Columns müssen eindeutig sein (PRIMARY KEY impliziert UNIQUE) Eindeutigkeit von Candidate Keys, z.B. Person (ID) U_Person UNIQUE (name, vorname) CHECK Bedingung für ein Attribut z.B. bei Person ( PersonAlter INT NOT NULL CHECK (alter > 18) etwa bei CHAR(1) als Boolean-Ersatz flag CHAR (1) NOT NULL CHECK (flag IN (Y, N)) Bei modernen SQL Dialekten auch Subqueries zulässig, z.B. Preis DECIMAL (10,2) CHECK (preis >= (SELECT stmt.))

15 IS: Datenbanken, © Till Hänisch 2000 Zugriffskontrolle Jeder Benutzer hat volle Verfügungsgewalt (Lesen, Schreiben, Ändern,...) über die von ihm erzeugten Objekte, andere Benutzer haben keinen Zugriff Benutzer kann Rechte an seinen Objekten für andere freigeben (und wieder sperren) GRANT/REVOKE Privileg {,Privileg} ON objekt TO user {,user} spezieller "Benutzer" PUBLIC steht für alle Benutzer Privileg = SELECT,INSERT,UPDATE,DELETE z.B. GRANT SELECT ON emp TO PUBLIC; Zugriff auf Objekte anderer Benutzer erfolgt durch Qualifizierung mit dem Benutzernamen, z.B. Tabelle "geheim" des Benutzers "max" SELECT * FROM max.geheim;

16 IS: Datenbanken, © Till Hänisch 2000 Views View = virtuelle, d.h. abgeleitete Relation Aus einer oder mehreren Relationen wird durch Query eine neue virtuelle erzeugt: CREATE TABLE name SELECT...physikalische Relation CREATE VIEW name AS SELECT...virtuelle Relation Wenn sich Tupel der Basisrelation(en) ändern, dann ändert sich automatisch auch der Inhalt des Views. Anmerkung: View-Relationen existieren physikalisch nur als Definition, die Tupel werden bei jedem Zugriff berechnet. Performance View -> Abkürzung (ähnlich Makro) Wozu? Vorformulierung von (häufig benötigten, komplexen) Anfragen z.B. Gehalt der Angestellten CREATE VIEW Gehalt AS SELECT sal+ISNULL(comm,0) AS Total FROM emp; (Sybase) CREATE VIEW Gehalt AS SELECT sal+NVL(comm,0) AS Total FROM emp; (Oracle) Abstraktion von Details (NULL,…), Definition von Business Rules (Gehalt = sal+comm) an einer Stelle

17 IS: Datenbanken, © Till Hänisch 2000 Views contd. Denormalisierung, z.B. emp,dept CREATE VIEW Angest AS SELECT e.empno,e.ename, d.deptno,d.dname FROM emp e, dept d WHERE e.deptno=d.deptno; Verschiedene Sichten auf Daten (Datenschutz, Vertraulichkeit, Übersicht,...) z.B. Tabelle emp enthält Gehalt, dies darf jedoch nur für Personalabteilung sichtbar sein. Sekretariate benötigen aber Liste der Mitarbeiter. Lösung ? Entweder zusätzliche (redundante) Tabelle, die nur die zugänglichen Informationen enthält, oder CREATE VIEW emp_base AS SELECT ename,empno,deptno,job FROM emp; (vertikaler Ausschnitt) oder: Sekretariat soll vollst. emp-Tabelle, aber nur für die eigene Abteilung sehen (Die Funktion USER liefert unter Sybase den Namen des aktuellen Users zurück) CREATE TABLE userdept (name varchar(20), deptno INTEGER); INSERT INTO userdept VALUES(mueller',30); CREATE VIEW myemp AS SELECT * FROM emp WHERE deptno = ANY (SELECT deptno FROM userdept WHERE name=USER) (horizontaler Ausschnitt)


Herunterladen ppt "IS: Datenbanken, © Till Hänisch 2000 Datensicherheit in DBMS Transaktionen, Rechte und semantische Integrität."

Ähnliche Präsentationen


Google-Anzeigen