Prototypowanie w ORACLE DESIGNER Projektowanie Bazy Danych
Browser: Hollywood X Action Edit Block Filed+ Customers: Design Editor File Edit View Navigator Utilities Messages Tools Run Options Window Help Non-Oracle Zintegrowanie środowisko do projektowania i generowania.
NavigatorNavigator Server ModelModulesDB AdminDistribution APPLICATION[1] Relational Table Definitions View Definitions Snapshot Definitions Sequence Definitions Cluster Definitions PL/SQL Definitions Domains Data Diagram Navigator - Server Model Server ModelModulesDB AdminDistribution Projektowanie i budowa bazy danych Projektowanie i budowa aplikacji
Design Editor - SPEEDY[1] Navigator - Server Model Table Definitions CUSTOMERS ORDERS Tworzymy diagram przy użyciu drag and drop – (przeciągając) DSD1 EMPLOYEES DEPARTMENTS LASTNAME FIRSTNAME EMPNO EMPLOYEES_LOCATION EMPLOYEES_DEPTNAME LOCATION DEPTNAME DEPARTMENTS_EMPNO EMP_DEPT_FK ODR_CTR_FK CUSTOMERS ORDERS
Przewodniki i Kreatory Przewodniki wspomagają przeprowadzenie całego procesu (Design Editor -> Tools). Przewodniki udostępniają zarówno kreatory jak i okno właściwości - w miarę potrzeby. Przewodniki wspomagają przeprowadzenie całego procesu (Design Editor -> Tools). Przewodniki udostępniają zarówno kreatory jak i okno właściwości - w miarę potrzeby. Server Model Guide – pozwala utworzyć model bazy danych Module Application Guide – pozwala zaprojektować oraz wygenerować prototyp aplikacji klienckiej Database Administration Guide – pomaga w definiowaniu fizycznych aspektów bazy danych jak definicje przestrzeni tabel czy wymagania bezpieczeństwa. Wizardy działają krok po kroku.Wizardy działają krok po kroku.
Możliwości Przewodnika Server Model Guide Domains TablesSequencesAdvancedPL/SQL Triggers IndexesConstraints Views Snapshots Clusters Primary Keys Foreign Keys Unique Keys Check Constraints
Dialog lub właściwości Najczęściej używane własności Najczęściej używane własności Wszystkie własności Używając dialog boxUżywając palette Wyświetl właściwości
Tworzenie obiektów Drag and drop Narzędzia do tworzenia diagramu W nawigatorze: Przewodniki i kreatory Drag and drop Narzędzia do tworzenia diagramu W nawigatorze: Przewodniki i kreatory Edit Create or Edit Create or – Używamy dialog box lub okien właściwości
Diagram logicznego modelu bazy danych ITM_ODR_FK Tabele Foreign key ITEMS *QUANTITY oDISCOUNT ORDERS # *ID oDELIVERED_TIME Primary key Kolumny
PRODUCTS DESCRIPTION DISCOUNT_DAY PRODCUT_TYPE ID PHOTO [O[[oo[O[[oo Czytanie diagramu Klucz główny Opcjonalność Wartości dozwolone Typy danych Sekwencje Dziedziny Przyciski: Wyzwalacze indeksy synonimy klucz główny obcy klucz gł. ograniczenia check Klucze obce Przyciski: Wyzwalacze indeksy synonimy klucz główny obcy klucz gł. ograniczenia check Klucze obce
CUSTOMERS LAST_NAME FIRST_NAME Edycja tabeli Edit Table CUSTOMERS Table name Table alias Display title New column prefix Okno dialogowe własności Name Okno dialogowe pokazuje podstawowe własności
Tworzenie i edycja kolumn Edit Table EMPLOYEES Column name AddDeleteValid Values Domain Datatype Length Default value Is column optional? YesNo Columns Edytuj podstawowe własności Dodaj kolumnę Usuń kolumnę
Definiowanie ograniczeń check dla kolumn · explicite, poprzez dodanie w definicji warunku we własności Where/Validation Condition - specyfikujemy warunek SQL lub funkcję PL/SQL (nie można w tym samym ograniczeniu ustawić warunku oraz funkcji), · implicite, przez definicję dozwolonych wartości dla kolumny
Prosta kontrola Tabel Column Properties Derivation AutoGen Type Created by Date Created Date Modified Modified By LEE TROTT NG 23-MAR MAR-1998 WHO WHEN Date Created Created byINSERT
Ustawianie własności domyślnych Column Properties Definition Default ValuePIZZA INSERT 101PIZZA Product TypeID
Klucze sztuczne Identyfikują rekord jednoznacznie Identyfikują rekord jednoznacznie Nie mają znaczenia biznesowego Nie mają znaczenia biznesowego Dowolna etykieta Dowolna etykieta Generowanie wartości Generowanie wartości Identyfikują rekord jednoznacznie Identyfikują rekord jednoznacznie Nie mają znaczenia biznesowego Nie mają znaczenia biznesowego Dowolna etykieta Dowolna etykieta Generowanie wartości Generowanie wartości SMITH LEE BURNS P F F
Jeśli chcemy by w tabeli jednoznaczny identyfikator zawierał kolejne sekwencyjne wartości kreowane przez aplikację (autonumer) - możemy wybrać sekwencję generowaną w kodzie SQL. Dane do tworzenia sekwencji są generowane do.tab file oraz the.ccs file Generowanie sekwencji w ORACLE -
CG_CODE_CONTROLS PROMPT Creating Table 'CG_CODE_CONTROLS' CREATE TABLE CG_CODE_CONTROLS (CC_DOMAIN VARCHAR2(30) NOT NULL,CC_COMMENT VARCHAR2(240),CC_NEXT_VALUE NUMBER(15) NOT NULL,CC_INCREMENT NUMBER(15) DEFAULT 1 ) / PROMPT Creating Table 'CG_CODE_CONTROLS' CREATE TABLE CG_CODE_CONTROLS (CC_DOMAIN VARCHAR2(30) NOT NULL,CC_COMMENT VARCHAR2(240),CC_NEXT_VALUE NUMBER(15) NOT NULL,CC_INCREMENT NUMBER(15) DEFAULT 1 ) /
Generowanie pierwszej wartości PROMPT Creating Code Control Sequence 'MYCCS' INSERT INTO CG_CODE_CONTROLS (CC_DOMAIN, CC_NEXT_VALUE, CC_INCREMENT, CC_COMMENT) VALUES ('MYCCS', 1, NULL, NULL) / COMMIT / PROMPT Creating Code Control Sequence 'MYCCS' INSERT INTO CG_CODE_CONTROLS (CC_DOMAIN, CC_NEXT_VALUE, CC_INCREMENT, CC_COMMENT) VALUES ('MYCCS', 1, NULL, NULL) / COMMIT /
Generowanie sekwencji w Oracle Sekwencja Oracle generuje niepowtarzające się numery dla swoich kolumn nawet gdy wiersze pojawiają się jednocześnie ale numery nie będą zachowywać kolejności jeśli transakcje będą wycofywane. Sekwencje Oracle sequence są generowane do pliku.sqs Sekwencja Oracle generuje niepowtarzające się numery dla swoich kolumn nawet gdy wiersze pojawiają się jednocześnie ale numery nie będą zachowywać kolejności jeśli transakcje będą wycofywane. Sekwencje Oracle sequence są generowane do pliku.sqs
Przykład – Sekwencja Oracle PROMPT Creating Sequence 'MYSEQ' CREATE SEQUENCE MYSEQ NOMAXVALUE NOMINVALUE NOCYCLE NOCACHE / PROMPT Creating Sequence 'MYSEQ' CREATE SEQUENCE MYSEQ NOMAXVALUE NOMINVALUE NOCYCLE NOCACHE /
Transformacja Bazy Danych Ustawienia domyślne
Ustawienia: Box "Create Surrogate Keys for all new tables" - zaznaczony PK constraint 3 sequence PK column SEQUENCE property set
Przygotowanie do generowania Jakość wykonania - opisana w raporcie Jakość wykonania - opisana w raporcie Określamy bazę docelową dla : Określamy bazę docelową dla : Obsługi typów obiektów Obsługi typów obiektów Ograniczeń dostępu Ograniczeń dostępu Ustawienia w Designer/2000: Ustawienia w Designer/2000: Własność Complete? - domyślnie "yes" Własność Complete? - domyślnie "yes" Wszystkie zasoby i powiązanie z nimi obiekty – wybrane (zaznaczone) Wszystkie zasoby i powiązanie z nimi obiekty – wybrane (zaznaczone) Jakość wykonania - opisana w raporcie Jakość wykonania - opisana w raporcie Określamy bazę docelową dla : Określamy bazę docelową dla : Obsługi typów obiektów Obsługi typów obiektów Ograniczeń dostępu Ograniczeń dostępu Ustawienia w Designer/2000: Ustawienia w Designer/2000: Własność Complete? - domyślnie "yes" Własność Complete? - domyślnie "yes" Wszystkie zasoby i powiązanie z nimi obiekty – wybrane (zaznaczone) Wszystkie zasoby i powiązanie z nimi obiekty – wybrane (zaznaczone)
Rezultaty Generate ->Generate Database from the Server Model Tabele CUSTOMERS LAST_NAME FIRST_NAME Związki 3 Sekwencje Indeksy
Table API zabezpieczają dane Table API Procedury w PL/SQL pozwalające na walidację danych przed wykonaniem instrukcji insert, update, i delete Zbiór procedur Wykonywane zanim wystąpi zdarzenie Packages Triggers Generate -> Generate Table API
Table API API jest poziomem kodu PL/SQL pomiędzy aplikacją klienta bazą danych Oracle to kod będący interfejsem wywoływanym przez aplikacje klienta przed wykonaniem instrukcji insert, update i delete operacji ma tabelach w bazie danych Wszystkie operacja manipulacji na danych są sprawdzane pod względem poprawności (Walidacja) bezpośrednio w tym samym kodzie. Table API zapewnia integralność danych pozwalając zapisywać reguły biznesowe na serwerze Kod przeprowadzający walidację jest umieszczany również w aplikacji klienta. API jest poziomem kodu PL/SQL pomiędzy aplikacją klienta bazą danych Oracle to kod będący interfejsem wywoływanym przez aplikacje klienta przed wykonaniem instrukcji insert, update i delete operacji ma tabelach w bazie danych Wszystkie operacja manipulacji na danych są sprawdzane pod względem poprawności (Walidacja) bezpośrednio w tym samym kodzie. Table API zapewnia integralność danych pozwalając zapisywać reguły biznesowe na serwerze Kod przeprowadzający walidację jest umieszczany również w aplikacji klienta.
Table API określają logikę struny Serwera Powodują że klient może być „cienki” Powodują że klient może być „cienki” Minimalizują nakłady na konserwację - cała logika biznesowa w jednym miejscu Minimalizują nakłady na konserwację - cała logika biznesowa w jednym miejscu Powodują że klient może być „cienki” Powodują że klient może być „cienki” Minimalizują nakłady na konserwację - cała logika biznesowa w jednym miejscu Minimalizują nakłady na konserwację - cała logika biznesowa w jednym miejscu Table API Tables Aplikacje Klienta
Przykłady zadań API INSERT INTO ORDERS ORDERS ID DISCOUNT... Table API - Generowanie klucza głównego - Określenie wartości kolumn - Dostarczają wartości delault’owych - Walidacja danych...
Aplikacje i API Table API is opcjonalna Table API is opcjonalna Table API są wymagane do przeprowadzenia procesu aplikacje Form Builder aplikacje aplikacje WebServer
DECLARE -- PL/SQL Records to pass values to the Insert procedure new_employee cg$emp.cg$row_type; new_emp_inds cg$emp.cg$ind_type; BEGIN -- Set the initial values for the new employee new_employee.empno := 1490; new_employee.ename := 'SCOTT'; new_employee.job := 'MANAGER'; -- Set the indicator type for the above data new_emp_inds.empno := TRUE; new_emp_inds.ename := TRUE; new_emp_inds.job := TRUE; -- Call the Table API Insert procedure cg$emp.ins(new_employee,new_emp_inds); EXCEPTION ….. END; DECLARE -- PL/SQL Records to pass values to the Insert procedure new_employee cg$emp.cg$row_type; new_emp_inds cg$emp.cg$ind_type; BEGIN -- Set the initial values for the new employee new_employee.empno := 1490; new_employee.ename := 'SCOTT'; new_employee.job := 'MANAGER'; -- Set the indicator type for the above data new_emp_inds.empno := TRUE; new_emp_inds.ename := TRUE; new_emp_inds.job := TRUE; -- Call the Table API Insert procedure cg$emp.ins(new_employee,new_emp_inds); EXCEPTION ….. END; Przykład: Wywołanie procedury Insert w Table API cg$ind_type - PL/SQL record containing boolean indicators showing which column values have been set.
Zaawansowane Table API wyzwalacz logiczny (*) Zdarzenia występujące przed i po wstawieniu wiersza w tabeli to insert, update, delete lub locke: Kod, który na zostać wykonany przed wystąpieniem zdarzenia może odczytać zawartości tabel przed ich modyfikacją (zanim jeszcze zostaną zmienione). Kod, który na zostać wykonany po wystąpieniu zdarzenia może modyfikować zawartość tabel po modyfikacji - kiedy już operacja została wykonana- wiersze zostały wstawione zmienione lub usunięte (*) W Design Editor: Relational Table Definitions -> -> TableAPI/Trigger Logic Zdarzenia występujące przed i po wstawieniu wiersza w tabeli to insert, update, delete lub locke: Kod, który na zostać wykonany przed wystąpieniem zdarzenia może odczytać zawartości tabel przed ich modyfikacją (zanim jeszcze zostaną zmienione). Kod, który na zostać wykonany po wystąpieniu zdarzenia może modyfikować zawartość tabel po modyfikacji - kiedy już operacja została wykonana- wiersze zostały wstawione zmienione lub usunięte (*) W Design Editor: Relational Table Definitions -> -> TableAPI/Trigger Logic
PROCEDURE ins(cg$rec IN OUT cg$row_type, cg$ind IN OUT cg$ind_type) IS -- Constant default values BEGIN -- Application_logic Pre-Insert -- Auto-generated and uppercased columns INSERT INTO TAB(NUM) VALUES (cg$rec.NUM); -- Application logic Post-Insert EXCEPTION WHEN END ins; PROCEDURE ins(cg$rec IN OUT cg$row_type, cg$ind IN OUT cg$ind_type) IS -- Constant default values BEGIN -- Application_logic Pre-Insert -- Auto-generated and uppercased columns INSERT INTO TAB(NUM) VALUES (cg$rec.NUM); -- Application logic Post-Insert EXCEPTION WHEN END ins; Schemat procedury insert
CREATE OR REPLACE TRIGGER cg$BIR_TAB BEFORE INSERT ON TAB FOR EACH ROW DECLARE cg$rec cg$TAB.cg$row_type; BEGIN -- Application_logic Pre-Before.Insert.Row cg$rec.NUM := :new.NUM; cg$TAB.validate(cg$rec); -- :new.NUM := cg$rec.NUM; -- Application_logic Post-Before.Insert.Row END; CREATE OR REPLACE TRIGGER cg$BIR_TAB BEFORE INSERT ON TAB FOR EACH ROW DECLARE cg$rec cg$TAB.cg$row_type; BEGIN -- Application_logic Pre-Before.Insert.Row cg$rec.NUM := :new.NUM; cg$TAB.validate(cg$rec); -- :new.NUM := cg$rec.NUM; -- Application_logic Post-Before.Insert.Row END; Schemat wyzwalacza before-insert
Reference code tables A reference code table is a database table containing values, abbreviations and meanings of allowable values defined for columns and associated domains. The reference code table is generated to provide validation for module items that are based on columns or domains that have allowable values. This table stores the allowable values defined against the column and domain definitions in the Repository. Wybrać: Generate -> Generate Database from Server Model -> Options -> Automatic Creation of Ref_Codes lub Generate -> Generate Reference Code Tables A reference code table is a database table containing values, abbreviations and meanings of allowable values defined for columns and associated domains. The reference code table is generated to provide validation for module items that are based on columns or domains that have allowable values. This table stores the allowable values defined against the column and domain definitions in the Repository. Wybrać: Generate -> Generate Database from Server Model -> Options -> Automatic Creation of Ref_Codes lub Generate -> Generate Reference Code Tables
Badanie poprawności modelu projektowego Badanie zgodności nazewnictwa definicji Tabel i kolumn Tabel i kolumn Sekwencji Sekwencji Sprawdzanie integralności danych Klucz główny i obcy Klucz główny i obcy Ujednolicenie formatu i walidacji Dziedziny Dziedziny Badanie zgodności nazewnictwa definicji Tabel i kolumn Tabel i kolumn Sekwencji Sekwencji Sprawdzanie integralności danych Klucz główny i obcy Klucz główny i obcy Ujednolicenie formatu i walidacji Dziedziny Dziedziny
Wykonanie raportu z badania poprawności Błędne obiekty Bazy danych Definicje Tabel Definicje Kolumn Definicje dziedzin Błędne obiekty Bazy danych Definicje Tabel Definicje Kolumn Definicje dziedzin