SIECI KOMPUTEROWE I BAZY DANYCH

Podobne dokumenty
SIECI KOMPUTEROWE I BAZY DANYCH

SIECI KOMPUTEROWE I BAZY DANYCH

SIECI KOMPUTEROWE I BAZY DANYCH

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

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

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

Wykład 8. SQL praca z tabelami 5

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Autor: Joanna Karwowska

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

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

Przykładowa baza danych BIBLIOTEKA

Wykład 05 Bazy danych

Język SQL, zajęcia nr 1

Podstawy technologii WWW

Język SQL, zajęcia nr 2

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

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

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

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Transformacja modelu ER do modelu relacyjnego

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

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

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

WPROWADZENIE DO BAZ DANYCH

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

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

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

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

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

Bazy danych Ćwiczenia projektowe

Bazy danych. Polecenia SQL

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy danych 9. SQL Klucze obce Transakcje

Relacyjne bazy danych. Podstawy SQL

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

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

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

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

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

Paweł Rajba

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

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

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

1 Wstęp do modelu relacyjnego

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Baza danych. Baza danych to:

Ćwiczenie zapytań języka bazy danych PostgreSQL

PHP: bazy danych, SQL, AJAX i JSON

Bazy danych. Dr inż. Paweł Kasprowski

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych - Materiały do laboratoriów VIII

Oracle11g: Wprowadzenie do SQL

STWORZENIE BIBLIOTEKI SŁUŻĄCEJ DO WCZYTYWANIA

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

Wykład 6. SQL praca z tabelami 3

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco:

Relacyjne bazy danych. Podstawy SQL

Wykład 2. Relacyjny model danych

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

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

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

Aspekty aktywne baz danych

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

CREATE USER

Optymalizacja wydajności SZBD

Bazy danych - wykład wstępny

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

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

Bazy danych. dr inż. Arkadiusz Mirakowski

Model relacyjny. Wykład II

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

Microsoft Access materiały pomocnicze do ćwiczeń cz. 1

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

Projektowanie systemów baz danych

BAZY DANYCH. CREATE TABLE dbo.wydzialy (ID INT, Akronim VARCHAR(4) NOT NULL, Wydzial VARCHAR(30) NOT NULL, CONSTRAINT Kluczyk PRIMARY KEY(ID) )

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Przykłady normalizacji

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

Struktura drzewa w MySQL. Michał Tyszczenko

Wstęp do relacyjnych baz danych. Jan Bartoszek

Grupowanie i funkcje agregujące

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

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

ACESS- zadania z wykorzystaniem poleceń SQL

Transkrypt:

KATEDRA MECHANIKI I ROBOTYKI STOSOWANEJ WYDZIAŁ BUDOWY MASZYN I LOTNICTWA, POLITECHNIKA RZESZOWSKA SIECI KOMPUTEROWE I BAZY DANYCH Laboratorium DB2: TEMAT: Relacyjne bazy danych Cz. I, II

Cel laboratorium Celem laboratorium jest zapoznanie studentów z podstawami relacyjnych baz danych Wstęp Relacyjne bazy danych są naturalnym rozszerzeniem koncepcji tabeli. Relacyjne bazy danych zapobiegają konieczności powielania tych samych danych w wielu tabelach. Aktualizacja tak skonstruowanej bazy jest nieskuteczna i uciążliwa. Przykładem tabel, gdzie mielibyśmy do czynienia z nadmiarem danych są tabele przechowujące dane sprzedażowe. W tabeli transakcje chcemy mieć dostęp do danych o kontrahencie, który brał w niej udział. Dodanie ich bezpośrednio w tej tabeli spowoduje redundancje danych i ma negatywny wpływ na proces ich aktualizacji. Takie podejście uznaje się za błędne. Lepszym rozwiązaniem jest wydzielenie danych o klientach do osobnej tabeli. Wtedy w tabeli transakcje wystarczy się odwołać do odpowiednich rekordów tabeli klienci. Takie podejście sprawia, że tylko w jednym miejscu aktualizujemy dane adresowe kontrahentów. Przykład takiego podejścia pokazano na rys. 1 Rysunek 1: Przykład relacji. (Rys. stworzony dzięki oprogramowaniu MySQL Workbanch) Jak wskazano w [1], relacyjna baza danych opera się na kilku zasadach: wszystkie dane w relacyjne bazie danych są opart o dwuwymiarowe tabele po wprowadzeniu danych możliwe jest ich porównywanie (nawet gdy pochodzą z innych tabel) czy wiązanie wykonywanie wszystkich operacji oparte jest na logice. By mówić o relacji, potrzebne są co najmniej dwie tabele, między którymi istnieje relacja (więź) (patrz rys. 1). Wyróżnia się kilka rodzajów relacji: jeden-do-jednego relacja ta występuje wtedy, gdy pojedynczemu rekordowi w jednej tabeli odpowiada pojedynczy rekord w drugiej tabeli. W rzeczywistych zastosowaniach

relacji jeden-do-jeden jest bardzo rzadka. relacja jeden-do-wielu relacja ta zachodzi, gdy pojedynczemu rekordowi z jednej tabeli odpowiada jeden lub więcej rekordów z drugiej tabeli. Rysunek 2: Przykład relacji jeden-do-wielu. (Rys. stworzony dzięki oprogramowaniu MySQL Workbanch) relacja wiele-do-wielu wielu rekordom z pierwszej tabeli odpowiada wiele rekordów z drugiej tabeli. Taka relacja wymiaga normalizacji, która polega na dodaniu nowej tabeli. Przykład znormalizowanej relacji wiele-do-wielu pokazano na rys. 3. Rysunek 3: Przykład znormalizowanej relacji wiele-do-wielu. (Rys. stworzony dzięki oprogramowaniu MySQL Workbanch) Tworzenie relacji jeden-do-wielu Na rys. 2 pokazano przykład relacji jeden-do-wielu pomiędzy tabelami książka i wydawnictwo. Patrząc na relacje od strony wydawnictwa, należy zauważyć że wydawnictwo może wydać wiele książek. Patrząc od strony książki, relacja jest następująca: wiele książek może być wydanych przez jedno wydawnictwo. W praktyce, relacja jeden-do-wielu jest tworzona poprzez dodanie dodatkowej kolumny w tabeli, która w relacji występuje po stronie wiele. Kolumna ta ma własność klucza obcego (FK, foreign key) tj. przetrzymuje wartość klucza głównego (PK, Primary key) odpowiedniego rekordu innej tabeli. Pierwszym krokiem prowadzącym do utworzenia relacji widocznej na rys. 2 jest wykonanie zapytania SQL tworzącego tabelę Wydawnictwo

CREATE TABLE Wydawnictwo ( ID INT PRIMARY KEY, Nazwa VARCHAR(45), Adres VARCHAR(45) ); Następnym krokiem tworzenia relacji jest utworzenie tabeli Ksiazka, w której zostanie dodana dodatkowa kolumna, mająca własności klucza FK. W tym przypadku będzie to kolumna o nazwie W_ID, która będzie się odnosi się do numeru ID w tabeli Wydawnictwo. Dlatego typ kolumny W_ID to INT, gdyż taki typ posiada kolumna ID (będąca PK) w tabeli Książka. Stąd zapytanie SQL tworzące tabelę Ksiazka ma postać CREATE TABLE Ksiazka ( ID INT PRIMARY KEY, Tytul VARCHAR(45), LiczbaStr tinyint, W_ID INT ); Ostatnim elementem tworzenia relacji jest dodanie do tabeli Ksiazka ograniczenia klucza obcego. Schemat takiego zapytania ma postać ALTER TABLE tabelaa ADD CONSTRAINT nazwa_ograniczenia FOREIGN KEY (kolumnafk) REFERENCES tabelab(kolumnapk)[on DELETE CASCADE ON UPDATE CASCADE] gdzie nazwa_ograniczenia to nazwa identyfikujące ograniczenia a tabelaa to nazwa tabeli która zawiera kolumnę klucza obcego kolumnafk. Występujące w zapytaniu tabelab i kolumnapk to odpowiednio nazwa tabeli której wartości klucza głównego znajdą się w kolumnie kolumnafk oraz nazwa kolumny klucza głównego tabeli tworzącej relacje (tj. tabeli o nazwie tabelab). Opcjonalne słowa kluczowe ON DELETE CASCADE i ON UPDATE CASCADE zapewniają integralność relacji. W omawianym przypadku, zapytanie SQL dodające ograniczenia klucza obcego ma postać ALTER TABLE ksiazka ADD constraint ks_fk_w FOREIGN KEY (W_ID) REFERENCES wydawnictwo(id) ON DELETE CASCADE ON UPDATE CASCADE Alternatywą do dodawania referencji po utworzeniu obydwu tabel jest utworzenie referencji w momencie tworzenia tabeli ksiazki

CREATE TABLE Ksiazka ( ID INT PRIMARY KEY, Tytul VARCHAR(45), LiczbaStr tinyint, W_ID INT, CONSTRAINT ks_fk_w FOREIGN KEY (W_ID) REFERENCES wydawnictwo(id) ON DELETE CASCADE ON UPDATE CASCADE ); Tak utworzona relacja dba o to, by dodawane rekordy w tabeli Ksiazka odnosiły się do odpowiedniego rekordy w tabeli wydawnictwa. Usuwanie wierszy Do usuwania wierszy w SQL służy polecenie DELETE, a schemat jego użycia ma postać DELETE FROM nazwa_tabeli WHERE nazwa_kolumny=wartosc Przykładem użycia polecenia DELETE jest usunięcie rekordu o ID równym 1 z tabeli książka DELETE FROM ksiazki WHERE ID=1 Tworzenie relacji wiele-do-wielu Relacja wiele-do-wielu nie jest możliwa do odwzorowania w relacyjnej bazie danych. Dlatego każda relacja wiele-do-wielu podlega procedurze normalizacji. W jej wyniku relacja wiele-do-wielu jest zamieniana na dwie relacje jeden-do-wielu (rys. 3). Takie działanie wymusza utworzenie trzeciej tabeli, która będzie przetrzymywać dwa klucze obce. Jeden z nich odnosi się do klucza głównego jednej, a drugi do klucza głównego drugiej tabeli będących w pierwotnej relacji. Na rys. 3 pokazano znormalizowaną relacje wiele-do-wielu. Tabela Zapis zawiera dwa klucze obce. Jeden z nich, przechowywany w kolumnie Student_ID przechowuje wartości kolumny ID z tabeli Student, która jest jej kluczem głównym. Drugi klucz obcy w tabeli Zapisy tj. Przedmiot_ID, przechowuje wartości klucza głównego tabeli Przedmiot, który zdefiniowano na kolumnie ID tejże tabeli. Po operacji normalizacji relacji wiele-do-wielu jej odwzorowywana w relacyjnej bazie danych jako dwie relacje wiele-do-jednego. Stąd jej utworzenie jest tożsame z napisaniem dwóch ograniczeń klucza obcego (CONSTRAINT FOREGINE KEY ). W przypadku modelu bazy danych, pokazanym na rys. 3, ograniczenie klucza obcego występuje pomiędzy tabelami Zapisy i Student oraz tabelami Zapisy i Przedmiot. Wyszukiwanie informacji w relacyjnej bazie danych Rozważmy fragment bazy danych Nordhwind pokazany na rys. 4

Rysunek 4: Fragment bazy danych Northwind z zaznaczonymi kluczami głównymi oraz obcymi (Rys. stworzony dzięki oprogramowaniu MySQL Workbanch) Rozważany fragment zawiera cztery tabele, z których pomiędzy tabelami products (produkty) i suppliers (producenci) występuje relacja jeden-do-wielu a pomiędzy tabelami products i orders (zamówienia) występuje relacja wiele-do-wielu normalizowana przez tabelę order details. Rysunek 5: Zestawienie produktów z ich producentem W celu zestawienia nazwy produktów (z tabeli products) z nazwą producenta (z tabeli suppliers), co pokazano na rys. 5, należy wykonać następujące zapytanie SQL select products.productname, suppliers.companyname from products, suppliers where products.supplierid=suppliers.supplierid; gdzie fragment products.supplierid=suppliers.supplierid wynika z istnienia relacja zdefiniowanej pomiędzy kluczem obcym tj. w tabeli products a kluczem głównym (kolumna) tabeli suppliers. Uwaga: W celu jednoznacznej interpretacji pochodzenia kolumny należy używać notacji z kropką tj. nazwatabeli.kolumna

Złączenia Zapoznaj się ze słowem kluczowym join (języka SQL) i jego modyfikacjami korzystając z zasobów internetowych, np.: http://www.w3schools.com/sql/sql_join.asp http://www.sql-kursy.pl/ms-sql-kurs-join-union-except-2.html http://www.sql-join.com/ Zadania do wykonania z użyciem join znajdują się w części III Zadania do wykonania CZĘŚĆ I Uwaga 1.1: Dane do zadań zależą od grupy. Patrz tabela 1. Uwaga 1.2: W celu połączenia z bazą użyj aplikacji HeidiSQL oraz połącz się z bazą MySQL działającą w sieci lokalnej. Połączenie z Bazą dotyczące zadanie 1.1-1.2 Host: 192.168.11.252 port: 3306, user: stud_medi, hasło: medi, baza: medi Zadania 1.1 Zamodeluj relacje jeden-do-wielu którą podano w tab. 1.Napisz zapytania do bazy danych tworzącą dwie tabele oraz relacje (jeden do wielu) pomiędzy nimi. Wprowadź kilka rekordów do każdej z tabeli, zaczynając od tej, która w relacji jest po stronie jeden. 1.2 Zaprojektuj dwie tabele które łączy relacja wiele-do-wielu i dokonaj jej normalizacji. Nazwy tabel podano w tab.1. Wprowadź kilka rekordów do każdej z tabel tej relacji. I,IV, II,V III,VI Zad 1.1 Klient, Zamówienie Logowanie, Użytkownik Przedmiot, student Zad 1.2 EgzemplarzKsiazki, Czytelnik Samochod, Klient Maszyna,Element Tab 1. Dane do zadań z cz. I

CZĘŚĆ II Uwaga 2.1: W celu połączenia z bazą użyj aplikacji HeidiSQL oraz połącz się z bazą MySQL działającą w sieci lokalnej. Połączenie z Bazą dotyczące zadanie 2.1-2.5 Host: 192.168.11.252 port: 3306, user: stud_medi, hasło: medi, baza: Northwind Uwaga 2.1. Do tabeli order details odwołujemy się w SQL za pomocą `. tj. `order details`, np. `order details`.orderid Zadania 2.1 Zapoznaj się z modelem bazy danych Northwind pokazanym w pliku Northwind_Model.pdf utworzonym za pomocą programu MySQL Workbanch. 2.2 Policz ile produktów dostarcza poszczególny producent. W odpowiedzi wyświetl nazwę producent oraz ilość dostarczanych produktów. 2.3 Jaki jest średni zapas produktów należących do poszczególnych kategorii 2.4 Ile zamówień złożył dany klient (wyświetl: ID klient, nazwę klienta oraz liczbę zamówień ) 2.5 Napisz własne zapytanie do bazy danych CZĘŚĆ III Uwaga 3.1: W celu połączenia z bazą użyj aplikacji HeidiSQL oraz połącz się z bazą MySQL działającą w sieci lokalnej. Połączenie z Bazą dotyczące zadanie 3.1-3.5 Host: 192.168.11.252 port: 3306, user: stud_medi, hasło: medi, baza: Northwind Zadania 3.1. Opisz w kilku zdaniach jak działa słowo kluczowe join 3.2. Dokonaj złączenia tabel customers oraz orders korzystając z różnych wariantów złączenia. Wyświetl kolumnę CompanyName z tabeli Customers oraz EmployeeID i OrderDate z tabeli orders 3.3. Zinterpretuj różnicę w ilości zwróconych wierszy dla różnych wariantów złączenia 3.4. Wykonaj zapytania 2.2,2.3 i 2.4 korzystając ze złączeń

3.5. Dodatkowe: Zapytanie złożone: podaj listę produktów które znalazły się w zamówieniu, dla którego wartość kolumny Freight tabeli orders jest największa. (Uwaga. Największej wartości nie można wpisać jawnie. Ma zostać wyznaczona w zapytaniu) Bibliografia [1] Giergiel J, Giergiel M, K. Kurc, Sieci komputerowe i bazy danych, OWPRz 2010 [2] MySQL Documentation (http://dev.mysql.com/doc) [3] Baza danych Northwind na różne bazy danych: https://code.google.com/p/northwindextended