Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Systemy Baz Danych Wykład 1 Wojciech Pieprzyca. Organizacja zajęć 7 zajęć wykładowych (I połowa semestru) 7 zajęć projektowych (I połowa semestru) Na.

Podobne prezentacje


Prezentacja na temat: "Systemy Baz Danych Wykład 1 Wojciech Pieprzyca. Organizacja zajęć 7 zajęć wykładowych (I połowa semestru) 7 zajęć projektowych (I połowa semestru) Na."— Zapis prezentacji:

1 Systemy Baz Danych Wykład 1 Wojciech Pieprzyca

2 Organizacja zajęć 7 zajęć wykładowych (I połowa semestru) 7 zajęć projektowych (I połowa semestru) Na zajęciach 4 i 7 kolokwia będące podstawą do uzyskania zaliczenia wykładu w I terminie Projekt – oddanie projektu na zajęciach 6, obrona i ocena na zajęciach 7

3 Wprowadzenie We współczesnym świecie trudno sobie wyobrazić dobrze funkcjonujące instytucje i firmy, których działalność mogłaby być prowadzona bez korzystania z baz danych. Bowiem wszystkie inne mechanizmy, nie są w stanie konkurować pod względem szybkości i wiarygodnego dostępu do informacji z dobrze zaprojektowanym oraz prawidłowo wdrożonym systemem baz danych. Częścią około 90% wszystkich systemów informatycznych są bazy danych. Zawartość baz danych ma często kluczowe znaczenie dla strategii i działalności korporacji.

4 Architektura klient-serwer Współczesne systemy baz danych są tworzone jako wielodostępne o architekturze klient-serwer. Architektura klient-serwer jest rodzajem systemu informatycznego, w którym dwa procesy współdziałają ze sobą jako nadrzędny i podrzędny. Proces klienta zawsze rozpoczyna współdziałanie od zgłoszenia zapotrzebowania. Proces serwera odpowiada na zgłoszone zapotrzebowanie. Odbywa się to w ten sposób, że stacja klienta przesyła zapytanie do bazy danych na ogół w języku SQL, a serwer przekazuje z powrotem gotową odpowiedź. KLIENT SERWER zapytanie wynik

5 Architektura klient-serwer Serwer umożliwia równoczesną obsługę wielu klientów. Zasoby serwera są współdzielone pomiędzy klientów na zasadzie tworzenia odrębnych procesów dla każdego z klientów. Serwer zarządzający bazą danych zapewnia zachowanie integralności referencyjnej danych oraz chroni bazę danych przed nieuprawnionym dostępem. Na stacjach roboczych są zainstalowane aplikacje klientów odpowiedzialne za generowanie zapytań do bazy danych i obsługę interfejsu użytkownika.

6 Przykładowe SZBD Systemy bazy danych w architekturze klient-serwer to m.in.: DB2 Informix Dynamic Server Firebird Microsoft SQL Server MySQL Oracle PostgreSQL Czasem jednak stosowanie serwera nie jest konieczne. Istnieją bazy danych, które nie muszą być współdzielone przez wielu użytkowników w tym samym czasie.Do takich zastosowań używane są bezserwerowe bazy danych takie jak: Access korzystająca z silnika Microsoft Jet Kexi korzystająca z silnika SQLite

7 Terminologia ENCJA - obiekt występujący w opisywanej rzeczywistości (tabela), ATRYBUT - własność encji (pole), KROTKA – zbiór atrybutów (rekord), ZWIĄZEK – w logiczny sposób łączy ze sobą encje (związek zwany jest także relacją) TYP ATRYBUTU - zakres wartości jakie może przyjmować dany atrybut, TABELA NADRZĘDNA - tabela w której każdemu wierszowi w relacji jeden do wielu odpowiada wiele wierszy tabeli podrzędnej, TABELA PODRZĘDNA - tabela w której każdemu wierszowi odpowiada dokładnie jeden wiersz w tabeli nadrzędnej,

8 Terminologia POLE - jest najmniejszą strukturą tabeli służącą do przechowywania jednej własności tabeli. REKORD - synonim wiersza tabeli, grupa wszystkich pól występujących w tabeli, KLUCZ PODSTAWOWY- pole jednoznacznie identyfikujące każdy rekord znajdujący się w tabeli, jest unikalne, co umożliwia spełnienie warunku o niepowtarzalności rekordów w tabeli, KLUCZ OBCY - pole służące do tworzenia relacji między tabelami (powiązań między wierszami tabel), może przyjmować jedynie takie wartości jak odpowiadający mu klucz podstawowy w tabeli nadrzędnej,

9 Terminologia INDEKS - zbiór uporządkowany według określonej zasady, służący do szybkiego znajdowania rekordu z wymaganą informacją, WIDOK (perspektywa) - jest tabelą otrzymaną w wyniku zapytania SQL. Jako pola wykorzystano dane z innych tabel, zatem sam widok nie posiada własnych danych, a jedynie takie, które dostarcza mu zapytanie SQL, PROCEDURA SKŁADOWANA (stored procedure) - procedura znajdująca się na serwerze w ramach SZBD i mogąca być w dowolnej chwili wywołana, WYZWALACZ (trigger) - procedura związana z określoną tabelą znajdująca na serwerze bazodanowym. Wyzwalacze uruchamiają się automatycznie w odpowiedzi na określone zdarzenie występujące w bazie danych np. dodanie albo aktualizacja rekordu.

10 Język SQL Większość operacji wykonywanych na bazie danych odbywa się za pomocą języka SQL (Structured Query Language) – Strukturalny Język Zapytań). W języku tym można wyróżnić trzy podstawowe zbiory instrukcji związane z pełnionymi funkcjami, są to: DDL (Data Definition Language) – zbiór instrukcji dla definiowania struktur danych używany przez administratora systemu do tworzenia wszelkich obiektów bazy danych. Na przykład: - baz danych (databases), - tabel (tables), - widoków (views), - indeksów (indexes), - wyzwalaczy (triggers), - procedur składowanych (stored procedures).

11 Język SQL DML (Data Manipulation Language) – zbiór instrukcji używany do przeglądania, wprowadzania i modyfikacji danych przez uprawnionego użytkownika. Na przykład polecenia: DCL (Data Control Language) – zbiór instrukcji związanych z ochroną danych, na przykład polecenia: SELECT, INSERT, UPDATE, DELETE. GRANT - przydział uprawnień, REVOKE - odbieranie uprawnień.

12 Uprawnienia Poniżej podano ogólną postać poleceń nadawania i odbierania uprawnień użytkownikowi: GRANT prawa ON nazwa_tabeli TO nazwa_uzytkownika REVOKE prawa ON nazwa_tabeli TO nazwa_uzytkownika prawa {SELECT,INSERT,UPDATE,DELETE,EXECUTE,ALL}

13 Typy danych W współczesnych bazach danych stosuje się, co najmniej kilka różnych typów danych. Najczęściej używane podano w tabeli poniżej. Pole do przechowywania daty i czasu TIMESTAMP pole do przechowywania czasu TIME typ znakowy o zmiennej długości maksymalnie n znaków VARCHAR(n) typ znakowy o stałej długości CHAR(n) Liczba dziesiętna z określoną liczbą cyfr m przed przecinkiem i po przecinku n NUMERIC(m,n) Liczby całkowite z przedziału od – do INTEGER Liczby całkowite z przedziału od –32768 do SMALLINT Dane dowolnego typu w formacie binarnym BLOB Zakres wartościTyp danych

14 Indeksy Kolejnym składnikiem bazy danych są indeksy. Indeksy mają za zadanie przyspieszenie wyszukiwania informacji. Indeksy tworzy się poleceniem: Indeks może być unikalny (UNIQUE), to znaczy taki, dla którego wartości w kolumnie się nie powtarzają. Wyłączyć działanie indeksu można poleceniem: Usunięcie indeksu odbywa się poleceniem: CREATE [UNIQUE] INDEX nazwa_indeksu ON nazwa_tabeli (lista kolumn określających index); DROP INDEX nazwa_indeksu; ALTER INDEX nazwa_indeksu INACTIVE ;

15 Integralność referencyjna Aby dane były poprawne muszą tworzyć integralną całość. Integralność danych powinna być zachowana podczas wszelkich ich modyfikacji. Jest to jeden z najpoważniejszych aspektów projektowania dobrego systemu baz danych Aby zapewnić odpowiednie połączenia (relacje) między wierszami tabel należy określić klucz podstawowy w tabeli nadrzędnej oraz klucz obcy w tabeli podrzędnej, odpowiadające sobie wiersze mają tę samą wartość klucza. Składnia polecenia jest następująca: ALTER TABLE nazwa_tabeli_podrzednej ADD CONSTRAINT nazwa_powiazania FOREIGN KEY (nazwa_pola) REFERENCES nazwa_tabeli_nadrzednej (nazwa_klucza_tabeli_nadrzednej) ON DELETE akcja;

16 Integralność referencyjna Słowo akcja określa, co stanie się z wierszami w tabeli podrzędnej po tym jak zajdzie usunięcie wiersza w tabeli nadrzędnej. Wyróżniamy cztery rodzaje akcji: 1.NO ACTION – nie pozwala usunąć wiersza w tabeli nadrzędnej, dopóki istnieją do niego odwołania w tabeli podrzędnej, 2.CASCADE – usuwanie kaskadowe, usunięcie wiersza z tabeli nadrzędnej jest jednoznaczne z usunięciem wszystkich wierszy w tabeli podrzędnej odwołujących się do usuwanego wiersza z tabeli nadrzędnej, 3.SET DEFAULT – usunięcie wiersza z tabeli nadrzędnej spowoduje ustawienie pola w tabeli podrzędnej odwołującego się tabeli nadrzędnej na wartość domyślną, 4.SET NULL – pole wiersza (klucz obcy) odwołującego się do usuwanego wiersza w tabeli nadrzędnej, w tabeli podrzędnej otrzyma wartość NULL.

17 Tabele systemowe Interbase i FireBird przechowują informacje o strukturze bazy danych w specjalnych tabelach systemowych w tak zwanym katalogu. Informacje z tabel systemowych można uzyskać tworząc odpowiednie zapytanie w języku SQL analogicznie jak to ma miejsce w przypadku zwykłych tabel. opis parametrów funkcji, ich pozycji, typu, długości, etc. RDB$FUNCTION_ARGUMENTS opis dodatkowych plików bazy danych oraz plików z kopią bazy RDB$FILES opis właściwości wszystkich kolumn tabeli RDB$FIELDS opis wymiarów tablicy zastosowanej jako typ dlakolumny RDB$FIELD_DIMENSIONS opis błędów procedur oraz wyjątków RDB$EXCEPTIONS opis tabel i kolumn z których korzystają inne obiekty bazy danych jako widoki, procedury, wyzwalacze,i kolumny wyliczane RDB$DEPENDENCIES opis bazy danych RDB$DATABASE informacje o ograniczeniach CHECK oraz o kolumnach NOT NULL RDB$CHECK_CONSTRAINTS Zawartość tabeli systemowej Tabela systemowa

18 Tabele systemowe opis ograniczeń integralności referencyjnej RDB$REF_CONSTRAINTS informacje o procedurach RDB$PROCEDURES opis parametrów procedury bazy danych RDB$PROCEDURE_PARAMETERS opis alokacji stron dla bazy danych RDB$PAGES opis dla indeksów prostych i złożonych RDB$INDICES opis indeksów złożonych z kilku kolumn RDB$INDEX_SEGMENTS informacje o generatorach RDB$GENERATORS opis funkcji zdefiniowanych przez użytkownika RDB$FUNCTIONS Zawartość tabeli systemowej Tabela systemowa informacje o prawach użytkowników RDB$PRIVILEGES opis zdefiniowanych wyzwalaczy RDB$TRIGGERS informacje o wyzwalaczu i jego komunikat RDB$TRIGGER_MESSAGES opis roli i właściwości roli RDB$ROLES opis tabel i widoków RDB$RELATIONS opis kolumn wszystkich tabel RDB$RELATION_FIELDS opis ograniczeń o integralności danych tabeli RDB$RELATION_CONSTRAINTS

19 Wyjątki Wyjątki są wywoływane przez system w wyniku powstania określonego błędu występującego w czasie pracy z bazą danych. Tworzy się je w następujący sposób: W skrypcie SQL wyjątki definiowane są przez wywołanie: CREATE EXCEPTION nazwa_wyjatku komunikat_o_bledzie ; EXCEPTION: WHEN SQLCODE numer_bledu DO EXCEPTION nazwa_wyjatku;

20 Transakcje Transakcja polega na wykonaniu pewnego ciągu poleceń, które mogą zakończyć się albo całkowitym wykonaniem i przejściem w nowy stan albo anulowaniem wszelkich zmian i pozostaniem w dotychczasowym stanie. Przykładem transakcji jest np. wypłata pieniędzy z konta bankowego. Transakcja rozpoczyna się poleceniem START TRANSACTION. W przypadku całkowitego poprawnego wykonania transakcji wywoływana jest funkcja COMMIT TRANSACTION, która zatwierdza wszystkie zmiany w bazie. W razie niepowodzenia wykonania jakiekolwiek części transakcji, wszelkie zmiany są anulowane poprzez wywołanie funkcji ROLLBACK.

21 Procedury zapamiętane Wyróżniamy dwa rodzaje procedur zapamiętanych: procedury wykonawcze, procedury wybierające, które występują w głównie w postaci zapytań języka SQL i zwracają zbiór wierszy. Dodatkową zaletą tych procedur jest ich fizyczne umieszczenie tylko na jednym komputerze, co w przypadku zmian powoduje konieczność modyfikacji kodu tylko w jednym, konkretnym miejscu, a nie dla każdego klienta.

22 Procedury zapamiętane Składowane procedury są przechowywane w pliku bazy danych. Umożliwiają one bezpośrednie manipulowanie danymi w bazie danych, bez generowania ruchu sieciowego. W odróżnieniu od tradycyjnych środowisk programistycznych, w których programy wykonują się u klienta, procedury składowane są wykonywane przez serwer bazy danych i wykonują się całkowicie na serwerze. Najprostszą metodą wykonania składowanej procedury jest użycie wyrażenia: Wywołanie procedury wybierającej możliwe jest z poziomu języka SQL poprzez odpowiednie zapytanie: EXECUTE PROCEDURE nazwa_procedury(parametry); SELECT * FROM nazwa_procedury(parametry);

23 Procedury zapamiętane Usunięcie procedury następuje po wydaniu polecenia: Procedury składowane można uruchamiać w następująco: z programów użytkowych i procedur składowanych; z wnętrza wyzwalacza; z wnętrza aplikacji, takiej jak na przykład C++Builder; jako zapytanie SELECT języka SQL. DROP PROCEDURE nazwa_procedury;

24 Procedury zapamiętane Procedura ma postać ciągu instrukcji języka proceduralnego. Do każdej procedury mogą być przekazane parametry. Procedura może nadawać wartości parametrom zwrotnym deklarowanym po klauzuli RETURNS. Wewnątrz procedury można używać zmiennych pomocniczych deklarowanych po klauzuli AS. Składowane procedury są tworzone za pomocą wyrażenia CREATE PROCEDURE języka SQL. Wyrażenie to ma następującą składnię: CREATE PROCEDURE nazwa_procedury [(parametry)] RETURNS [lista parametrów zwrotnych] AS [zmienne lokalne] BEGIN ciało procedury END

25 Procedury zapamiętane Nazwa procedury musi być unikalna w bazie danych. Składa się ona z ciągu liter, cyfr i znaków podkreślenia. Nazwa powinna rozpoczynać się od litery. Duże i małe litery w nazwie są nierozróżnialne. Lista parametrów jest ciągiem zmiennych, które są przekazywane do procedury z aplikacji wywołującej. Parametry te są wykorzystywane wewnątrz procedury. Lista parametrów zwrotnych reprezentuje wartości, które procedura może zwracać z powrotem do aplikacji wywołującej. Lista parametrów i lista parametrów zwrotnych mają następujący format: Nazwa_parametru_1 typ_parametru_1 [,Nazwa_parametru_2 typ_parametru_2,..]

26 Procedury zapamiętane Przekazywane oraz zwracane parametry znajdujące się w treści procedury muszą być dodatkowo poprzedzone znakiem dwukropka. Po słowie kluczowym AS można zadeklarować zmienne o zakresie lokalnym. Zmienne te są widoczne tylko wewnątrz procedury i są niszczone po zakończeniu jej działania. Zmienne lokalne deklaruje się po klauzuli AS przy pomocy wyrażenia DECLARE VARIABLE. Poniżej podano przykład deklaracji dwóch zmiennych. Typem parametru lub zmiennej lokalnej może być dowolny typ danych, oprócz typu BLOB i typów tablicowych. DECLARE VARIABLE nazwa CHAR(20); DECLARE VARIABLE kwota NUMERIC(12,2);

27 Procedury zapamiętane Poniżej podano dopuszczalne typy danych: dopuszczalny typ danych ::= SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION | DECIMAL | NUMERIC [(precyzja [,skala])] | DATE | TIME | TIMESTAMP | CHAR | VARCHAR [(INT)][CHARACTER SET WIN1250]

28 Procedury zapamiętane Ciało procedury rozpoczyna się słowem kluczowym BEGIN, a kończy się słowem END. Ciało procedury składa się z ciągu instrukcji języka SQL poprzeplatanych słowami języka proceduralnego przypominającego Pascal. Jest to ta część języka SQL, która umożliwia manipulowanie danymi. Umożliwia to, budowanie wyrażeń warunkowych oraz instrukcji pętli. Wewnątrz procedur można używać następujących polecenia języka SQL: INSERT UPDATE DELETE SELECT

29 Procedury zapamiętane SET TERM ^ ; CREATE PROCEDURE WARTOSC RETURNS ( R_ID_TOW INTEGER, R_TOWAR CHAR(20), R_WARTOSC NUMERIC(8, 2) ) AS BEGIN FOR SELECT ID_TOWARU, NAZWA_TOWARU, ILOSC*CENA FROM TOWARY INTO :R_Id_Tow, :R_Towar, :R_WARTOSC DO SUSPEND; END ^ SET TERM ; ^ COMMIT WORK; Jeżeli w bazie danych, jest umieszczona tabela TOWARY, to uruchomienie tej procedury następuje z programu narzędziowego IBConsole lub ISQL poleceniem: SELECT * FROM Wartosc;

30 Procedury zapamiętane Wynik działania procedury R_Id_TowR_TowarR_Wartosc 23Cukier Kawa Sok jabłkowy Napój Frugo Sok pomarańczowy975

31 Procedury zapamiętane Słowa kluczowe BEGIN i END mogą być również wykorzystane do zaznaczenia dowolnego bloku kodu wszędzie tam, gdzie wymagane jest użycie pojedynczego wyrażenia. Blok kodu składa się z ciągu instrukcji logicznie stanowiących jedną całość, taką jak na przykład instrukcja wykonywana wewnątrz pętli. Bloki kodu mogą być stosowane do grupowania instrukcji w dowolnych miejscach procedur. Bloki kodu BEGIN..END mogą być zagnieżdżane wewnątrz innych bloków. Blok kodu ma następującą składnię: BEGIN Wyrażenie SQL END

32 Procedury zapamiętane Instrukcja FOR SELECT..DO wykonuje blok kodu lub wyrażenie dla każdego wiersza zwróconego przez zapytanie SELECT. Polecenie SUSPEND zatrzymuje działanie procedury aż do momentu pobrania kolejnego wiersza z tabeli. Składnia instrukcji FOR SELECT jest następująca: FOR SELECT * | Lista atrybutów FROM Nazwa tabeli | Lista polaczonych tabel WHERE Warunek wyboru wierszy INTO Lista parametrów zwrotnych> DO BEGIN Ciag Instrukcji; SUSPEND; END

33 Procedury zapamiętane Podobnie jak w innych językach programowania, przy tworzeniu procedury składowanej można posłużyć się wyrażeniem wykonywanym warunkowo. Służy do tego instrukcja IF..ELSE. Struktura tej instrukcji jest następująca: Jeżeli warunek jest prawdziwy, to wykonywane jest wyrażenie SQL_1, w przeciwnym przypadku realizowane jest wyrażenie SQL_2. IF (warunek) THEN Wyrazenie SQL_1; ELSE Wyrazenie SQL_2;

34 Procedury zapamiętane Pętla WHILE działa według podobnej zasady jak w języku C. Ogólna struktura tej pętli jest następująca: Wyrażenie SQL jest tak długo powtarzane jak długo warunek jest prawdziwy. Wyrażenie powinno zawierać kod, który sprawi, że warunek sterujący działaniem pętli przyjmie ostatecznie wartość fałszywą. Jeżeli ten kod zostanie pominięty, to pętla będzie wykonywana w nieskończoność, co będzie wyglądało jak zawieszenie się programu. WHILE(warunek)wyrazenie_SQL;

35 Procedury zapamiętane SET TERM ^ ; CREATE PROCEDURE CENY ( P_NOWA_CENA NUMERIC(8, 2), P_STATUS CHAR(10) ) RETURNS ( R_STATUS CHAR(10), R_NAZWA CHAR(12), R_CENA_NETTO NUMERIC(8, 2), R_CENA_SPRZED NUMERIC(8, 2), R_VAT NUMERIC(8, 2) ) AS DECLARE VARIABLE i INTEGER; DECLARE VARIABLE Cen NUMERIC(8, 2); BEGIN i = 1; WHILE (i < 3) DO

36 Procedury zapamiętane BEGIN FOR SELECT 'Stara cena', NAZWA_TOWARU, CENA, CENA*(1+VAT), VAT FROM TOWARY INTO :R_Status, :R_Nazwa, :R_Cena_Netto, :R_Cena_Sprzed, :R_VAT DO BEGIN IF (i=2) THEN BEGIN Cen = R_Cena_Netto; R_Status = P_Status; R_Cena_Netto = Cen * P_Nowa_Cena; R_Cena_Sprzed = Cen * P_Nowa_Cena * (1 + R_VAT)*1.05; END SUSPEND; END i = i + 1; END END ^ SET TERM ; ^ COMMIT WORK;

37 Procedury zapamiętane Po uruchomieniu procedury poleceniem: Otrzymuje się w wyniku następującą tabelę: SELECT * FROM CENY(1.2,Nowa cena); R_StatusR_NazwaR_Cena_NettoR_Cena_SprzedVAT Stara cenaCukier Stara cenaKawa Stara cenaOlej sojowy Stara cenaKakao Stara cenaMargaryna Nowa cenaCukier Nowa cenaKawa Nowa cenaOlej sojowy Nowa cenaKakao Nowa cenaMargaryna

38 Procedury zapamiętane Procedury zapamiętane powinny być stosowane w następujących przypadkach: Jeżeli operacja może być wykonana w całości na serwerze, bez wymogu pozyskania informacji od użytkownika podczas trwania operacji. Jeśli operacja wymaga przetworzenia dużej ilości wierszy, co mogłoby być nadmiernie kosztowne w kategoriach ruchu sieciowego. Jeśli operacja musi być wykonywana okresowo lub często. Jeśli operacja jest wykonywana przez wiele różnych modułów lub procesów wewnątrz aplikacji lub przez różne aplikacje. Jeśli logika operacji często się zmienia.

39 Projekt – model logiczny Legenda: NO – pole typu autoincrement, używane zazwyczaj dla pól id, VA40 – pole typu tekstowego VARCHAR o maksymalnej długości 40 znaków A5 – pole typu tekstowego CHAR o maksymalnej długości 5 znaków I – pole typu liczba całkowita (INTEGER) F – pole typu liczba rzeczywista (FLOAT) D – pole typu data (DATE) BL – pole typu logicznego (BOOLEAN) PI – primary identifier – klucz główny M – mandatory – pole obowiązkowe

40 Projekt – rodzaje relacji Rodzaje relacji: Relacja 1:1 – jeden do jednego Przykład: relacja pomiędzy tabelą pracownik i samochód przy założeniu, że pracownik może mieć tylko jeden samochód i każdy samochód jest przyporządkowany tylko do jednego pracownika Relacja 1:N – jeden do wielu Przykład: klient może dokonać wielu rezerwacji. Z drugiej strony każda rezerwacje dotyczy tylko jednego konkretnego klienta. Relacja N:N – wiele do wielu Przykład: zamawiającym pozycję z menu jest klient posiadający rezerwacje, może on zamówić dowolnie wiele pozycji, z drugiej strona każda z pozycji menu może być zamówiona przez wielu klientów (posiadających rezerwacje) naraz. Okrąg oznacza opcjonalność danej relacji np. klient może ale nie musi zamówić czegoś z menu restauracyjnego.

41 Projekt – model fizyczny W modelu fizycznym typy danych zostały odzwierciedlone na rzeczywiście występujące w programie MS Access. Relacje zostały uwzględnione w postaci tzw. kluczy obcych, które pozwalają na łączenie tabel ze sobą np. w tabeli Rezerwacje pojawiły się pola id_klienta, id_pokoju i id_pracownika. Dla relacji N:N (wiele do wielu) dodatkowo tworzone są pośrednie tabele (w przypadku naszego projektu powstała tabela ZamowieniaMenu). - primary key – klucz główny - foreign key – klucz obcy


Pobierz ppt "Systemy Baz Danych Wykład 1 Wojciech Pieprzyca. Organizacja zajęć 7 zajęć wykładowych (I połowa semestru) 7 zajęć projektowych (I połowa semestru) Na."

Podobne prezentacje


Reklamy Google