Bazy Danych. Ćwiczenie 4: Zapoznanie się z wybranym programem wspomagającym projektowanie relacyjnych baz danych



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

Autor: Joanna Karwowska

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Projektowanie systemów baz danych

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

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Bazy danych i usługi sieciowe

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

Bazy Danych i Usługi Sieciowe

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

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

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

Wykład 4. SQL praca z tabelami 1

Wykład 8. SQL praca z tabelami 5

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

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Bazy Danych. opracował: dr inż. Artur Gramacki (a.gramacki@issi.uz.zgora.

Język SQL, zajęcia nr 2

Bazy danych 9. SQL Klucze obce Transakcje

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych. Polecenia SQL

SIECI KOMPUTEROWE I BAZY DANYCH

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Aspekty aktywne baz danych

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Język SQL, zajęcia nr 1

Praca z programami SAS poza lokalną siecią komputerową UZ. Zestawienie tunelu SSH oraz konfiguracja serwera proxy w przeglądarce WWW

Bazy danych 7. SQL podstawy

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

Bazy danych 10. SQL Widoki

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

Wykład 05 Bazy danych

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

Wyzwalacze (triggery) Przykład

Projektowanie baz danych za pomocą narzędzi CASE

Podstawy technologii WWW

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Tworzenie modelu logicznego i fizycznego danych.

Bazy danych 9. Klucze obce Transakcje

SIECI KOMPUTEROWE I BAZY DANYCH

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

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

Bazy danych - Materiały do laboratoriów VIII

Praca z programami SAS poza lokalną siecią komputerową UZ. Zestawienie tunelu SSH oraz konfiguracja serwera proxy w przeglądarce WWW

Laboratorium nr 1. Temat: Wprowadzenie do MySQL-a

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

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

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

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

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

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Paweł Cieśla. Dokumentacja projektu

Widok Connections po utworzeniu połączenia. Obszar roboczy

Wykład 5: PHP: praca z bazą danych MySQL

Bazy danych 5. Samozłaczenie SQL podstawy

Kurs. Podstawy MySQL

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

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

CREATE USER

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

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

Bazy danych. Dr inż. Paweł Kasprowski

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

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

Wykład 5. SQL praca z tabelami 2

Imię i Nazwisko Data Ocena. Laboratorium 7

PODSTAWY BAZ DANYCH. 5. Modelowanie danych. 2009/ Notatki do wykładu "Podstawy baz danych"

Wymagania dotyczące projektu do przedmiotu: Systemy baz danych 2 / Bazy danych projekt 1 (P)

LAB2. Dalsze ćwiczenia z podstaw języka SQL (CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT)

Przykładowa baza danych BIBLIOTEKA

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

Tworzenie, modyfikowanie i usuwanie tabel

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

Administracja i programowanie pod Microsoft SQL Server 2000

Instalacja MySQL.

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

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

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

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

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

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

Bazy danych - wykład wstępny

Przygotowanie środowiska pracy dla bazy MySQL z wykorzystaniem XAMPP Portable Lite oraz MySQL-Front

Tworzenie baz danych i tabel

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

- Przedmiot kończy się egzaminem - Egzamin ma formę testu teoretycznego

Bazy danych Ćwiczenia projektowe

Oracle Application Express

Wykład 6. SQL praca z tabelami 3

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

6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

Transkrypt:

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Bazy Danych Ćwiczenie 4: Zapoznanie się z wybranym programem wspomagającym projektowanie relacyjnych baz danych opracował: dr inż. Artur Gramacki (a.gramacki@issi.uz.zgora.pl) 1. Uwagi wstępne W tym ćwiczeniu zapoznasz się z wybranym programem wspomagającym projektowanie relacyjnych baz danych. Program ten to Toad Data Modeler (w skrócie: TDM) w wersji darmowej (posiada więc pewne ograniczenia, w porównaniu do wersji komercyjnej). Będziemy używali wersji 2, która jest już dość stara. Celowo nie sugerujemy używania wersji najnowszej (zainteresowani studenci mogą ją sobie samodzielnie pobrać ze strony producenta), gdyż ta starsza w zupełności spełnia wszelkie potrzeby początkującego adepta baz danych i nie jest nadmiernie rozbudowana o funkcjonalności, które na pewno nie będą nam potrzebne na zajęciach. Innym godnym polecenia programem (całkowicie darmowym) jest MySQL Workbench (https://www.mysql.com/products/workbench), który posiada bardzo rozbudowaną funkcjonalność, która może zaspokoić potrzeby nawet najbardziej zaawansowanego użytkownika bazy danych MySQL. 2. Na początek należy utworzyć bardzo prostą bazę danych, składającą się z dwóch tabel połączonych ze sobą kluczem obcym. Na poniższym rysunku pokazano tą strukturę. Uwagi dotyczące modelu: para klucz główny - klucz obcy to najbardziej podstawowy i najczęściej stosowany w praktyce sposób łączenia ze sobą tabel relacyjnych, klucze główne są stworzone z opcją AUTO_INCREMENT, która pozwala na automatyczne generowanie unikalnych wartości dla tych kluczy, 1

większość kolumn ma ograniczenie not null, w praktyce nie zawsze tak musi być, kolumna pesel ma założone ograniczenie unique, kolumna plec jest typu enum, dopuszczalne wartości to M oraz K, kolumna stypendium ma zdefiniowaną wartość domyślną (liczba 0), klucz obcy jest typu NULL, co oznacza, że rejestrując dane studentów nie musimy obowiązkowo wskazywać miejscowości. Symbolicznie jest to oznaczone kołeczkiem na linii przerywanej łączącej obie tabele, PESEL jest zawsze liczbą 11. cyfrową, stąd taki a nie inny typ danych, kolumna stypendium ma typ decimal(8,2), co oznacza, że można tam wpisać liczbę mającą 6 cyfr przed kropką dziesiętną oraz 2. cyfry po kropce dziesiętnej (w sumie 8 cyfr). 3. Szczegóły tworzenia modelu W programie TDM utworzyć nowy model. Z dostępnej listy wybrać MySQL 5. Wstawić dwie puste tabele. 2

Kliknąć na każdą tabelę i rozpocząć definiowanie poszczególnych tabel. Większość czynności wykonuje się tutaj intuicyjnie. Definiując ograniczenie dla kolumny plec skorzystać z podpowiedzi pokazanej na rysunku niżej. W czasie tworzenia kluczy obcych zaznaczyć odpowiednią opcję pozwalającą wykorzystać istniejącą w MySQL funkcjonalność AUTO_INCREMENT (automatyczne generowanie unikalnych wartości dla klucza głównego w czasie wstawiania nowych rekordów do tabeli). Na rysunku poniżej pokazano szczegóły. 3

W tabeli nie tworzyć samodzielnie kolumny miejscowosc_id. Zostanie ona utworzona automatycznie, gdy stworzymy relację między tabelami. Będzie to tzw. relacja nieidentyfikująca. Istnieją też relacje identyfikujące, przykład ich wykorzystania będzie podany niżej. Należy z paska narzędziowego wybrać pozycję zaznaczoną czerwonym prostokątem i przeciągnąć ją od tabeli miejscowości do tabeli studenci. Po utworzeniu relacji musimy zmodyfikować ręcznie kolumnę miejscowosc_id i usunąć ograniczenie NOT NULL. Ponadto musimy zdefiniować ręcznie nazwę ograniczenia (miejscowosci_studenci_fk). Używana wersja programu TDM ustawia domyślnie ustawia tzw. mechanizm składowania na MyISAM. Nie jest to zbyt dobre w praktyce rozwiązanie (mocno przestarzałe funkcjonalnie) i 4

dlatego musimy ustawić jako domyślny mechanizm InnoDB. Wówczas tworzone klucze obce będą rzeczywiście działały (mechanizm MyISAM nie obsługuje kluczy obcych. W obecnych czasach ich brak należy uznać za niedopuszczalny). W ramach samodzielnego studiowania przedmiotu doczytaj w dostępnej literaturze co to są mechanizmy składowania, jakie są dostępne w poszczególnych wersjach serwera MySQL i czym się od siebie różnią (oprócz wspomnianych wyżej mechanizmów, MySQL oferuje jeszcze kilka innych, rzadziej używanych w praktyce, choć mających ciekawe właściwości). Po zdefiniowaniu wszystkich elementów naszego modelu możemy przejść do najważniejszej umiejętności programu TDM a mianowicie do automatycznego wygenerowania kompletnego i całkowicie zgodnego ze standardem SQL (oferowanym przez serwer MySQL) skryptu tworzącego model. Wchodzimy więc do meny Model -> Script Generating. Na trzech kolejnych zrzutach ekranów zaznaczamy, jakie pozycje powinniśmy zaznaczyć. Zwróćmy uwagę, że domyślnie TDM używa odwrotnych apostrofów (ang. backtick) do otaczania nimi wszystkich identyfikatorów. Można z nich zrezygnować, jeżeli nie planujemy w naszej bazie używać dziwnych nazw dla obiektów (np. słów zarezerwowanych w języku SQL, w praktyce raczej powinniśmy unikać takich sytuacji, zysk jest niewielki, a mogą pojawić się nieoczekiwane kłopoty). Zapis z użyciem odwrotnych apostrofów jest nieco uciążliwy w praktyce i można rozważyć ich nieużywanie (ale trzeba to zrobić świadomie). Po wciśnięciu guzika Generate, TDM rozpocznie najpierw weryfikację formalną modelu, gdy są jakieś błędy lub ostrzeżenia wygeneruje stosowne komunikaty. Następnie utworzony zostanie wynikowy skrypt, który pokazujemy poniżej. 5

6

drop table IF EXISTS `miejscowosci`; drop table IF EXISTS `studenci`; Create table `studenci` ( `stud_id` Int NOT NULL AUTO_INCREMENT, `imie` Varchar(30) NOT NULL, `nazwisko` Varchar(30) NOT NULL, `pesel` Decimal(11,0) NOT NULL, `dat_urodzenia` Date NOT NULL, `plec` Enum('M', 'K') NOT NULL, `stypendium` Decimal(8,2) NOT NULL DEFAULT 0, `uwagi` Varchar(100), `miejscowosc_id` Int, UNIQUE (`pesel`), Primary Key (`stud_id`)) ENGINE = InnoDB; Create table `miejscowosci` ( `miejscowosc_id` Int NOT NULL, `nazwa` Varchar(30) NOT NULL, `liczba_mieszkancow` Int, UNIQUE (`nazwa`), Primary Key (`miejscowosc_id`)) ENGINE = InnoDB; Alter table `studenci` add Constraint `miejscowosci_studenci_fk` Foreign Key (`miejscowosc_id`) references `miejscowosci` (`miejscowosc_id`) on delete restrict on update restrict; Skrypt ten można teraz uruchomić w konsoli MySQL. Zostaną utworzone obie tabele oraz relacja między tabelami. Zwróćmy uwagę też na jeden drobny błąd w działaniu programu TDM. Otóż na 7

początku skryptu są dwa polecenia kasowania tabel. Są one niestety w niewłaściwej kolejności, gdyż jako pierwszą trzeba wykasować tabelę studenci (dlaczego?) a dopiero potem tabelę miejscowości. Błąd ten trzeba skorygować ręcznie. mysql> source db_lab4.sql Query OK, 0 rows affected (0.09 sec) Query OK, 0 rows affected (0.12 sec) Query OK, 0 rows affected (0.56 sec) Query OK, 0 rows affected (0.39 sec) Query OK, 0 rows affected (0.86 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show tables; +---------------+ Tables_in_lab +---------------+ miejscowosci studenci +---------------+ 2 rows in set (0.01 sec) 4. Utworzyć dwa podobne do siebie modele, w jednym będziemy mieli zdefiniowaną relację nieidentyfikującą a w drugim identyfikującą. Ta pierwsza jest rysowana linią przerywaną, druga ciągłą. Ponadto raz tabela ma rogi zaokrąglone a raz ostre. Relacja identyfikująca to taka, gdzie kolumna (kolumny) będąca kluczem obcym jest też częścią klucza głównego. Oznaczane jest to symbolem PFK. Różnica między obu typami relacji jest dość subtelna ale też i zasadnicza zarazem. W przypadku relacji nieidentyfikującej nasz prosty model należy rozumieć w taki sposób, że rejestrujemy książki, które mają jakiegoś właściciela a ten właściciel może mieć wiele różnych książek. Książka może także istnieć bez właściciela (gdy usuniemy ograniczenie NOT NULL z kolumny będącej kluczem obcym) lub ten właściciel może się zmieniać. W przypadku relacji identyfikującej nieco inaczej interpretujemy nasz model. Tym razem w tabeli osoby będą pojawiać się autorzy książek. Każdy autor może oczywiście napisać więcej niż jedną książkę. Książka nie zmienia swojego autora, ktoś ją napisać i to jest już fakt historyczny. Książka bez autora nie istnieje, więc zabraniamy utworzenia takiego przypadku. 8

Inny przypadek, gdzie ma zastosowanie relacja identyfikująca pokazano niżej. Tym razem chodzi o sytuację, gdy numer telefonu jest przywiązany do abonenta. Zakładamy, że nie istnieją numery telefonów bez przypisanych do nich konkretnych osób. Jeżeli z jakiegoś powodu firma telekomunikacyjna chce przydzielić istniejący już numer innemu abonentowi, musi zmodyfikować też kolumnę abonent_id i tym samym przypisać zwolniony z jakiegoś powodu numer telefonu innej osobie. 5. Utworzyć prosty model relacyjny z relacją typu N:M. W modelu tym będziemy chcieli rejestrować dane studentów oraz oceny jakie uzyskują z poszczególnych przedmiotów. W jednym modelu wykorzystano relacje identyfikujące a w drugim nieidentyfikujące. Samodzielnie przeanalizuj oba modele i odpowiedź na pytanie, który model będzie miał zastosowanie w jakich konkretnych sytuacjach. Podaj konkretne zastosowania. 9