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

Autor: Joanna Karwowska

Wykład 8. SQL praca z tabelami 5

Język SQL, zajęcia nr 1

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Wykład 05 Bazy danych

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

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

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

Podstawy technologii WWW

Język SQL, zajęcia nr 2

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Transformacja modelu ER do modelu relacyjnego

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

WPROWADZENIE DO BAZ DANYCH

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Przykładowa baza danych BIBLIOTEKA

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Bazy danych Ćwiczenia projektowe

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

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

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

Bazy danych 9. SQL Klucze obce Transakcje

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

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

PHP: bazy danych, SQL, AJAX i JSON

Bazy danych. Polecenia SQL

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

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

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

Bazy danych - wykład wstępny

Bazy danych - Materiały do laboratoriów VIII

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

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

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

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

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

Aspekty aktywne baz danych

STWORZENIE BIBLIOTEKI SŁUŻĄCEJ DO WCZYTYWANIA

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

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

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

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

Baza danych. Baza danych to:

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

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Podstawowe zagadnienia z zakresu baz danych

Projektowanie systemów baz danych

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

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

Wykład 2. Relacyjny model danych

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

Bazy Danych i Usługi Sieciowe

Relacyjne bazy danych. Podstawy SQL

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

Dr Michał Tanaś(

Systemy baz danych. mgr inż. Sylwia Glińska

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

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

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

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

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

Tworzenie modelu logicznego i fizycznego danych.

Bazy danych i usługi sieciowe

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

Bazy danych. Dr inż. Paweł Kasprowski

Database Connectivity

Przykłady normalizacji

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

Baza danych. Modele danych

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

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

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

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Mechanika i Budowa Maszyn II stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Instalacja MySQL.

Bazy danych. dr inż. Arkadiusz Mirakowski

Wprowadzenie do baz danych

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

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

Technologia informacyjna

Paweł Rajba

Autor: Joanna Karwowska

2017/2018 WGGiOS AGH. LibreOffice Base

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 o sprzedażowe. W tabeli transakcje chcemy mieć dostęp do danych o kontrahencie, który brał w niej udział, jednak nie należy dodawać do tabeli transakcje kolumn dotyczących danych teleadresowych klienta. Takie podejście prowadzi do refundacji danych, co ma negatywny wpływ na proces ich aktualizacji. Lepszym rozwiązaniem jest wydzielenie danych o klientach do osobnej tabeli i w tabeli transakcje odwoływać się do odpowiednich krotek 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). Istnieje 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 Gdy 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. W tej relacji 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 obcego. 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

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 Database browser oraz połącz się z bazą MySQL działającą w sieci lokalnej. gdzie X to cyfra podana przez prowadzącego Zadania Dane dostępu do bazy Host: 192.168.11.252 Port: 3306 Użytkownik: studx Hasło: studx Baza: studx lub employees 2.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. 2.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. Dane dostępu do bazy Host: 192.168.11.252 Port: 3306 Użytkownik: studx Hasło: studx Baza: studx lub employees 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ą Northwind [3] użyj aplikacji Database browser oraz połącz się z bazą MySQL działającą w sieci lokalnej. gdzie X to cyfra podana przez prowadzącego 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 Sprawozdanie Dane dostępu do bazy Host: 192.168.11.252 Port: 3306 Użytkownik: studx Hasło: studx Baza: Nordhwind Sprawozdanie powinno zawierać polecenie języka SQL realizujące dane zadanie oraz wynik jego działania 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