Bazy danych i usługi sieciowe

Podobne dokumenty
Paweł Rajba

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Wykład 8. SQL praca z tabelami 5

Bazy danych 6. Klucze obce. P. F. Góra

Bazy danych 10. SQL Widoki

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Aspekty aktywne baz danych

Język SQL, zajęcia nr 1

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Bazy danych 9. SQL Klucze obce Transakcje

Autor: Joanna Karwowska

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Bazy danych - Materiały do laboratoriów VIII

Bazy danych. Dr inż. Paweł Kasprowski

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Wykład 05 Bazy danych

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

Baza danych zbiór danych

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Bazy danych i usługi sieciowe

Wykład 4. SQL praca z tabelami 1

Wykład 5. SQL praca z tabelami 2

SQL w praktyce. Miłej i owocnej nauki!!!

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Relacyjne bazy danych. Podstawy SQL

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Ref. 7 - Język SQL - polecenia DDL i DML

Systemy GIS Tworzenie zapytań w bazach danych

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Język SQL, zajęcia nr 2

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bazy Danych i Usługi Sieciowe

Bazy danych i usługi sieciowe

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Relacyjne bazy danych. Podstawy SQL

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy danych 7. Klucze obce Transakcje. P. F. Góra

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Projektowanie systemów baz danych

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Przykładowa baza danych BIBLIOTEKA

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Hurtownia Świętego Mikołaja projekt bazy danych

Bazy danych Język SQL część 1 Wykład dla studentów matem

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bazy danych 7. SQL podstawy

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Fizyczna struktura bazy danych w SQL Serwerze

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Internetowe bazy danych

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Dr Michał Tanaś(

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

BAZA DANYCH SIECI HOTELI

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Wykład 2. SQL 1 Structured Query Lenguage

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Typy Oracle atrybutów relacji Typ NUMBER (1)

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Typy Oracle atrybutów relacji Typ NUMBER (1)

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

SQL (ang. Structured Query Language)

Zarzadzanie transakcjami. Transakcje

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Bazy danych 5. Samozłaczenie SQL podstawy

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Widok Connections po utworzeniu połączenia. Obszar roboczy

Bazy danych. Dr inż. Paweł Kasprowski

Administracja i programowanie pod Microsoft SQL Server 2000

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

Wykład :45 BD-1 W_3

Przestrzenne bazy danych Podstawy języka SQL

ACESS- zadania z wykorzystaniem poleceń SQL

SQL/MySQL. Rafał Kern

Transkrypt:

Bazy danych i usługi sieciowe SQL dokończenie Paweł Daniluk Wydział Fizyki Jesień 2016 P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 1 / 39

Data Manipulation Language Zapytania klauzula SELECT Wstawianie klauzula INSERT Aktualizacje klauzula UPDATE Usuwanie klauzula DELETE P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 2 / 39

Klauzula INSERT INSERT INTO R(A 1, A 2,..., A n ) VALUES (v 1, v 2,..., v n ); R relacja, do której wstawiane są krotki A 1, A 2,..., A n lista atrybutów v 1, v 2,..., v n wartości atrybutów A i w nowej krotce Dla pozostałych atrybutów relacji R nowa krotka będzie miała wartości domyślne (czyli zazwyczaj NULL). P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 3 / 39

Klauzula INSERT INSERT INTO R(A 1, A 2,..., A n ) VALUES (v 1, v 2,..., v n ); R relacja, do której wstawiane są krotki A 1, A 2,..., A n lista atrybutów v 1, v 2,..., v n wartości atrybutów A i w nowej krotce Dla pozostałych atrybutów relacji R nowa krotka będzie miała wartości domyślne (czyli zazwyczaj NULL). Jeżeli lista atrybutów zostanie pominięta, należy podać wartości wszystkich atrybutów R w kolejności, w jakiej występują one w schemacie relacji. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 3 / 39

Klauzula INSERT przykłady INSERT INTO GraW(tytułFilmu, rokfilmu, nazwiskogwiazdy) VALUES ( Sokół Maltański, 1943, Sydney Greenstreet ); W tym wypadku można pominąć listę atrybutów INSERT INTO GraW VALUES ( Sokół Maltański, 1943, Sydney Greenstreet ); Można wstawić kilka krotek na raz INSERT INTO GraW VALUES ( Sokół Maltański, 1943, Sydney Greenstreet ), ( Batman, 1989, Michael Keaton ), ( Magnolia, 1999, Tom Cruise ); P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 4 / 39

Klauzula INSERT przykłady c.d. Nie zawsze chcemy wprowadzać dane ręcznie Do relacji: Studia(nazwa, adres, prezc#) wstawić studia filmowe, które występują w relacji: Filmy(tytuł, rok, długość, czykolor, nazwastudia, producent#) ale nie występują w relacji Studia. INSERT INTO Studio(nazwa) SELECT DISTINCT nazwastudia FROM Filmy WHERE nazwastudia NOT IN (SELECT nazwa FROM Studia); P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 5 / 39

Klauzula DELETE DELETE FROM R WHERE warunek; Przykład DELETE FROM GraW WHERE tytułfilmu = Sokół Maltański AND rokfilmu = 1943 AND nazwiskogwiazdy = Sydney Greenstreet ; P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 6 / 39

Klauzula DELETE DELETE FROM R WHERE warunek; Przykład DELETE FROM GraW WHERE tytułfilmu = Sokół Maltański AND rokfilmu = 1943 AND nazwiskogwiazdy = Sydney Greenstreet ; Przykład DELETE FROM Producenci WHERE wartość < 10000000; P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 6 / 39

Klauzula UPDATE UPDATE R SET przypisania WHERE warunek; Przykład UPDATE Filmy SET tytuł = Gwiezdne wojny WHERE tytuł = Gwiezdne wjony ; P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 7 / 39

Klauzula UPDATE UPDATE R SET przypisania WHERE warunek; Przykład UPDATE Filmy SET tytuł = Gwiezdne wojny WHERE tytuł = Gwiezdne wjony ; Przykład UPDATE Producenci SET nazwisko = Prez. nazwisko WHERE cert# IN (SELECT prezc# FROM Studia); P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 7 / 39

Data Definition Language Tworzenie tabel klauzula CREATE TABLE Usuwanie tabel klauzula DROP TABLE Modyfikacja schematu klauzula ALTER TABLE P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 8 / 39

Typy danych (MySQL) typ wartości CHAR(n) ciąg znaków o długości n VARCHAR(n) ciąg znaków o maks. długości n INT liczba całkowita 2, 147, 483, 648 2, 147, 483, 647 FLOAT liczba zmiennoprzecinkowa DOUBLE liczba zmiennoprzecinkowa podwójnej precyzji DECIMAL(n,p) liczba stałoprzecinkowa o n cyfrach znaczących (dziesiętnych) i p cyfrach w części ułamkowej DATE data TIME czas TIMESTAMP data i godzina BLOB duży obiekt binarny P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 9 / 39

Klauzula CREATE TABLE CREATE TABLE R(p 1 t 1, p 2 t 2,..., p n t n ); Przykład R nazwa tworzonej tabeli p i nazwa i-tego pola t i typ i-tego pola CREATE TABLE GwiazdyFilmowe( nazwisko CHAR(30), adres VARCHAR(255), płeć CHAR(1), dataurodzenia DATE ); P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 10 / 39

Klauzula DROP TABLE DROP TABLE R; R nazwa tabeli do usunięcia Przykład DROP TABLE GwiazdyFilmowe; P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 11 / 39

Klauzula ALTER TABLE dodawanie i usuwanie atrybutów ALTER TABLE R ADD p t; ALTER TABLE R DROP p; R nazwa tabeli p nazwa atrybutu t typ Przykład ALTER TABLE GwiazdyFilmowe ADD telefon CHAR(16); ALTER TABLE GwiazdyFilmowe DROP dataurodzenia; P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 12 / 39

Wartości domyślne Jeżeli wartość atrybutu przy wstawianiu krotki nie jest określona, przyjmuje ona wartość domyślną. Domyślną wartością domyślną jest NULL. Przykłady płeć CHAR(1) DEFAULT? nazwisko CHAR(30) DEFAULT Doe P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 13 / 39

Wartości domyślne Jeżeli wartość atrybutu przy wstawianiu krotki nie jest określona, przyjmuje ona wartość domyślną. Domyślną wartością domyślną jest NULL. Przykłady płeć CHAR(1) DEFAULT? nazwisko CHAR(30) DEFAULT Doe Określanie wartości domyślnej przy dodawaniu atrybutu ALTER TABLE GwiazdyFilmowe ADD telefon CHAR(16) DEFAULT głuchy ; P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 13 / 39

Wartości domyślne Jeżeli wartość atrybutu przy wstawianiu krotki nie jest określona, przyjmuje ona wartość domyślną. Domyślną wartością domyślną jest NULL. Przykłady płeć CHAR(1) DEFAULT? nazwisko CHAR(30) DEFAULT Doe Określanie wartości domyślnej przy dodawaniu atrybutu ALTER TABLE GwiazdyFilmowe ADD telefon CHAR(16) DEFAULT głuchy ; Zmiana wartości domyślnej ALTER TABLE GwiazdyFilmowe ALTER telefon SET DEFAULT nieznany ; P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 13 / 39

Indeksy Wyszukanie elementu w nieuporządkowanym zbiorze wymaga przejrzenia wszystkich jego elementów. Wyszukiwanie w zbiorze posortowanym liczności n wymaga tylko log n porównań. Indeks określony na pewnym atrybucie A relacji R jest mechanizmem, który pozwala na szybkie wyszukiwanie krotek, dla których wartość A spełnia zadany warunek. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 14 / 39

Indeksy c.d. Przykładowe techniki realizowania indeksów Uwaga Mapy bitowe Tablice haszujące Drzewa wyszukiwania binarnego (np. czerwono-czarne) B-drzewa Indeks przyspiesza wyszukiwanie według atrybutu, którego dotyczy, ale wymaga aktualizacji przy każdej modyfikacji tabeli. Może się zdarzyć, że koszt utrzymania indeksu przewyższa zysk z jego istnienia. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 15 / 39

Klauzula CREATE INDEX CREATE INDEX I ON R(A 1, A 2,..., A n ); I nazwa tworzonego indeksu R nazwa tabeli A 1,..., A n atrybuty Przykłady CREATE INDEX IndeksRoku ON Filmy(rok); CREATE INDEX IndeksKlucza ON Filmy(tytuł, rok); Usuwanie indeksu DROP INDEX IndeksRoku; P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 16 / 39

Jak wybrać atrybuty do indeksowania? GraW(tytułFilmu, rokfilmu, nazwiskogwiazdy) Q 1 SELECT tytułfilmu, rokfilmu FROM GraW WHERE nazwiskogwiazdy=s; Q 2 SELECT nazwiskogwiazdy FROM GraW WHERE tytułfilmu=t AND rokfilmu=y; I INSERT INTO GraW VALUES (t, y, s); P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 17 / 39

Jak wybrać atrybuty do indeksowania? c.d. Założenia Relacja GraW jest przechowywana w 10 blokach na dysku. Gwiazdy występują średnio w 3 filmach. W filmie występują średnio 3 gwiazdy. Skorzystanie z indeksu wymaga przeczytania 1 bloku na dysku. Liczba dostępów do dysku Operacja Brak indeksów Indeks gwiazdy Indeks filmu Oba indeksy Q 1 10 4 10 4 Q 2 10 10 4 4 I 2 4 4 6 P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 18 / 39

Trzy rodzaje relacji Tabele Trwałe, zapisane w bazie danych (CREATE TABLE), modyfikowalne (INSERT, UPDATE, DELETE). Wyniki podzapytań Nietrwałe, niemodyfikowalne, istnieją tylko podczas obliczania wyniku zapytania. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 19 / 39

Trzy rodzaje relacji Tabele Trwałe, zapisane w bazie danych (CREATE TABLE), modyfikowalne (INSERT, UPDATE, DELETE). Wyniki podzapytań Nietrwałe, niemodyfikowalne, istnieją tylko podczas obliczania wyniku zapytania. Widoki Nazwane wyniki zapytań. Trwałe, niemodyfikowalne (zazwyczaj), niezapisane w bazie danych. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 19 / 39

Klauzula CREATE VIEW CREATE VIEW R AS Q; R nazwa tworzonego widoku Q zapytanie definiujące widok Przykład CREATE VIEW FilmyParamount AS SELECT tytuł, rok FROM Filmy WHERE nazwastudia= Paramount ; CREATE VIEW FilmProd AS SELECT tytuł, nazwisko FROM Filmy, Producenci WHERE producent#=cert#; P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 20 / 39

Klauzula CREATE VIEW c.d. Usuwanie widoku DROP VIEW FilmyParamount; P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 21 / 39

Widoki mogą być modyfikowalne Modyfikacja widoku jest dopuszczalna, jeżeli da się ją jednoznacznie przetłumaczyć na modyfikacje relacji, na bazie których widok jest zdefiniowany. Nie da się modyfikować widoku między innymi jeżeli Nie można dodawać ani usuwać krotek ze złączenia Nie można dodawać krotek, jeżeli widok nie zawiera niezbędnych atrybutów. Zawiera grupowanie i/lub funkcje agregujące (COUNT, SUM, AVG,... ) Zawiera sumę teoriomnogościową (UNION) Jest oparty na niemodyfikowalnym widoku P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 22 / 39

Rodzaje więzów Klucze klucz główny (PRIMARY KEY) inne klucze (UNIQUE) P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 23 / 39

Rodzaje więzów Klucze klucz główny (PRIMARY KEY) inne klucze (UNIQUE) Więzy integralności referencyjnej klucze obce (FOREIGN KEY) strategie utrzymywania więzów (CASCADE, SET NULL) P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 23 / 39

Rodzaje więzów Klucze klucz główny (PRIMARY KEY) inne klucze (UNIQUE) Więzy integralności referencyjnej klucze obce (FOREIGN KEY) strategie utrzymywania więzów (CASCADE, SET NULL) Więzy określane na atrybutach i krotkach więzy NOT NULL więzy CHECK dla atrybutów lub krotek P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 23 / 39

Rodzaje więzów Klucze klucz główny (PRIMARY KEY) inne klucze (UNIQUE) Więzy integralności referencyjnej klucze obce (FOREIGN KEY) strategie utrzymywania więzów (CASCADE, SET NULL) Więzy określane na atrybutach i krotkach więzy NOT NULL więzy CHECK dla atrybutów lub krotek Więzy określane dla bazy danych asercje wyzwalacze P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 23 / 39

Klucze podstawowe Przykład CREATE TABLE GwiazdyFilmowe( nazwisko CHAR(30) PRIMARY KEY, adres VARCHAR(255), płeć CHAR(1), dataurodzenia DATE ); CREATE TABLE GwiazdyFilmowe( nazwisko CHAR(30), adres VARCHAR(255), płeć CHAR(1), dataurodzenia DATE, PRIMARY KEY (nazwisko) ); PRIMARY KEY (tytuł, rok) P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 24 / 39

Klucze Przykład nazwisko CHAR(30) UNIQUE UNIQUE (nazwisko) Uwaga W przypadku kluczy zdefiniowanych klauzulą UNIQUE dopuszczalne są wartości NULL. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 25 / 39

Klucze obce Przykład CREATE TABLE Studia ( nazwa CHAR(30) PRIMARY KEY, adres VARCHAR(255), prezc# INT REFERENCES Producenci(cert#) ); CREATE TABLE Studia ( nazwa CHAR(30) PRIMARY KEY, adres VARCHAR(255), prezc# INT, FOREIGN KEY (prezc#) REFERENCES Producenci(cert#) ); Uwaga Każda wartość atrybutu prezc# musi występować w jakiejś krotce w relacji Producenci (nie dotyczy to wartości NULL). P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 26 / 39

Strategie utrzymywania więzów integralności referencyjnej Domyślnie zmiany naruszające więzy są zakazane. Zmiany, które mogą naruszyć więzy Aktualizacja klauzula ON UPDATE Usuwanie klauzula ON DELETE Strategie usuwania naruszenia Propagacja kaskadowa CASCADE Usuwanie błędnej wartości klucza SET NULL P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 27 / 39

Strategie utrzymywania więzów integralności referencyjnej c.d. Przykład CREATE TABLE Studia ( nazwa CHAR(30) PRIMARY KEY, adres VARCHAR(255), prezc# INT REFERENCES Producenci(cert#) ON DELETE SET NULL ON UPDATE CASCADE ); P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 28 / 39

Więzy określane na atrybutach lub krotkach Więzy NOT NULL prezc# INT REFERENCES Producenci(cert#) NOT NULL Więzy dla atrybutów płeć CHAR(1) CHECK (płeć IN ( K, M )) prezc# INT CHECK (prezc# IN (SELECT cert# FROM Producenci)) Uwaga Nie jest możliwe wprowadzenie nieistniejącego identyfikatora prezesa studia, ale usunięcie producenta, który jest prezesem, nie narusza więzu. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 29 / 39

Więzy określane na atrybutach lub krotkach c.d. Więzy dla krotek CREATE TABLE GwiazdyFilmowe( nazwisko CHAR(30) PRIMARY KEY, adres VARCHAR(255), płeć CHAR(1), dataurodzenia DATE, CHECK (płeć = F OR nazwisko NOT LIKE Pani% ) ); P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 30 / 39

Asercje i wyzwalacze Asercje Więzy podobne do CHECK, ale sprawdzane przy każdej modyfikacji bazy danych Nie wspierane przez większość SZBD. Wyzwalacze (Triggers) Procedury wykonywane przed lub po zajściu zdarzenia (albo zamiast). Mogą realizować dowolne zmiany w bazie danych. Efektem wyzwalacza może być wycofanie zmiany, która go wywołała. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 31 / 39

Asercje i wyzwalacze c.d. Zastosowania wyzwalaczy ewidencjonowanie zmian (audyt) automatyczne rozszerzanie zmian (np. o stempel czasowy) wymuszanie skomplikowanych więzów (np. zakaz zapętleń w hierarchii organizacyjnej) wykonywanie procedur (np. propagowanie zmiany) replikacja danych aktualizacja danych obliczanych (np. aktualizacja stanu konta po zaewidencjonowaniu operacji) P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 32 / 39

Transakcje Szeregowanie W przypadku równoczesnego dostępu do bazy danych może łatwo nastąpić naruszenie spójności danych. Przykład rezerwacja biletów 1 Klient 1 sprawdza, czy miejsce jest wolne. 2 Klient 2 sprawdza, czy miejsce jest wolne. 3 Klient 1 wprowadza rezerwację. 4 Klient 2 wprowadza rezerwację. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 33 / 39

Transakcje c.d. Niepodzielność Niektóre operacje muszą być wykonane razem. W przypadku awarii lub błędu nie powinna się wykonać żadna z nich. Przykład przelew bankowy 1 Odejmij kwotę od salda konta A. 2 Dodaj kwotę do salda konta B. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 34 / 39

Transakcje ACID ACID atomicity atomowość consistency spójność isolation izolacja durability trwałość Atomowość Każda transakcja albo wykona się w całości, albo w ogóle. Spójność Po wykonaniu transakcji system będzie spójny, czyli nie zostaną naruszone żadne zasady integralności. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 35 / 39

Transakcje ACID c.d. Izolacja Jeżeli dwie transakcje wykonują się współbieżnie, to zazwyczaj (zależnie od poziomu izolacji) nie widzą zmian przez siebie wprowadzanych. Poziom izolacji jest zazwyczaj konfigurowalny: read uncommitted najniższy poziom izolacji, jedna transakcja może odczytywać wiersze, na których działają inne transakcje, read committed transakcja może odczytywać tylko wiersze zapisane, repeatable read transakcja nie może czytać, ani zapisywać, na wierszach odczytywanych, bądź zapisywanych w innej transakcji, serializable pełna izolacja Trwałość System potrafi uruchomić się i udostępnić spójne, nienaruszone i aktualne dane zapisane w ramach zatwierdzonych transakcji, na przykład po nagłej awarii zasilania. P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 36 / 39

Wydajność systemów baz danych Sprzęt macierze dyskowe systemy wieloprocesorowe komputery mainframe Algorytmy indeksy optymalizatory zapytań pamięć podręczna P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 37 / 39

Wydajność systemów baz danych c.d. Współbieżność każdy procesor obsługuje inne żądanie systemy rozproszone Projektowanie schemat bazy danych dostosowany do obsługi najczęstszych żądań analizy wydajności P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 38 / 39

Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2016z P. Daniluk (Wydział Fizyki) BDiUS w. V Jesień 2016 39 / 39