Wszelkie prawa zastrzeżone. Rozpowszechnianie arty kułu bez zgody Software Wy dawnictwo Sp. z o.o. zabronione.

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wszelkie prawa zastrzeżone. Rozpowszechnianie arty kułu bez zgody Software Wy dawnictwo Sp. z o.o. zabronione."

Transkrypt

1 2 / Wszelkie prawa zastrzeżone. Rozpowszechnianie arty kułu bez zgody Software Wy dawnictwo Sp. z o.o. zabronione. Softw a r e W y da w n ict w o Sp. z o.o., u l. Lew a r tow skieg o 6, W a r sza w a, POLSKA. Kon ta kt : Da r iu sz Pa w łow ski (dpa w low psolm a g.or g )

2 Andrzej Nowakowski Moduł Raportów w PHP integrator systemów informatycznych w przedsiębiorstwie Na dołączonej do pisma płycie CD znajdują sie wszystkie opisane w artykule skrypty technology/pub/articles/ php_experts/index.html 3. technology/oramag/oracle/ 4. oracle/server803/ index.htm oramag/oracle/02-mar/ o22sql.html PHP to już nie tylko zabawa domorosłych programistów webowych, lecz zaawansowane rozwiązania klasy enterprise przyjazne interfejsy hurtowni danych, systemów analitycznych, czy portale interi intranetowe to standard. Tym razem pokażemy jak za pomocą PHP dokonać integracji systemów informatycznych w przedsiębiorstwie. Obecnie firmy posiadają w swoich strukturach wiele systemów informatycznych. Każdy z nich jest zbiorem charakterystycznych informacji gromadzonych przez określony czas. System FK (system Finansowo-Księgowy) jest zbiorem danych o zadłużeniu kontrahenta wobec firmy, system CRM (Customer Relationship Management) to informacje marketingowe o kontrahencie, a System Akwizycyjny przechowuje dane o ich obsłudze przez przedstawicieli handlowych. Każdy z wymienionych systemów ma inny cel, ale ten sam obiekt zainteresowań Kontrahent. Aby przeprowadzić pełną analizę obiektu naszych zainteresowań (kontrahenta), potrzebna integracja informacji ze wszystkich dostępnych systemów pozwoli ona decydentom poznać prawdziwe związki przyczynowo-skutkowe zachodzące w danym obiekcie. Aby końcowy odbiorca informacji był usatysfakcjonowany, dane muszą być aktualne i przejrzyste. Można to osiągnąć poprzez stworzenie kompletnego modułu raportującego (MR) Rysunek 1. Opis projektu Załóżmy, że nasza firma zapragnęła w pełni wykorzystać posiadaną infrastrukturę IT, gdyż obecnie jest ona uży- Co należy wiedzieć... Zakładamy, że czytelnik zna podstawy obiektowości w PHP oraz posiada wiedzę z obsługi relacyjnych baz danych, w tym ORACLE. Co obiecujemy... Po przeczytaniu artykułu Czytelnik pozna mechanizmy wbudowane w serwery baz danych, które w dużym stopniu mogą uprościć budowę interfejsów PHP. Zbudujemy gotowe narzędzie generujące raporty (w formacie XLS i HMTL) w oparciu o bazę danych ORACLE. 62 PHP Solutions Nr 6/2004

3 wana jedynie w 50%. Systemy informatyczne pracują na pełnych obrotach jedynie w dzień, powodując przy tym powolną pracę wielu aplikacji użytkowników, co w rezultacie jest efektem dużego niezadowolenia. W nocy, kiedy użytkownicy nie korzystają z systemów, baza danych jest obciążona w zaledwie 5%. W związku z tym postanowiono stworzyć Moduł Raportów, którego celem stała się od dawna oczekiwana integracja systemów i zbalansowanie obciążenia. Integracja będzie polegała na stworzeniu takiego mechanizmu, który połączy systemy CRM i FK. Dzięki temu odbiorca informacji będzie mógł w jednym miejscu otrzymać wszystkie dane dotyczące obu systemów. Zbalansowanie obciążenia oznaczać będzie przeniesienie czasu wykonywania najbardziej zasobożernych operacji bazodanowych na noc. Dzięki temu, użytkownicy pracujący z systemami FK i CRM w ciągu dnia odczują zdecydowaną poprawę w komforcie pracy. Założenia Modułu Raportów Moduł Raportów powinien spełniać kilka podstawowych założeń: Wybór bazy danych ORACLE SQL w implementacjach serwerów baz danych jako standard raczej nie istnieje. Producenci prześcigają się w tworzeniu różnego typu rozszerzeń, dodając własne komendy, funkcje, operatory, pseudokolumny, typy danych itd. Decydując się na używanie konkretnego serwera bazy danych, jesteśmy zmuszeni, oprócz standardowego SQL-a, poznać odpowiednie rozszerzenia. W naszym projekcie wykorzystamy bazę danych ORACLE. Osoby, które wcześniej pracowały tylko z MS Access czy MySQL, mają problem ze zrozumieniem ogólnej architektury tego systemu. Proste bazy danych takie jak SQLite przechowują wszystkie informacje w jednym pliku. Stanowi on po prostu bazę danych, która jest zazwyczaj ściśle powiązana z konkretną aplikacją. W ORACLE wygląda to inaczej (Rysunek 2) w jednej bazie danych mogą znajdować się dane pochodzące z różnych aplikacji, a rozdzielone są tylko schematami użytkowników. Istnieje zatem użytkownik, który jest właścicielem wszystkich obiektów danej aplikacji. Dodatkowo każda baza danych ma swoje instancje jedną lub wiele (w zależności od potrzeb). Instancja bazy danych ORACLE to zbiór procesów oraz buforów serwera bazy danych. Rozszerzenia ORACLE w stosunku do standardu SQL-92, można zauważyć przy najbardziej fundamentalnych operacjach i obiektach bazodanowych, takich jak: komendy SQL, funkcje, operatory, pseudokolumny, typy danych, czy nazewnictwo obiektów bazodanowych. Szczególną uwagę należy zwrócić na rozszerzenia zapewniające efektywne zarządzanie składowaniem tworzonych obiektów. Projektując np. tabelę możemy dodatkowo określić klauzulę STORAGE, a w niej zawrzeć informacje o wielkości tworzonej tabeli (w bajtach), czy określić, jak mają wyglądać przyrosty, które są tworzone, gdy wprowadzane dane przekroczą wielkość danej tabeli. Warto także zapoznać się z mało znanymi, ale bardzo przydatnymi funkcjami analitycznymi takimi jak: RANK, CUME _ DIST, PERCENT _ RANK, NTILE, ROW _ NUMBER[10]. Prawidłowe użycie tych funkcji może bardzo uprościć późniejszą budowę mechanizmów PHP. ma być dostępny na każdej stacji roboczej w firmie, nie może wymagać instalacji dodatkowego oprogramowania, powinien być przygotowany do generowania wielu raportów, raporty powinny być dostępne w formacie HTML oraz XLS. Raport powinien zawierać: informacje o obrotach netto kontrahentów w poprzednim roku kalendarzowym, w roku bieżącym, oraz zmianę procentową miedzy tymi dwoma okresami (dane należy pobrać z zewnętrznego systemu FK), informację na temat daty ostatniego kontaktu firmy z kontrahentem (dane należy pobrać z zewnętrznego systemu CRM). Rysunek 1. Raport w środowisku Microsoft Excel PHP Solutions Nr 6/

4 Projekty Listing 1. Schemat użytkownika ART CREATE USER ART IDENTIFIED BY Xart123 DEFAULT TABLESPACE TOOLS TEMPORARY TABLESPACE TEMP; -- Przydzielenie przywileju CREATE SESSION GRANT CONNECT TO ART; -- Przydzielenie przywileju systemowego UNLIMITED TABLESPACE GRANT UNLIMITED TABLESPACE TO ART; -- Przydzielenie przywileju systemowego CREATE SNAPSHOT do tworzenia -- widoków zmaterializowanych GRANT CREATE SNAPSHOT TO ART; -- Przydzielenie przywileju systemowego CREATE TABLE do tworzenia -- tabel GRANT CREATE TABLE TO ART; -- Przydzielenie przywileju systemowego CREATE VIEW do tworzenia -- zwykłych widoków GRANT CREATE VIEW TO ART; -- Przydzielenie przywileju systemowego CREATE VIEW do tworzenia -- procedur i funkcji GRANT CREATE PROCEDURE TO ART; Mechanizmy Modułu Raportów Moduł Raportów (MR) w głównej mierze opierać się będzie o rozbudowany mechanizm bazodanowy, którego zadaniem będzie przygotowanie danych do szybkiego i łatwego wyświetlenia przez warstwę PHP. Wszystkie bazy danych (schematy CRM, FK i MR) znajdują się w jednej instancji ORACLE. Wymiana informacji oparta będzie na pobieraniu danych z jednego schematu użytkownika i wprowadzaniu ich do drugiego w postaci zagregowanej, a używane do tego będą zwykłe komendy SELECT. Spójrzmy na Rysunek 3, gdzie przedstawiono architekturę projektowanego Modułu Raportów. Tak zaprojektowany system w dużej mierze ograniczy zbędny przepływ danych pomiędzy mechanizmami oraz zaakcentuje rozdział między warstwą danych a warstwą prezentacji. Wykorzystamy PHP w wersji z modułem OCI8 oraz bazę ORACLE Opis podstaw projektowania aplikacji bazodanowych w oparciu bazę danych ORACLE przedstawiliśmy w artykule pt. ORACLE i PHP, nr 4/2004, do którego odsyłamy wszystkich spragnionych dodatkowej wiedzy. Oba artykuły tworzą jeden ciąg, dzięki czemu Czytelnik zdecydowanie łatwiej pozna omawiane w nich zagadnienia. Mechanizm bazodanowy Zadaniem mechanizmu bazodanowego będzie pobieranie danych z systemów zewnętrznych (CRM, FK) oraz sprowadzanie ich do prostej postaci łatwiejszej do wykorzystania przez PHP. Aby to uczynić, stworzymy prostą tablicę integrująca oba systemy oraz specjalną tablicę tzw. migawkę (ang. snapshot, widok zmaterializowany), która odczyta i przetworzy dane o wskazanej godzinie. Mechanizm ten będzie pobierał bardzo szczegółowe informacje wartości na fakturach w systemie FK, a następnie dokonywał ich Rysunek 2. Logika aplikacji ORACLE Hurtownie danych (data warehouse) Jest to technologia pozwalająca uporządkować dane gromadzone w przedsiębiorstwie. Hurtowania danych jest odrębnym środowiskiem aplikacyjnym posiadającym dedykowaną bazę danych, która korzysta z różnorodnych źródeł informacji i zaprojektowana została z myślą o dokonywaniu złożonych analiz na zgromadzonych informacjach. agregacji (sumowania) w odpowiednie grupy ale o tym później, w części Implementacja mechanizmu bazodanowego w środowisku ORACLE. Warto też zwrócić uwagę, że opisane działanie migawki przypomina hurtownię danych, gdzie agreguje się potężne ilości szczegółowych informacji zawartych w zewnętrznych bazach danych patrz Ramka Hurtownie danych. Szczegóły zastosowanych rozwiązań w samym mechanizmie bazodanowym zależeć będą od potrzeb biznesowych organizacji, dla której będzie wykonywany Moduł Raportów. Główne czynniki determinujące zastosowanie odpowiednich rozwiązań to: aktualność generowanych danych, wielkość przetwarzanych danych. Chcąc stworzyć funkcjonalną aplikację, należy najpierw zrozumieć sposób zarządzania i manipulowania danymi przechowywanymi w konkretnym systemie. Bazy danych posiadają wiele użytecznych elementów wspomagających 64 PHP Solutions Nr 6/2004

5 Moduł Raportów w PHP np. generowanie raportów. Producenci rozbudowują standardowy SQL o swoje rozszerzenia i własne wewnętrzne języki programowania. Tego typu rozszerzenia, jako że są zintegrowane z serwerem bazy danych, działają szybko i wydajnie, nie generując przy tym ruchu pomiędzy warstwami aplikacji (w naszym przypadku pomiędzy PHP i bazą danych ORACLE). Programista PHP chcąc napisać wydajną aplikacje bazodanową powinien stosować wewnętrzne mechanizmy serwera i o ile jest to możliwe tak przygotować informacje w bazie danych, aby z poziomu PHP mógł nimi efektywnie manipulować. Implementacja mechanizmu bazodanowego w środowisku ORACLE Aby można było tworzyć obiekty (tabele, widoki itp.) w bazie ORACLE, należy w pierwszej kolejności stworzyć ich właściciela (użytkownika). Użytkownik będzie budował wspólną logiczną przestrzeń obiektów zwaną schematem. Na początku zatem stworzymy użytkownika, który będzie właścicielem schematu Modułu Raportów. Powinien on posiadać minimum praw, które będą mu niezbędne (Listing 1). Pozwoli to zachować standardy bezpieczeństwa w dostępie do danych. Użytkownika stworzymy w przestrzeni tabel TOOLS i przydzielimy mu tymczasową przestrzeń tabel TEMP. Następnie przydzielimy mu niezbędne minimum praw. Wszystkie omawiane skrypty SQL możemy uruchamiać w środowisku SQLPlus ORACLE lub używając innych alternatywnych narzędzi. Zacznijmy teraz integrować systemy FK i CRM. Na początku znajdźmy wspólny obiekt w obu wymienionych systemach. W naszym przypadku będzie to Kontrahent należy więc odnaleźć tabele, które go opisują. Spójrzmy na Rysunek 4 w części CRM znajdują się dwie tabele odpowiedzialne za rejestracje kontaktów firmy z kontrahentem: Indeksy Indeks to obiekt, który ma za zadanie przyśpieszyć wykonanie zapytania. Najbardziej rozpowszechnionym typem indeksu jest B-Tree. Spójrzmy na Rysunek 5. Założenie indeksu spowoduje posegregowanie danych w odpowiednie grupy indeks wprowadza porządek. Dzięki temu, jeżeli w zapytaniu użyjemy klauzuli WHERE, to serwer poszuka naszej wartości w indeksie, a nie w całym zakresie danych. W danej grupie (przedziale) odnajdzie interesującą go wartość i pobierze informacje o bloku bazy danych, w którym się ona znajduje. W ten sposób skraca się czas wyszukiwania wartości. W niektórych przypadkach może okazać się jednak inaczej. Załóżmy, że w kolumnie, w której chcemy użyć indeksu znajdują się tylko dwie wartości np. określające płeć (K/M). Stworzenie indeksu typu B-Tree na takiej kolumnie byłoby nieracjonalne. W takim przypadku powstałyby dwa zakresy: K i M. Użycie indeksu skonsumowałoby więcej czasu niż przeszukanie kolumny bez indeksu. Najlepszym zatem miejscem użycia indeksu B-Tree jest kolumna o dużej gradacji danych. Innym niewskazanym miejscem tworzenia indeksu są kolumny w tabelach, na których często odbywają się operacje DML (Data Manipulating Language, operacje zmieniające zawartość tabeli) takie jak INSERT, UPDATE, DELETE, a tylko sporadycznie SELECT. W takim przypadku, operacje te mogą się wydłużać z powodu tworzenia indeksu dla każdej zmiany. Należy także pamiętać, iż indeks jest obiektem zawierającym informacje, a ilość tych informacji zależy od tego, jak dużo danych znajduje się w tabeli źródłowej. Jednym słowem indeks zajmuje dodatkowe miejsce na dysku. Rysunek 3. Architektura Modułu Raportów ID=ID_CUSTOMER ID=ID_CUST_CRM CRM _ CONTACTS jest zbiorem zarejestrowanych przez pracowników kontaktów firmy z kontrahentami. Znajdują się tam takie informacje jak: typ kontaktu ( , telefon, fax itp.), data kontaktu, opis kontaktu, identyfikator kontrahenta oraz identyfikator kontaktu. Identyfikatory są kluczami: identyfikator kontaktu (ID) jest kluczem głównym w tabeli, natomiast identyfikator kontrahenta (ID _ CUSTO- ID=ID ID=ID_INVOICE ID=ID_MATERIAL Rysunek 4. Model integracyjny struktura bazy danych ID=ID_CUST_CK PHP Solutions Nr 6/

6 Projekty Klucze Klucze są to obiekty, które mają za zadanie utrzymywać spójność danych w bazie. Jeżeli tworzona aplikacja wymaga kontroli spójności, to należy użyć kluczy. W przeciwnym razie nie należy ich stosować, ponieważ mogą być one powodem wolniejszego działania operacji DML serwer będzie musiał dodatkowo sprawdzić, czy dane są zgodne z zasadami kluczy założonych. MER) jest kluczem obcym patrz Ramka Klucze, CRM _ CUSTOMERS jest katalogiem wszystkich kontrahentów zarejestrowanych w systemie CRM i zawiera podstawowe informacje o kontrahencie. W systemie FK interesują nas trzy tabele opisujące fakturę oraz jedna tabela opisująca kontrahentów: FK _ INVOICES zawiera tzw. nagłówki faktury, czyli identyfikator kontrahenta, dla którego była wystawiona faktura, datę sprzedaży, wartość faktury oraz unikalny identyfikator faktury, który jest jednocześnie kluczem głównym tabeli, FK _ INVOICES _ POS jest zbiorem pozycji faktur. Znajdują się tam wszystkie informacje na temat konkretnej pozycji na fakturze np. jaki materiał został zakupiony, ilość, cena jednostkowa, czy stawka VAT. FK _ INVOICES _ POS jest połączona z tabelą FK _ INVO- ICES w relacji wiele-do-jednego, czyli jeden nagłówek faktury FK _ INVO- ICES może posiadać wiele pozycji w FK _ INVOICES _ POS, FK _ MATERIALS zawiera w sobie katalog artykułów, które są dostępne w sprzedaży, FK _ CUSTOMERS jest odpowiednikiem tabeli CRM _ CUSTOMERS w systemie CRM. Fundamentem integracji obu systemów będą dwie tabele: CRM _ CUSTOMERS z systemu CRM oraz FK _ CUSTOMERS z systemu FK. Ich połączenia dokona tabela CRM _ FK będzie zawierała w sobie dwa klucze obce, które jednocześnie będą złożonym kluczem głównym tej tabeli: id _ cust _ crm oraz id _ cust _ fk. Dodatkowo tabela będzie zawierała indeks, co przyspieszy wykonywanie zapytań SELECT patrz Ramka Indeksy. Listing 2. Tablica integracyjna CRM_FK CREATE TABLE CRM_FK (id_cust_crm NUMBER NOT NULL, id_cust_fk NUMBER NOT NULL, -- tworzenie złożonego klucza głównego CONSTRAINT CRM_FK_PK PRIMARY KEY (id_cust_crm, id_cust_fk), -- tworzenie klucza obcego do tabeli CRM_CUSTOMERS CONSTRAINT crm_fki FOREIGN KEY (id_cust_crm) REFERENCES crm_customers (id), -- tworzenie klucza obcego do tabeli FK_CUSTOMERS CONSTRAINT crm_fkii FOREIGN KEY (id_cust_fk) REFERENCES fk_customers (id) ) -- wymuszenie organizacji indeksowej ORGANIZATION INDEX; Listing 3. Funkcja perc( ) -- komenda tworząca definicję funkcji perc() CREATE FUNCTION PERC (v_new IN NUMBER, v_old IN NUMBER) RETURN NUMBER IS -- definicja zmiennych v_perc NUMBER; -- rozpoczęcie programu BEGIN -- standardowe strukturalne instrukcje warunkowe IF -- sprawdzenie, czy któraś z wartości nie spowoduje dzielenia przez zero v_old = 0 OR v_new = 0 OR v_new = v_old THEN -- jezeli któryś z parametrów będzie zerem, to funkcja zwróci wartość 0 v_perc := 0; ELSE IF -- wyliczenie wartości procentowej dla parametrów funkcji v_new < v_old then v_perc := ROUND ((v_old*100)/v_new, 2)-100; ELSE v_perc := (ROUND ((v_new*100)/v_old, 2)-100) * -1; END IF; END IF; -- zwrócenie wyniku funkcji (obowiązkowe) RETURN (v_perc); END; Rysunek 5. Działanie indeksu 66 PHP Solutions Nr 6/2004

7 Moduł Raportów w PHP Pora skonstruować odpowiednie zapytanie SELECT, które będzie generowało dane niezbędne do zbudowania raportu. Przypomnijmy sobie, jakie informacje będą nam potrzebne i przełóżmy je na odpowiednie obiekty w bazie danych: Obroty netto roku poprzedniego informację tę otrzymamy z podsumowania kolumny VAL tabeli FK _ INVOICES, dodatkowo będziemy musieli zbudować warunek, który będzie sprawdzał, czy data faktury (SALE _ DATE) jest z roku poprzedniego. Jeżeli warunek będzie prawdziwy, nastąpi sumowanie w przeciwnym razie sumowanie danej faktury będzie ominięte. Obroty netto roku bieżącego informację tę otrzymamy podobnie jak poprzednio, ale tym razem warunek będzie sprawdzał, czy data faktury jest z roku bieżącego. Zmiana procentowa informację tę otrzymamy poprzez użycie własnej funkcji, która będzie wyliczała zmianę procentową dla dwóch kolumn. Data ostatniego kontaktu informację tę otrzymamy poprzez użycie funkcji SQL MAX(), która wskaże datę ostatniego kontaktu CONTACT _ DATE w tabeli CRM _ CONTACTS. O ile większość informacji znajduje się już w bazie, o tyle zmianę procentową miedzy obrotami dwóch okresów należy policzyć samemu. Ponieważ ORACLE nie dysponuje odpowiednią funkcją, zbudujemy ją sami w oparciu o strukturalny język PLSQL. Tworzona przez nas funkcja perc() będzie wymagała dwóch atrybutów typu NUMBER. Pierwszy atrybut V _ NEW będzie wartością, dla której zostanie Zmienne i metody klasy report Widoki Widoki to wirtualne tabele, które użytkownik widzi tak, jakby istniały fizycznie. Widok pozwala zapisać kryteria tworzące określone zapytanie, a następnie odwoływać się do niego w dowolnej chwili bez konieczności ponownego wpisywania całej instrukcji. Tabele widokowe umożliwiają także zmianę sposobu prezentowania danych. Wyobraźmy sobie, że stworzyliśmy tabelę T _ EMPLOYEE: CREATE TABLE T_EMPLOYEE ( id NUMBER NOT NULL, name VARCHAR2 (50), surname VARCHAR2 (50), street VARCHAR2 (50), city VARCHAR2 (50), zip VARCHAR2 (50) ) Następnie załóżmy, że stworzyliśmy raport w PHP, który wyświetla $level zmienna ta będzie unikatowym indeksem obsługiwanego w danym momencie raportu i wykorzystywana do indeksacji zmiennych tablicowych, $Aquery zmienna typu tablicowego zawierająca w sobie wszystkie zapytania SQL, $Alink zmienna typu tablicowego zawierająca odnośniki to poszczególnych raportów, $Acomment zmienna typu tablicowego zawierająca nazwę, która będzie wyświetlana w tytule raportu, report($level) metoda (konstruktor), której zadaniem będzie ustawienie wartości dla zmiennej $level, add _ query($level,$sql,$url,$note) metoda ta będzie określała wartości wszystkich zmiennych tablicowych w klasie, gen _ link() metoda ma za zadanie wygenerować linki na podstawie tablicy $Alink, table($conn) zadaniem tej metody będzie przedstawienie raportu na stronach PHP w postaci tabelki HTML lub tabeli w formacie XLS. listę wszystkich pracowników. Raport ten będzie używał zapytania SELECT * FROM T_ EMPLOYEE. Powstała jednak potrzeba przebudowania naszej tabeli, tak aby miała dodatkową kolumnę, w której będzie znajdował się numer telefonu. Dodatkowo należy tak zmodyfikować aplikację, aby nie wyświetlała na istniejących już stronach PHP dodanej kolumny. Wystarczy dla naszej tabeli stworzyć następujący widok: CREATE VIEW VW_EMPLOYEE ( ID, NAME, SURNAME, STREET, CITY, ZIP) AS SELECT ID, NAME, SURNAME, STREET, CITY, ZIP FROM T_EMPLOYEE a następnie odwoływać się w naszej aplikacji do widoku, a nie bezpośrednio do tabeli. Takie rozwiązanie pozwoli zaoszczędzić w przyszłości sporo czasu przy ewentualnych aktualizacjach aplikacji. wyliczona zmiana procentowa w stosunku do drugiego atrybutu V _ OLD. Funkcja w ORACLE musi zwracać jakąś wartość i w naszym przypadku będzie to wartość procentowa typu NUMBER. Stworzyliśmy już tabelę integracyjną CRM _ FK oraz funkcję perc(). Możemy przejść do zbudowania zapytania pobierającego wszystkie interesujące nas informacje potrzebne do stworzenia raportu. W przypadku kiedy w tabelach źródłowych zapytania będzie znajdowała się duża ilość rekordów, wykonanie operacji SELECT może trwać zbyt długo, spowalniając tym samym pracę całego systemu. Dlatego chcielibyśmy wykonywać te działania w nocy, kiedy serwer bazy danych nie jest w pełni wykorzystywany. Stwórzmy zatem mechanizm, który można uruchamiać o odpowiedniej porze. W tym celu posłużymy się tzw. widokiem zmaterializowanym (migawką), który posiada w sobie cechy zwykłego widoku (patrz Ramka Widoki) i tabeli. Widok zmaterializowany zawiera faktyczne dane (identycznie jak tabela), które zostały pobrane na podstawie instrukcji SELECT (podobnie jak w zwykłym widoku). Dodatkowo jednak istnieje możliwość przetwarzania pobieranych do migawki danych i określenia, kiedy ma dojść do odświeżenia widoku, czyli do wykonania instrukcji SELECT. Przetwarzanie danych polega na przekształceniu ich do prostszej postaci, aby można było je łatwej i z użyciem mniejszej ilości zasobów wykorzystywać w systemie. Spójrzmy na Listing 4. Stworzony widok to przede wszystkim długie zapytanie SELECT, które składa się z prostej zewnętrznej kwerendy oraz skomplikowanej perspektywy in-line. Perspektywa in-line to tworzone dynamicznie zapytanie występujące w klauzuli FROM innej kwerendy. Całość instrukcji SELECT obudowana jest komendą tworzącą widok zmaterializowany, który będzie odświeżał się codziennie o godzinie 00:00. W rezultacie stworzymy tabelę bazową (migawkę) MW _ SALES o kolumnach wymienionych w głównym zapytaniu. Przyjrzyjmy się bliżej Listingowi 4. Stworzona migawka zawiera dwa para- PHP Solutions Nr 6/

8 Projekty Listing 4. Widok zmaterializowany -- komenda tworząca widok zmaterializowany MW_SALES CREATE SNAPSHOT MW_SALES -- przekazanie rozkazu, aby widok zmaterializował się natychmiast BUILD IMMEDIATE -- kiedy ma się rozpocząć i co jaki okres wykonywać się odświeżanie REFRESH START WITH '10-JUL-2004' NEXT ROUND(SYSDATE)+1 AS -- komenda SELECT tworząca widok zmaterializowany MW_SALES początek Zapytania SELECT t1.name "CUSTOMER", t1.sly "SALES last year", t1.sty "SALES this year", -- użycie stworzonej wcześniej funkcji perc() perc (t1.sly, t1.sty) "DIFFERENCE", to_char(t1.max_contact,'dd-mm-yyyy') "LAST CONTACT" FROM -- użycie perspektywy in-line początek Zapytania (SELECT fc.name, -- wykorzystanie instrukcji warunkowej CASE, która sprawdza rok na fakturze. -- W tym przypadku wartość faktury będzie sumowana, jeżeli data -- sprzedaży pochodzi poprzedniego roku. SUM (CASE WHEN TO_CHAR (fi.sale_date, 'YYYY') = TO_CHAR (SYSDATE, 'YYYY')-1 THEN fi.val ELSE 0 END) AS "SLY", -- w tym przypadku wartość faktury będzie sumowana, jeżeli data -- sprzedaży pochodzi z roku bieżącego SUM (CASE WHEN TO_CHAR (fi.sale_date, 'YYYY') = TO_CHAR (SYSDATE, 'YYYY') THEN fi.val ELSE 0 END) AS "STY", -- wyświetlenie wyniku podzapytania mc mc.max_contact FROM fk_customers fc, fk_invoices fi, crm_customers cc, crm_fk, -- w celu pobrania daty ostatniego kontaktu należy użyć podzapytania początek Zapytania (SELECT c.id_customer, MAX (c.contact_date) max_contact FROM crm_contacts c GROUP BY c.id_customer) mc koniec Zapytania WHERE fi.customer_id = fc.id AND fc.id = crm_fk.id_cust_fk AND crm_fk.id_cust_crm = cc.id -- charakterystyczny dla ORACLE zapis outer join (+) AND cc.id = mc.id_customer(+) GROUP BY fc.name, mc.max_contact) t koniec Zapytania koniec Zapytania metry. Parametr BUILD IMMEDIATE mówi o tym, aby stworzyć i zmaterializować widok natychmiast. Zmaterializować oznacza w tym przypadku napełnić faktycznymi danymi. Drugi parametr REFRESH START określa, kiedy migawka ma się odświeżać i w jakim cyklu parametr NEXT. W naszym przypadku jest to 10 lipca 2004 roku, a cykl ma się powtarzać codziennie o godzinie 00:00. Cykl został określony poprzez użycie funkcji ROUND na systemowej kolumnie SYSDATE (kolumna ta zawiera aktualną datę), co w efekcie zwróciło bieżącą datę zaokrągloną do godziny 00: 00. Dodanie do typu DATE liczby całkowitej powoduje przesunięcie daty o tyle dni, ile wynosi podana przez nas wartość (możemy też używać liczb ułamkowych, które będą przedstawiały daną część dnia). Mając tak zaprogramowaną migawkę możemy przejść do zapytania SELECT, które stanowi główny trzon mechanizmu migawki MW _ SALES. Całość zapytania można podzielić na trzy części. Każda część jest osobnym zapytaniem. Zapytanie 1 (spójrzmy na oznaczenie na Listingu 4) wyznacza ostatnią datę kontaktu firmy z klientem. Jest to jednocześnie perspektywa in-line dla Zapytania 2 informacje uzyskane w wyniku wykonania Zapytania 1 będą użyte w Zapytaniu 2. Zapytanie 1 jest oparte na tabeli CRM _ CONTACTS, dla której został stworzony synonim c (dla krótszego i czytelniejszego zapisu). Funkcja MAX() w parze z klauzulą GROUP BY pobiera ostatnią datę z kolumny contact _ date dla każdego identyfikatora klienta id _ customer. W wyniku omawianego zapytania otrzymamy listę wszystkich klientów (identyfikatorów klientów) wraz z informacją o dacie ostatniego kontaktu. W wyniku wykonania Zapytania 2 otrzymamy przefiltrowane i zagregowane informacje mówiące o obrotach klientów w odpowiednich przedziałach czasowych. Ponadto każdemu klientowi zostaną przyporządkowane daty ostatniego kontaktu wyznaczone w Zapytaniu 1. Wykorzystamy cztery tabele i jedną perspektywę in-line (Zapytanie 1). Zwróćmy uwagę na złączenie tabeli systemu CRM CRM _ CUSTOMERS z perspektywą in-line za pomocą outer join. Dzięki temu zostało dokonane faktyczne połączenie obrotów klientów z ostatnią datą kontaktu. Filtrowanie danych polegać będzie na umieszczeniu obrotów klientów w odpowiedniej kolumnie. Jeśli faktura pochodzi z roku poprzedniego, wartości zostaną zapisane w kolumnie SLY, a pole STY przybierze wartość 0. Jeśli zaś faktura została wystawiona w roku bieżącym, postępujemy odwrotnie dane zostaną zapisane w STY, a do kolumny SLY wstawimy 0. W opisywanym mechanizmie użyliśmy instrukcji warunkowej CASE oraz funkcji TO _ CHAR(), która przekonwertowała datę do typu znakowego VARCHAR2 wynikowy format podaliśmy jako argument ('YYYY' czterocyfrowy rok). Uzyskana data faktury jest porównywana z systemową kolumną SYSDATE. Aby sprawdzić, czy data sprzedaży faktury jest z roku poprzedniego, z kolumny SYSDATE (już po zastosowaniu funkcji TO _ CHAR) odejmowana jest jedynka. 68 PHP Solutions Nr 6/2004

9 Moduł Raportów w PHP Listing 5. Fragment pliku include.php klasa report <?php class report{ var $level; var $AQuery; var $ALink; var $Acomment; function report($level){ // pobranie i ustawienie argumentu $level if ($level==""){ $this->level=0; else{ $this->level=$level; // metoda, która dodaje zapytanie, link i opis dla konkretnego raportu function add_query($lev,$sql,$url, $note){ $this->aquery[$lev]=$sql; $this->alink[$lev]=$url; $this->acomment[$lev]=$note; function gen_link(){ // generowanie linków na podstawie zmiennej $ALink for ($i = 0; $i < count($this->alink); $i++) { // przypisanie zmiennej $type wartości "w" oznacza wygenerowanie // raportu w formacie HTML, wartość "e" oznacza format XLS echo "<a href='".$_server['php_self']."?level=$i&type=w'> ".$this->alink[$i]."</a>"; echo "<a href='".$_server['php_self']."?level=$i&type=e'> (excel)</a><br> "; function table($conn){ // metoda wizualizująca raport (tabelka HTML) $level=$this->level; $sql= $this->aquery[$level]; $AComment=$this->AComment[$level]; $stmt= OCIParse($conn,$sql); // parsowanie i wykonywanie zapytania SQL OCIExecute($stmt); // przypisanie zmiennej $nrows wyniku zapytania SQL $nrows = OCIFetchStatement($stmt, $results); if ($nrows > 0) { echo "<table bgcolor='ffffff' border='1' align='center'>\n"; echo "<caption valign='top' align='center'><b>$acomment</b></caption>"; echo "<br><br><tr>\n"; // wypisywanie tablicy $results i tworzenie nagłówków tabeli wynikowej while (list($key, $val) = each($results)) { echo "<th>$key</th>\n"; echo "</tr>\n"; // wypisywanie rekord po rekordzie wyniku zapytania SQL for ($i = 0; $i < $nrows; $i++) { reset($results); echo "<tr>\n"; while ($column = each($results)) { $data = $column['value']; echo "<td>".$data[$i]."</td>\n"; echo "</tr>\n"; echo "</table>\n"; else { // zapytanie nie zwraca żadnego wyniku echo "BRAK DANYCH<br/>\n";?> Uzyskaliśmy w ten sposób dwa osobne zbiory wartości faktury z roku poprzedniego (SLY) oraz z roku bieżącego (STY). Następnie użyliśmy funkcji SUM(), która wraz z klauzulą GROUP BY podsumowała wartości faktur. W wyniku agregacji otrzymamy listę wszystkich klientów (NAME) wraz z ich obrotami za rok poprzedni (SLY) oraz bieżący (STY). Do tych informacji została dodana informacja z poprzedniego zapytania data ostatniego kontaktu (max _ contact). Posiadamy już wszystkie informacje, które mogliśmy pobrać z bazy danych. Pozostało nam wyliczenie wspomnianej różnicy procentowej dla wartości z dwóch kolumn (SLY i STY) tu wykorzystamy stworzoną wcześniej funkcję perc(). Spójrzmy na Zapytanie 3 jest ono w zasadzie przeniesieniem informacji z poprzedniej kwerendy w celu przekazania ich funkcji perc(). Ktoś mógłby zapytać, dlaczego nie użyliśmy tej funkcji wcześniej. Było to niemożliwe, ponieważ nie można użyć PERC() w stosunku do jednowierszowej funkcji agregacyjnej SUM(). Tak przetworzone i zagregowane dane możemy w prosty sposób przedstawić za pomocą PHP. Mechanizm PHP Mechanizm PHP będzie oparty o klasę report (patrz Listing 5), której zadaniem będzie pobranie danych z bazy oraz wyświetlenie ich w postaci tabeli dającej się wyeksportować do formatu XLS lub HTML. W pierwszym przypadku przeglądarka WWW po otrzymaniu nagłówka dokumentu Content-type: application/xls podejmie próbę jego otwarcia w arkuszu kalkulacyjnym. Aplikacja PHP to dwa pliki: include.php (Listing 5) będący zbiorem klas i funkcji oraz mr.php, w którym zostaną one wykorzystane. Nawiążmy teraz połączenie z bazą danych. Wykorzystamy w tym celu funkcję OCILogon() z pakietu OCI8: $conn = OCILogon("art","Xart123", { "orcl.world"); if (OCIError()!='') exit ("Błąd połączenia z bazą"); Jako argumenty podajemy kolejno nazwę i hasło użytkownika. Nie tworzymy elementów autoryzacyjnych, więc nazwę użytkownika i hasło ustawimy na stałe. Trzeci, opcjonalny argument funkcji jest nazwą połączenia (aliasem) zde- PHP Solutions Nr 6/

10 Projekty Listing 6. Plik mr.php <?php // uruchomienie/odtworzenie sesji session_start(); // wybranie formy raportu (e=xls; w=www) if ($type=="e"){ header("content-type: application/xls"); header("content-disposition: attachment; filename=ilkl.xls"); include 'include.php'; echo "<body><font face='arial'>"; // sprawdzamy, czy został już utworzony obiekt klasy report() if (isset($_session['se_obj'])) { // jeśli obiekt został wcześniej stworzony, należy go odserializować $report = unserialize($_session['se_obj']); // po każdym odserializowaniu obiekt musi uzyskać indeks raportu $report->report($level); else { // jeśli obiekt nie istnieje, należy go stworzyć, // uruchamiana jest metoda (konstruktor) report(), // której zadaniem jest ustalenie indeksu $report = new report($level); // przypisanie indeksu, zapytania oraz nazwy/linku raportowi $report->add_query(0,"select * FROM mw_sales","sales", "SALES Report (FULL)"); $report->add_query(1,"select * FROM mw_sales WHERE sign(difference)=1","sales +","SALES Report (PLUS)"); $report->add_query(2,"select * FROM mw_sales WHERE sign(difference)=-1","sales -","SALES Report (MINUS)"); // wygenerowanie menu Modułu Raportów $report->gen_link(); // wygenerowanie raportu w postaci tabelki $report->table($conn); // serializacja stworzonego obiektu $se_obj = serialize($report); // zapisanie kodu obiektu do tablicy zmiennych sesyjnych $_SESSION['se_obj']=$se_obj;?> Rysunek 6. Raport na stronie WWW finiowanym w pliku tnsnames.ora zawierającym pod określonymi nazwami opisy połączeń do baz danych. W przypadku kiedy go nie określimy, PHP pobierze automatycznie nazwę połączenia ze zmiennej środowiskowej ORACLE _ SID. Przyjrzyjmy się teraz klasie report przedstawionej na Listingu 5. Jej zadaniem będzie przekazanie zapytania do bazy danych, a następnie wygenerowanie tabeli HTML z pobranymi informacjami oraz stworzenie nawigacji (linków) między raportami (Rysunek 6). Szczegółowy opis zmiennych i metod tej klasy znajdziecie w Ramce Zmienne i metody klasy report. Sercem systemu będzie skrypt mr.php będzie on uruchamiał sesję oraz manipulował obiektami klasy report. W jednym egzemplarzu obiektu klasy report, będzie można zawrzeć wiele postaci obsługiwanego raportu oraz zbudować odpowiednią nawigacje miedzy nimi. Plik mr.php będzie miał za zadanie: otworzyć sesję, w której będzie przechowywany często zmieniający się na skutek interwencji operatora (funkcja report($level)) obiekt $report, weryfikację, czy operator wybrał raport do wyświetlenia na stronie WWW czy też do wyeksportowania do pliku XLS, sprawdzenie, czy obiekt został wcześniej stworzony, jeżeli jeszcze nie istnieje, to skrypt go utworzy; w przeciwnym przypadku obiekt zostanie odserializowany i ustalony główny indeks ($level) opracowywanego raportu, wygenerowanie mechanizmu sterującego raportem, czyli inaczej mówiąc stworzenie linków na stronie prowadzących do poszczególnych raportów, wizualizację raportu za pomocą tabelki, serializację przetworzonego obiektu i wysłania go do tablicy sesyjnej. Opisany mechanizm PHP stworzy Raport Obrotów ze sprzedaży za rok poprzedni i bieżący oraz dwa inne warianty tego samego raportu tzn. raport pozycji dla których obrót się zmniejszył oraz raport dla pozycji przyrostowych. Do poszczególnych wariantów zostaną wygenerowane odpowiednie linki na stronie WWW: Sales, Sales +, Sales -. Podsumowanie Nie jest sztuką stworzenie modułu raportowego generującego informacje z bazy danych. Wielu zapomina jednak o rozłożeniu ciężaru aplikacji na poszczególne części systemu serwer bazy danych i PHP, tak aby operacje wykonywały się szybciej i przy optymalnym wykorzystaniu zasobów systemowych. Stosowanie technologii zawartych w samym silniku bazy może zrewolucjonizować dotychczasowe podejście do przetwarzania danych, m. in. dzięki zapewnieniu odpowiedniej wydajności i bezpieczeństwa. Faktem jest, że wiele serwerów baz danych nie posiada zastosowanych w omawianym projekcie mechanizmów takich jak np. widoki zmaterializowane. Jednak za pomocą wewnętrznego języka proceduralnego (np. PL/SQL) można pisać własne funkcje rozszerzające standardową funkcjonalność serwera (np. stworzona przez nas funkcja perc()) implementując w ten sposób nieobsługiwane obiekty. 70 PHP Solutions Nr 6/2004

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE VARIABLE zmienna1 typ danych; BEGIN Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;

Bardziej szczegółowo

Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk

Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk Wstęp wprowadzający do laboratorium 2 mgr inż. Rafał Grycuk Plan prezentacji 1. Czym jest T-SQL i czym się różni od standardu SQL 2. Typy zapytań 3. Zapytanie typu SELECT 4. Słowo o indeksach T-SQL (1)

Bardziej szczegółowo

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

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1 Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych

Bardziej szczegółowo

15. Funkcje i procedury składowane PL/SQL

15. Funkcje i procedury składowane PL/SQL 15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp

Bardziej szczegółowo

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych Plan wykładu Bazy danych Cechy rozproszonej bazy danych Implementacja rozproszonej bazy Wykład 15: Rozproszone bazy danych Małgorzata Krętowska, Agnieszka Oniśko Wydział Informatyki PB Bazy danych (studia

Bardziej szczegółowo

Tworzenie raportów XML Publisher przy użyciu Data Templates

Tworzenie raportów XML Publisher przy użyciu Data Templates Tworzenie raportów XML Publisher przy użyciu Data Templates Wykorzystanie Szablonów Danych (ang. Data templates) jest to jedna z metod tworzenia raportów w technologii XML Publisher bez użycia narzędzia

Bardziej szczegółowo

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

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. 77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl Bazy danych Zapytania SELECT Dr inż. Paweł Kasprowski pawel@kasprowski.pl Przykład HAVING Podaj liczebność zespołów dla których najstarszy pracownik urodził się po 1940 select idz, count(*) from prac p

Bardziej szczegółowo

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie

Bardziej szczegółowo

Język SQL, zajęcia nr 1

Język SQL, zajęcia nr 1 Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze

Bardziej szczegółowo

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

Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592. Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592 Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami Spis treści Założenia Projektowe...1 Schemat Bazy Danych...1

Bardziej szczegółowo

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

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych Łukasz Przywarty 171018 Wrocław, 05.12.2012 r. Grupa: CZW/N 10:00-13:00 Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych Część 1: OLAP Prowadzący: dr inż. Henryk Maciejewski

Bardziej szczegółowo

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

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność

Bardziej szczegółowo

Baza danych. Baza danych to:

Baza danych. Baza danych to: Baza danych Baza danych to: zbiór danych o określonej strukturze, zapisany na zewnętrznym nośniku (najczęściej dysku twardym komputera), mogący zaspokoić potrzeby wielu użytkowników korzystających z niego

Bardziej szczegółowo

DECLARE typ [( )] [ NOT NULL ] [ { := DEFAULT } ];

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ]; Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server

Bardziej szczegółowo

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych Paweł Paduch paduch@tu.kielce.pl 06-04-2013 Rozdział 1 Wstęp Na dzisiejszych zajęciach zajmiemy się projektem bazy danych.

Bardziej szczegółowo

Microsoft SQL Server Podstawy T-SQL

Microsoft SQL Server Podstawy T-SQL Itzik Ben-Gan Microsoft SQL Server Podstawy T-SQL 2012 przełożył Leszek Biolik APN Promise, Warszawa 2012 Spis treści Przedmowa.... xiii Wprowadzenie... xv Podziękowania... xix 1 Podstawy zapytań i programowania

Bardziej szczegółowo

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Wprowadzenie do projektowania i wykorzystania baz danych Relacje Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR

Bardziej szczegółowo

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

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL 1 Podstawy relacyjnego modelu danych. 3h UWAGA: Temat zajęć jest typowo teoretyczny i stanowi wprowadzenie do zagadnień

Bardziej szczegółowo

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

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678'); polecenie UPDATE służy do aktualizacji zawartości wierszy tabel lub perspektyw składnia: UPDATE { } SET { { = DEFAULT NULL}, {

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze

Bardziej szczegółowo

Bazy danych - wykład wstępny

Bazy danych - wykład wstępny Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,

Bardziej szczegółowo

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

2010-11-22 PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH PLAN WYKŁADU Bezpieczeństwo w języku SQL Użytkownicy Uprawnienia Role BAZY DANYCH Wykład 8 dr inż. Agnieszka Bołtuć OGRANICZENIA DOSTĘPU DO DANYCH Ograniczenie danych z tabeli dla określonego użytkownika

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

Fizyczna struktura bazy danych w SQL Serwerze

Fizyczna struktura bazy danych w SQL Serwerze Sposób przechowywania danych na dysku twardym komputera ma zasadnicze znaczenie dla wydajności całej bazy i jest powodem tworzenia między innymi indeksów. Fizyczna struktura bazy danych w SQL Serwerze

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych semestr I

Zaawansowane bazy danych i hurtownie danych semestr I Podprogramy Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych semestr I Procedury do przeprowadzenia akcji Funkcje do obliczania wartości Pakiety do zbierania logicznie

Bardziej szczegółowo

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia BAZY DANYCH LABORATORIUM Studia niestacjonarne I stopnia Gdańsk, 2011 1. Cel zajęć Celem zajęć laboratoryjnych jest wyrobienie praktycznej umiejętności tworzenia modelu logicznego danych a nastepnie implementacji

Bardziej szczegółowo

Systemy baz danych 2 laboratorium Projekt zaliczeniowy

Systemy baz danych 2 laboratorium Projekt zaliczeniowy Dany jest następujący logiczny schemat bazy danych Systemy baz danych 2 laboratorium Projekt zaliczeniowy FAKTURY POZYCJE PK f_id_faktury PK p_id_pozycji f_data_wystawienia f_data_płatnosci f_czy_zaplacona

Bardziej szczegółowo

Przestrzenne bazy danych Podstawy języka SQL

Przestrzenne bazy danych Podstawy języka SQL Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured

Bardziej szczegółowo

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko Typy rozproszonych baz Systemy typu klient-serwer (jeden serwer) Jednorodna rozproszona baza (kilka serwerow, jeden system zarzadzania baza ) Niejednorodna

Bardziej szczegółowo

Bazy danych 10. SQL Widoki

Bazy danych 10. SQL Widoki Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela

Bardziej szczegółowo

Projektowanie baz danych za pomocą narzędzi CASE

Projektowanie baz danych za pomocą narzędzi CASE Projektowanie baz danych za pomocą narzędzi CASE Metody tworzenia systemów informatycznych w tym, także rozbudowanych baz danych są komputerowo wspomagane przez narzędzia CASE (ang. Computer Aided Software

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście. Rodzaje triggerów Triggery DML na tabelach INSERT, UPDATE, DELETE Triggery na widokach INSTEAD OF Triggery DDL CREATE, ALTER, DROP Triggery na bazie danych SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN

Bardziej szczegółowo

Uprawnienia, role, synonimy

Uprawnienia, role, synonimy Uprawnienia, role, synonimy Schemat, użytkownicy, autoryzacja użytkowników, uprawnienia systemowe i obiektowe, nadawanie i odbieranie uprawnień, tworzenie ról, przywileje, synonimy Schematy i użytkownicy

Bardziej szczegółowo

Tworzenie aplikacji bazodanowych w delphi dla dużych baz danych FRAMEWORK IMPET

Tworzenie aplikacji bazodanowych w delphi dla dużych baz danych FRAMEWORK IMPET Tworzenie aplikacji bazodanowych w delphi dla dużych baz danych FRAMEWORK IMPET Maciej Szymczak, maj 2001 soft@home.pl Ostatnia aktualizacja: 2012-03-31 1 Plan widoczny podczas całego wykładu Numer slajdu

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia,

Bardziej szczegółowo

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

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)

Bardziej szczegółowo

STROJENIE BAZ DANYCH: INDEKSY. Cezary Ołtuszyk coltuszyk.wordpress.com

STROJENIE BAZ DANYCH: INDEKSY. Cezary Ołtuszyk coltuszyk.wordpress.com STROJENIE BAZ DANYCH: INDEKSY Cezary Ołtuszyk coltuszyk.wordpress.com Plan spotkania I. Wprowadzenie do strojenia baz danych II. III. IV. Mierzenie wydajności Jak SQL Server przechowuje i czyta dane? Budowa

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE

Bardziej szczegółowo

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo

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

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych

Bardziej szczegółowo

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

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi 1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) Tworząc tabelę nie możemy określić, do którego pliku trafi, lecz możemy określić do której grupy plików trafi Zawsze istnieje grupa zawierająca

Bardziej szczegółowo

Projektowanie systemów baz danych

Projektowanie systemów baz danych Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do

Bardziej szczegółowo

Projektowani Systemów Inf.

Projektowani Systemów Inf. Projektowani Systemów Inf. Wykład VII Bezpieczeństwo Copyrights by Arkadiusz Rzucidło 1 Bezpieczeństwo Bezpieczeństwo związane z danymi Konstrukcja magazynów danych Mechanizmy zapisu i modyfikacji danych

Bardziej szczegółowo

NARZĘDZIA WIZUALIZACJI

NARZĘDZIA WIZUALIZACJI Kurs interaktywnej komunikacji wizualnej NARZĘDZIA WIZUALIZACJI Andrzej Łachwa andrzej.lachwa@uj.edu.pl 3 4/8 Zobacz film: http://www.ted.com/talks/david_mccandless_the_beauty_of_dat a_visualization.html

Bardziej szczegółowo

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Podstawy języka SQL. SQL Structured Query Languagestrukturalny Podstawy języka SQL SQL Structured Query Languagestrukturalny język zapytań DDL Język definicji danych (np. tworzenie tabel) DML Język manipulacji danych (np. tworzenie zapytań) DCL Język kontroli danych

Bardziej szczegółowo

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38 Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem zajęcia 1 dr Jakub Boratyński pok. A38 Program zajęć Bazy danych jako podstawowy element systemów informatycznych wykorzystywanych

Bardziej szczegółowo

Baza danych. Modele danych

Baza danych. Modele danych Rola baz danych Systemy informatyczne stosowane w obsłudze działalności gospodarczej pełnią funkcję polegającą na gromadzeniu i przetwarzaniu danych. Typowe operacje wykonywane na danych w systemach ewidencyjno-sprawozdawczych

Bardziej szczegółowo

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK Dostęp do baz danych z serwisu www - PHP Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK Bazy Danych I, 8 Grudzień 2009 Plan Trochę teorii Uwagi techniczne Ćwiczenia Pytania Trójwarstwowy

Bardziej szczegółowo

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

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE Wykład 9 Implementacja języka SQL w systemach baz danych Oracle manipulowanie danymi (DML), tworzenie, modyfikowanie i usuwanie obiektów bazy danych: tabel i perspektyw, więzów integralności, komentarzy

Bardziej szczegółowo

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych Plan wykładu Bazy danych Wykład 9: Przechodzenie od diagramów E/R do modelu relacyjnego. Definiowanie perspektyw. Diagramy E/R - powtórzenie Relacyjne bazy danych Od diagramów E/R do relacji SQL - perspektywy

Bardziej szczegółowo

Szkolenie Oracle SQL podstawy. Terminy. 15 17 lutego 2010 First Minute! 1100zł!

Szkolenie Oracle SQL podstawy. Terminy. 15 17 lutego 2010 First Minute! 1100zł! Szkolenie Oracle SQL podstawy Terminy 15 17 lutego 2010 First Minute! 1100zł! Opis szkolenia Baza danych Oracle od dawna cieszy się zasłużona sławą wśród informatyków. Jej wydajność, szybkość działania

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

SQL (ang. Structured Query Language)

SQL (ang. Structured Query Language) SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze

Bardziej szczegółowo

Oracle11g: Programowanie w PL/SQL

Oracle11g: Programowanie w PL/SQL Oracle11g: Programowanie w PL/SQL OPIS: Kurs pozwala zrozumieć zalety programowania w języku PL/SQL. Studenci uczą się tworzyć bloki kodu wykonywanego po stronie serwera, który może być współużytkowany

Bardziej szczegółowo

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

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni Akademia Morska w Gdyni Gdynia 2004 1. Podstawowe definicje Baza danych to uporządkowany zbiór danych umożliwiający łatwe przeszukiwanie i aktualizację. System zarządzania bazą danych (DBMS) to oprogramowanie

Bardziej szczegółowo

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

Ref. 7 - Język SQL - polecenia DDL i DML Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość

Bardziej szczegółowo

MVC w praktyce tworzymy system artykułów. cz. 1

MVC w praktyce tworzymy system artykułów. cz. 1 MVC w praktyce tworzymy system artykułów. cz. 1 Tworząc różnego rodzaju aplikacje natrafiamy na poważny problem utrzymania dobrej organizacji kodu przejrzystej oraz łatwej w rozbudowie. Z pomocą przychodzą

Bardziej szczegółowo

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

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania Przedmiot: Bazy danych Rok: III Semestr: V Rodzaj zajęć i liczba godzin: Studia stacjonarne Studia niestacjonarne Wykład 30 21 Ćwiczenia Laboratorium 30 21 Projekt Liczba punktów ECTS: 4 C1 C2 C3 Cel przedmiotu

Bardziej szczegółowo

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze Cechy bloków nazwanych: w postaci skompilowanej trwale przechowywane na serwerze wraz z danymi wykonywane na żądanie użytkownika lub w

Bardziej szczegółowo

Programowanie MorphX Ax

Programowanie MorphX Ax Administrowanie Czym jest system ERP? do systemu Dynamics Ax Obsługa systemu Dynamics Ax Wyszukiwanie informacji, filtrowanie, sortowanie rekordów IntelliMorph : ukrywanie i pokazywanie ukrytych kolumn

Bardziej szczegółowo

z przedmiotu: Techniki Informatyczne Stanisław Flaga (stanislaw.flaga@agh.edu.pl)

z przedmiotu: Techniki Informatyczne Stanisław Flaga (stanislaw.flaga@agh.edu.pl) mysql relacyjna baza danych wstęp Materiały pomocnicze do laboratorium z przedmiotu: Techniki Informatyczne Stanisław Flaga () Wydział Inżynierii Mechanicznej i Robotyki Katedra Automatyzacji Procesów

Bardziej szczegółowo

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań, 04.03.2010

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań, 04.03.2010 Bezpieczeństwo interoperacyjnego hostingu Gerard Frankowski, Zespół Bezpieczeństwa PCSS 4. Konferencja MIC Nowoczesne technologie bliżej nas Poznań, 04.03.2010 1 Agenda Wprowadzenie Zespół Bezpieczeństwa

Bardziej szczegółowo

Usługi analityczne budowa kostki analitycznej Część pierwsza.

Usługi analityczne budowa kostki analitycznej Część pierwsza. Usługi analityczne budowa kostki analitycznej Część pierwsza. Wprowadzenie W wielu dziedzinach działalności człowieka analiza zebranych danych jest jednym z najważniejszych mechanizmów podejmowania decyzji.

Bardziej szczegółowo

Wprowadzenie do baz danych

Wprowadzenie do baz danych Wprowadzenie do baz danych Bazy danych stanowią obecnie jedno z ważniejszych zastosowań komputerów. Podstawowe zalety komputerowej bazy to przede wszystkim szybkość przetwarzania danych, ilość dostępnych

Bardziej szczegółowo

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

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się

Bardziej szczegółowo

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

Laboratorium nr 4. Temat: SQL część II. Polecenia DML Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze

Bardziej szczegółowo

Hurtownie danych. Wstęp. Architektura hurtowni danych. http://zajecia.jakubw.pl/hur CO TO JEST HURTOWNIA DANYCH

Hurtownie danych. Wstęp. Architektura hurtowni danych. http://zajecia.jakubw.pl/hur CO TO JEST HURTOWNIA DANYCH Wstęp. Architektura hurtowni. Jakub Wróblewski jakubw@pjwstk.edu.pl http://zajecia.jakubw.pl/hur CO TO JEST HURTOWNIA DANYCH B. Inmon, 1996: Hurtownia to zbiór zintegrowanych, nieulotnych, ukierunkowanych

Bardziej szczegółowo

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej

Bardziej szczegółowo

Instrukcja obsługi programu

Instrukcja obsługi programu Instrukcja obsługi programu directintegrator ST5 wersja dla WF-Mag (SOTE 5) Spis treści 1. Wstęp...3 2. Instalacja...3 2.1. Przebieg Instalacji...3 2.1.1. Generowanie klucza aplikacji...8 2.1.2. Zakładka

Bardziej szczegółowo

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

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Grupa A (LATARNIE) Imię i nazwisko: Numer albumu: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Nazwisko prowadzącego: 11: 12: Suma: Ocena: Zad. 1 (10 pkt) Dana jest relacja T. Podaj wynik poniższego zapytania (podaj

Bardziej szczegółowo

Laboratorium 6 Tworzenie bloga w Zend Framework

Laboratorium 6 Tworzenie bloga w Zend Framework Laboratorium 6 Tworzenie bloga w Zend Framework Przygotowanie bazy danych 1. Wykonaj skrypt blog.sql, który założy w bazie danych dwie tabele oraz wpisze do nich przykładowe dane. Tabela blog_uzytkownicy

Bardziej szczegółowo

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

Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń. Cel: polecenia T-SQL Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS Authentication: SQL Server Authentication Username: student01,, student21 Password: student01,., student21

Bardziej szczegółowo

OLAP i hurtownie danych c.d.

OLAP i hurtownie danych c.d. OLAP i hurtownie danych c.d. Przypomnienie OLAP -narzędzia analizy danych Hurtownie danych -duże bazy danych zorientowane tematycznie, nieulotne, zmienne w czasie, wspierjące procesy podejmowania decyzji

Bardziej szczegółowo

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa) Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa dwunasty PL/SQL, c.d. 1 / 37 SQL to za mało SQL brakuje możliwości dostępnych w językach proceduralnych.

Bardziej szczegółowo

Oracle Label Security

Oracle Label Security VIII Seminarium PLOUG Warszawa Kwiecieñ 2003 Oracle Label Security Pawe³ Chomicz (chomicz@altkom.com.pl) Altkom Akademia S.A. Oracle Label Security 31 1. Wstęp Artykuł został opracowany na podstawie materiału

Bardziej szczegółowo

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012: Systemy baz danych 16.04.2013 1. Plan: 10. Implementacja Bazy Danych - diagram fizyczny 11. Implementacja Bazy Danych - implementacja 2. Zadania: 1. Przygotować model fizyczny dla wybranego projektu bazy

Bardziej szczegółowo

www.comarch.pl/szkolenia Operacja PIVOT w języku SQL w środowisku Oracle 21.11.2012

www.comarch.pl/szkolenia Operacja PIVOT w języku SQL w środowisku Oracle 21.11.2012 Operacja PIVOT w języku SQL w środowisku Oracle 21.11.2012 Zakres Wprowadzenie Idea przestawiania danych Możliwe zastosowania Przestawianie danych bez klauzuli PIVOT Konstrukcja klauzuli Korzyści ze stosowania

Bardziej szczegółowo

Materiały do laboratorium MS ACCESS BASIC

Materiały do laboratorium MS ACCESS BASIC Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I

Bardziej szczegółowo

Programowanie obiektów

Programowanie obiektów Programowanie obiektów lokalne tabele tymczasowe, globalne tabele tymczasowe, zmienne lokalne, zmienne globalne przypisane wartości zmiennym 1 T-SQL Transact SQL (T-SQL), tak jak inne języki programoawania

Bardziej szczegółowo

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Uwierzytelnianie użytkowników, Obiekt session, Silniki

Bardziej szczegółowo

REFERAT PRACY DYPLOMOWEJ

REFERAT PRACY DYPLOMOWEJ REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany

Bardziej szczegółowo

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X Wrocław 2006 INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl INTERNETOWE BAZY DANYCH PLAN NA DZIŚ zajęcia 1: 2. Procedury składowane

Bardziej szczegółowo

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych Projektowanie bazy danych Jarosław Kuchta Projektowanie Aplikacji Internetowych Możliwości projektowe Relacyjna baza danych Obiektowa baza danych Relacyjno-obiektowa baza danych Inne rozwiązanie (np. XML)

Bardziej szczegółowo

Zarządzanie obiektami bazy danych Oracle11g

Zarządzanie obiektami bazy danych Oracle11g Zarządzanie obiektami bazy danych Oracle11g Wstęp Obiekty to struktury przechowujące, porządkujące lub operujące na danych takie jak: Tabele Więzy integralności Indeksy Widoki Sekwencje Procedury Linki

Bardziej szczegółowo

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1 Bazy danych wprowadzenie teoretyczne Piotr Prekurat 1 Baza danych Jest to zbiór danych lub jakichkolwiek innych materiałów i elementów zgromadzonych według określonej systematyki lub metody. Zatem jest

Bardziej szczegółowo

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów Aplikacje internetowe KL. III Rok szkolny: 013/01 Nr programu: 31[01]/T,SP/MENIS/00.06.1 Okres kształcenia: łącznie ok. 170 godz. lekcyjne Moduł Bok wprowadzający 1. Zapoznanie z programem nauczania i

Bardziej szczegółowo

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, 351203 O STRUKTURZE PRZEDMIOTOWEJ

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, 351203 O STRUKTURZE PRZEDMIOTOWEJ PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, 351203 O STRUKTURZE PRZEDMIOTOWEJ Systemy baz danych 1. 2 Wstęp do baz danych 2. 2 Relacyjny model baz danych. 3. 2 Normalizacja baz danych. 4. 2 Cechy

Bardziej szczegółowo

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazowy skrypt PHP do ćwiczeń z bazą MySQL: Utwórz skrypt o nazwie cw7.php zawierający następującą treść (uzupełniając go o właściwą nazwę uŝytkownika

Bardziej szczegółowo

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi 1 Rozdział 1 Wprowadzenie do PHP i MySQL Opis: W tym rozdziale kursanci poznają szczegółową charakterystykę

Bardziej szczegółowo

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

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL, Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających

Bardziej szczegółowo

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS UNIWERSYTET ZIELONOGÓRSKI INSTYTUT INFORMATYKI I ELEKTROTECHNIKI ZAKŁAD INŻYNIERII KOMPUTEROWEJ Przygotowali: mgr inż. Arkadiusz Bukowiec mgr inż. Remigiusz Wiśniewski LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Bardziej szczegółowo

Oracle Designer. Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera :

Oracle Designer. Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera : Oracle Designer Oracle Designer jest jednym z głównych komponentów pakietu Oracle Developer Suite. Oracle Designer wspiera : - modelowanie procesów biznesowych - analizę systemu informatycznego - projektowanie

Bardziej szczegółowo

Laboratorium 7 Blog: dodawanie i edycja wpisów

Laboratorium 7 Blog: dodawanie i edycja wpisów Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą

Bardziej szczegółowo

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach Modelowanie danych, projektowanie systemu informatycznego Modelowanie odwzorowanie rzeczywistych obiektów świata rzeczywistego w systemie informatycznym. Modele - konceptualne reprezentacja obiektów w

Bardziej szczegółowo