Druga wersja z kwantyfikatorem ANY: Relacje D I DC są złączone ze względu na wspólny element. Kwantyfikator EXIST. Przykład: zapytanie skorelowane

Podobne dokumenty
Wykład 8. SQL praca z tabelami 5

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Przykładowa baza danych BIBLIOTEKA

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

BAZA DANYCH SIECI HOTELI

Bazy danych 10. SQL Widoki

Paweł Rajba

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

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

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

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

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Hurtownia Świętego Mikołaja projekt bazy danych

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

ACESS- zadania z wykorzystaniem poleceń SQL

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

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

SIECI KOMPUTEROWE I BAZY DANYCH

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

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Autor: Joanna Karwowska

Bazy danych - Materiały do laboratoriów VIII

Autor: Joanna Karwowska

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

SIECI KOMPUTEROWE I BAZY DANYCH

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

P o d s t a w y j ę z y k a S Q L

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

Bazy danych. dr inż. Arkadiusz Mirakowski

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Bazy Danych - Projekt. Zasady przygotowania i oceny projektów

Wykład 6. SQL praca z tabelami 3

Wykład 05 Bazy danych

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Język SQL, zajęcia nr 1

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Model relacyjny. Wykład II

Relacyjne bazy danych. Podstawy SQL

Język SQL, zajęcia nr 2

Model relacyjny. Wykład II

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Bazy danych i usługi sieciowe

Struktura drzewa w MySQL. Michał Tyszczenko

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

Aspekty aktywne baz danych

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Modelowanie wymiarów

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

1 Wstęp do modelu relacyjnego

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Bazy Danych i Usługi Sieciowe

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

15. Funkcje i procedury składowane PL/SQL

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Tworzenie modelu logicznego i fizycznego danych.

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

Wykład 5. SQL praca z tabelami 2

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

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

Bazy danych. Dr inż. Paweł Kasprowski

Oracle11g: Wprowadzenie do SQL

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

SQL (ang. Structured Query Language)

Relacyjne bazy danych. Podstawy SQL

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

Oracle PL/SQL. Paweł Rajba.

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

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

Bazy danych. Polecenia SQL

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Wyzwalacze (triggery) Przykład

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

Systemy GIS Tworzenie zapytań w bazach danych

LAB 3 (część 1 Projektu)

Administracja i programowanie pod Microsoft SQL Server 2000

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

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

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

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

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

Bazy danych 9. Klucze obce Transakcje

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

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

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

Transkrypt:

Kwerenda : Podać numery dostawców którzy dostarczają przynajmniej jedna cześć, którą dostarcza przynajmniej jeden dostawca który dostarcza przynajmniej jedną część czerwoną. WHERE D# IN (SELECT D# C WHERE C# = CZ ) Druga wersja z kwantyfikatorem ANY: WHERE D# = ANY (SELECT D# C WHERE C# = CZ ) Relacje D I DC są złączone ze względu na wspólny element,dc WHERE D.D# = DC.D# AND C#= CZ Kwantyfikator EXIST WHERE EXIST (SELECT C WHERE D# = D.D# AND C#= CZ ) Przykład: zapytanie skorelowane WHERE CZ IN (SELECT C# C WHERE D#=D.D#) Przykład z kwantyfikatorem ANY z tymże mamy tutaj to zapytanie skorelowane WHERE CZ = ANY (SELECT C# C WHERE D# = D.D#) Przykład z group, DC

WHERE D.D# = DC.D# AND C#= CZ GROUP BY NAZWISKO Ad. Kwerenda podana na początku SELECT IN C WHERE C# IN (SELECT C# C WHERE D# IN (SELECT D# C WHERE C# IN (SELECT C# FROM C WHERE KOLOR= RED ))) Złączenia zewnętrzne dwie relacje oznaczające klientów banku (A- maja konto, B- biorą pożyczki), ostatni atrybut numer konta I numer pożyczki, należy je złączyć, wspólne atrybuty to nr klienta i nazwisko, pierwsze złączenie AxB to normalne według atrybutów K# i nazwisko, czyli to te osoby które posiadają i konto i pożyczka, drugie złączenie lewostronne czyli tylko Ci co maja konto ( wszystkie z A i niektóre z B) czyli do relacji dopisywany jest numer pożyczki(nie wszyscy biorą wiec będę puste pola tam), Parkera np. nie ma bo nie ma konta Potem złączenie prawostronne, mamy tutaj wszystkich co wzięli pożyczki(wszystkie krotki z relacji B) wartości wystąpią przy numerze konta, Złączenie obustronne całkowite wszystkie krotki z obydwu relacji A K# name Nr.k 1 Blake 1000 2 Smith 1203 3 Clark 1142 4 Davis 1358 5 Blair 1224 B K# name Nr.p 1 Blake 125 6 Lewis 132 7 Ray 141 4 Davis 115 8 Parker 105

Złączenia zostały złączone w SQL, rezultat złączenie występuje po słowie from Przykłady SELECT DISTINCT NAME NATURAL JOIN DC WHERE C#= CZ JOIN wg wszystkich atrybutów o takich samych nazwach bez natural trzeba zdefiniować wg czego następuje złączenie lub z ON SELECT DISTINCT NAME JOIN DC ON D.D# = DC.D# AND C#= CZ Inne formy :

Całkowite złączenie naturalne czyli obustronne gdzie wystąpią krotki z obydwu relacji, potem left I right, takie wyrażenie mocze wystąpić po słowie from D NATURAL FULL OUTER JOIN DC D NATURAL LEFT OUTER JOIN DC D NATURAL RIGHT OUTER JOIN DC Powyższych złączeń nie można stosować na egzaminie, czyli jak będzie polecenie ze trzeba losować SQL to nie można stosować ten złączeń, D FULL OUTER JOINC ON DMIASTO=CMIASTO D LEFT OUTER JOIN C ON DMIASTO = CMIASTO D RIGHT OUTER JOIN C ON D MIAASTO=CMIASTO Operacje typu UPDATE są to takie które cokolwiek zmieniają 1. tworzenie indeksu ( słowa kluczowe CREATE INDEX) tworzymy index na atrybucie status w relacji D CREATE INDEX RANGA ON DCSTATION 2. drop oznacza usuniecie indexu, indexy spowalniają aktualizacje czyli wprowadzanie danych DROP INDEX RANGA Insert wprowadzenie czegoś, tutaj konkretnych wartości, poniżej przepisanie(wykorzystanie już wprowadzonych i przepisanie ich do innej relacji) INSERT INTP D(D# NAZWISKO) INSERT INTO D.100 SELECT D#, NAZWISKO, MIASTO, STATUS WHERE STATUS>100 Delete usuwa wszystko z dc DELETE C DELETE WHERE STATUS < 10 Definiowanie nowych tabel - R nazwa nowej tabeli, A atrybut, D opis description, <I,c> - warunki integralności może być wiele od 1 do n Primary key główny klucz Foreign key obcy klucz Warunek opisany słowem checz ( p oznacza warunek który musi być sprawdzony)

CREATE TABLE R(A1D1,A2D2,.,ANDN) <i1c1> <in,cn>) Opis atrybutu (wiersza bo w jednym wierszu jest) może zawierać typ danych oraz dodatkowe informacje typu IS NOT NULL np. czy tez PRIMARY KEY(tylko jeden atrybut może mieć taki atrybut) Przykłady CREATE TABLE LEKI (NUMER INTEGER NOT NULL, NAZWA_HANDLOWA CHAR(20), PRODUCENT# INTEGER, POSTAC CHAR(20) DAWKA INTEGER PRIMARY KEY(NUMER)) Operacje typu update UPDATE DC SET ILOŚĆ=ILOSC+10 WHERE D#= 01 (na egzaminie jak nie będziemy umieli rozwiązać zad w SQL to można podać instrukcje jakie są w SQL żeby to jakoś przejść) Zmiana schematu relacji Słowo ALTER można dodawać atrybuty i można je usuwać, wreszcie można usuwać tabele ALTER TABLE LEKI ADD KRAJ CHAR(20) ALTER TABLE LEKI DROP POSTAC DROP TABLE LEKI Więzy klucza obcego można definiować poprzez umieszczenie następującego opisu wiersza PRODUCENT# INTEGER REFERENCES FARM(P#) CZYLI TO ZNACZY ZE WARTOSCI ATRYB UTU PRODUCENT # NALEŻY DO OPISU ATRYBUTY P# RELACJI farm Relacja nie ma nazwy atrybutu, bo kluczem relacji d jest d #, c c# więc tu mamy takie same nazwy, a skoro są takie same nazwy to nie trzeba oznaczać) CREATE TABLE DC (D# INT REFERENCES D C# INT REFERENCES C ILOSC INT PRIMARY KEY(D#,C#))

Inny sposób definiowania klucza obcego FOREIGN KEY(D#) REFERENCES D Inne formy możemy w wierszu relacji(atrybutowym) napisać SPRAWDZ ZE ATRYBUT DECK ZNAJDUJE SIĘ W TAKIM I TAKIM ZBIORZE CHECK (DEG IN( Bach, Most, Dac )) Sprawdza czy dawka jest większa od zera CHECK(DAWKA>0) Sprawdź czy nazwisko znajduje się w zbiorze określonym przez kwerendę CHECK(B_NAME IN (SELECT B_NAME FROM B) PRODUCENT # INTEGER CHECK(PRODUCENT # IN (SELECT P# FROM FARM)) Inna forma definiowania więzów klucza obcego, sprawdzamy czy wartość atrybuty znajduje się w zbiorze będącym odpowiedzią dla atrybutu Alternatywa dla tego jest za pomocą klucza obcego z references poprzedni sposób jest o wiele lepszy, bo tutaj tylko sprawdzi wartość atrybutu producent ale jeśli ten numer nie będzie spełniał warunku to operacja zostanie odrzucona, natomiast ten warunek pozwoli na zmianę relacji, nie dotyczy relacji farm ( relacja lekka) Tam definiował relacje pomiędzy obydwoma polami ( a nie jak tu na jedno narzucony warunek) PERESPEKTYWY SA to relacje wirtualne tzn. nie zawierają żadnych danych, definiują obraz bazy danych widziany przez użytkownika Tworzymy ja za pomocą instrukcji CREATE VIEV Tutaj powstaje perspektywa o nazwie D_L zawierająca krotki opisujące dostawców mieszkających w Londynie CREATE VIEW D_L AS SELECT # WHERE MIASTO= LONDYN Nazwa perspektywy może pojawić się wszędzie tam gdzie występuje nazwa relacji Dalej mamy przykład tego chcemy znaleźć nazwiska dostawców o statusie większym niż 100

SELECT NAME _L WHERE STATUS>100 (system sam wykona odpowiednie przekształcenia zamiast D_L from, no i że miasto = Londyn) Trudniej jest używać perspektyw przy wprowadzaniu nowych krotek CREATE E VIEW RANGA AS SELECT C#, STATUS C,D WHERE DC.D#=D.D# perspektywa ranga została zdefiniowana za pomocą dwóch relacji a poprzednia za pomocą jednej I to jest bardzo duża różnica, Dla każdej dostarczanej części podawany jest status jej dostawcami, wiec łączymy relacje z dostawcami i mamy odpowiedni atrybut przypuśćmy ze za pomocą tej perspektywy wprowadzamy krotkę C5 20. wymaga to wprowadzenia do relacji d krotki NULL NULL 20 NULL oraz do DC krotki NULL C5 NULL. Przypuśćmy ze następnie usiłujemy wykonać kwerendę za pomocą tej perspektywy. Krotka C5 20 nie będzie należeć do odpowiedzi Otóż wyznaczenie odpowiedzi wymaga realizacji złączenia, są tu łączone krotki z atrybutami o wartościach NULL. Zgodnie z zasada działań na wartościach pustych NULL /= NULL. 5 jest NULL 5<NULL niewiadomo relacja UNKNOWN Miejsce bazy danych w systemie informatycznym Model związków encji jest jednym z narzędzi projektowania systemów, drugim narzędziem SA diagramy przepływu danych DFD (DATA FLOW DIAGRAM) Elementy diagramu DFD 1) procesy zadania spełniane przez system 2) magazyny danych SA to dane w spoczynku 3) przepływy dane w ruchu 4) terminatory obiekty z którymi kontaktuje się system(obiekty zewnętrzne) Przebieg procesu projektowania

OPIS PROJEKTU OMF OML NML NMF OML MODEL (o- obecny n nowy, f fizyczny lub l- logiczny) OMF - służy implementacji dla informatyka który ma rozpoznać obiekt, uwzględnia szczegóły implementacyjne systemu, OML - uwzględnia wymagania użytkownika bez szczegółów implementacyjnych, czyli to co system robi a nie to co jak robi NML nowy model logiczny opisuje to co system ma robić NMF szczegóły implementacyjne nowego systemu Jeżeli OML = NML to celem projektowania jest poprawienie implementacji systemu Na czym polega ta różnica?? opis tego co się dzieje wraz z opisem szczegółów implementacyjnych, przychodzą zamówienia i przyjmuje je Jerzy(powiedziana tez nazwa procesu osoba realizująca pewne zadanie), dalej komputer, - urzędnik sprzedaży, urzędnik wysyłki ktoś kto produkuje wysyłkę

i ktoś kto produkuje i wysyła faktury, segregator magazyn danych i w nim tez plik zamówień Niżej to samo tylko bez szczegółów implementacyjnych PRZYJM ZAM przyjmij zamówienie, nie ma już podanej osoby jest tylko wpisane w nazwie zadanie procesu, mamy tylko utwórz dokument wysyłki i utwórz fakturę Model podstawowy systemu skalda się z!) Diagramu kontekstowego 2) listy zdarzeń podstawowych na które system ma reagować 3) celu systemu 1) Diagram kontekstowy zawiera jeden proces oznaczający system oraz terminatory z którymi się system kontaktuje

Mamy następujące terminatory klienci drukarnia kierownictwo księgowość Mogą ale nie musza być etykietowane tak jak tutaj SA niektóre, klient przychodzi i kontaktuje się z systemem wysyłając zamówienie a potem on dostaje fakturę Wyróżniamy zdarzenia(na które system ma reagować) sterowane przepływem oraz zdarzenia temporalne Te pierwsze to zdarzenia asynchroniczne mogą pojawić się w dowolnej chwili(mieć miejsce w dowolnej chwili) na przykład- przychodzi pacjent do ośrodka zdrowia i trzeba wszystko opisać, jak go obsłużyć trzeba to dokładnie opisać jako jeden z wariantów, następnie obsługa zdarzenia może wymagać kontaktu z innym terminatorem czyli wysłania do niego przepływu i oczekiwania odpowiedzi, może to też wymagać przeczytania danych z magazynu danych Zdarzenia temporalne mają miejsce w ściśle określonych chwilach. Przyjmuje się ze w systemie znajduje się zegar, przykład na godzinę 14 musi być gotowy raport dla księgowości, tutaj nie ma żadnego przepływu który by to zdarzenie uruchamiał (poprzednio żeby zaistniało zdarzenie musiał istnieć przepływ) Dla każdego zdarzenia tworzymy diagram, zawiera on jeden proces oraz odpowiednia ilość terminatorów i magazynów danych

Terminator w postaci pacjenta, przychodzi pacjent ale może w rożnym celu Np umówić się na wizytę więc trzeba przeczytać magazyn danych w postaci kalendarza wizyt i przypisać mu, może przyjść do lekarza informacja o lekarzach, na badania inf. o badaniach, może przyjść zapłacić rachunki Magazyny danych stanowa interfejs miedzy procesami opisującymi poszczególne zdarzenia diagramy dla wszystkich zdarzeń umieszcza się na jednym rysunku. ze względu na brak czytelności tego rysunku kolejnym etapem jest łączenie procesów. Powstają w ten sposób procesy wyższego rzędu (skomplikowany rysunek nie przepisany) Uzupełnieniem opisu procesu jest specyfikacja Strukturalny język naturalny połączenie cech języka naturalnego i języka programowania(łatwy i zrozumiały z precyzyjnym) narzucono w nim ograniczenia na postać formułowanych zdań - są to zdania w trybie rozkazującym (tak aby osoba nie znająca się mogła zrozumieć) Zd-1 Zd-2 Zd-n IF war-1 Zd-1 Zd-2

ELSE Zd-2 Zd-4 Zd-5 ENDIF DO WHILE war-1 Zd-1 Zd-2 Zd-3. Za pomocą takich zdań można zdefiniować specyfikacje specyfikacja procesu polegającego na przenoszeniu pacjenta do archiwum (jego danych) 2 magazyny danych pacjenci i karty pacjentów, mamy z nich przenieść rekordy do archiwum ale trzeba przewidzieć sytuacje awaryjne kiedy nie ma odpowiedniego rekordu, zarówno magazynie danych pacjenci jak i karty pacjentów i jednocześnie poinformować użytkownika dlatego generowana jest odpowiedz BEGIN ZNAJDŹ pacjenta w PACJENCI Z pasującym ID_pacjenta IF nie znaleziono rekord Odpowiedz= nie ma pacjenta ELSE ZNAJDZ kartepacjenta w KARTY PACJENTOW z pasującym ID_pacjenta IF nieznaleziono rekordu Odpowiedz= nie ma karty pacjentow ELSE Przenieś rekord pacjenta do archiwum Przenieś karte pacjenta do archiwum Odpowiedz= informacja przeniesiona ENDIF WYSWETL odpowiedz ENDIF