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 ski@ph psolm a g.or g )

2 Początki, czyli Interbase za darmo Anatol Ogórek Programista PHP najczęściej wybiera MySQL lub PostgreSQL wychodząc z założenia, że produkt najpopularniejszy oznacza najlepszy. Ten warunek nie zawsze jest jednak spełniony. Od 2000 roku bardzo intensywnie rozwijany jest projekt. Efektem prac jest darmowa, w pełni relacyjna i profesjonalna baza danych, wprost idealna dla webdeweloperów. W SIECI 1. oficjalna strona a 2. informacje na temat Interbase/ 3. strona dla użytkowników IB/FB 4. de/ strona z narzędziami dla IB/FB (po niemiecku) 5. strona dla początkujących użytkowników FB 6. rge.net/ interfejs webowy do zarządzania FB/IB NA CD Na dołączonym do pisma CD znajdują się wszystkie omawiane w artykule skrypty oraz program instalacyjny a. Zalet spółki PHP + SQL nie sposób nie docenić. Co ciekawe, wielu webmasterów utożsamia SQL-a z bazą danych MySQL sądząc, że jest to jedyne słuszne rozwiązanie. Niektórzy wykorzystują też coraz popularniejszego SQLite'a lub linuksowego PostgreSQL-a. To jednak nie koniec dobrych rozwiązań. Mało tego, istnieją systemy lepsze, a jednym z nich jest. Nazwa wielu osobom skojarzy się (po części słusznie) z odchudzoną przeglądarką internetową Mozilla, którą nieświadomie ochrzczono w ten sposób. Spowodowało to spore zamieszanie i wiele dyskusji, ponieważ nazwa ta była już wcześniej zajęta przez darmową bazę danych, która mimo wielu zalet ciągle jest niestety mało znana. 25 lipca 2000 roku Borland opublikował kod źródłowy swojej, do dzisiaj bardzo popularnej bazy Interbase na licencji IPL (InterBase Public License v.1.0). Wtedy na jego podstawie został zapoczątkowany projekt SQL, który ma na celu dalsze rozwijanie bardzo już solidnego narzędzia Borlanda. stał się bazą danych oferowaną na licencji Open Source, a co za tym idzie, zupełnie darmową i do dzisiejszego dnia intensywnie rozwijaną. Co należy wiedzieć? Czytelnikowi przyda się ogólna wiedza na temat relacyjnych baz danych. Powinien też znać podstawy PHP. Co obiecujemy? Z artykułu czytelnik dowie się, jak zbudować aplikację bazodanową w oparciu o a, z uwzględnieniem takich cech jak transakcyjność, wyzwalacze czy blokady na poziomie wierszy. Powiemy też, dlaczego a w przeciwieństwie do MySQL-a można uważać za w pełni relacyjną bazę danych. 44

3 Początki Dostępny jest na wielu różnych platformach, począwszy od Linuksa, poprzez szereg innych systemów uniksowych i Microsoft Windows, a na Mac OS X kończąc. Przyjrzyjmy się bliżej jego możliwościom. Potęga ognistego ptaka Niewątpliwie za jedną z większych zalet a można uznać jego łatwość obsługi. Instalacja pod Windows sprowadza się do kilku kliknięć myszką, natomiast w systemach uniksowych wystarczy uruchomić odpowiedni skrypt instalacyjny. Baza potrzebuje bardzo niewielu zasobów systemowych, zarówno jeśli chodzi o miejsce na dysku jak i pamięć operacyjną. Wynika to stąd, że silnik Interbase projektowany był w czasach, gdy komputery nie miały jeszcze tak dużej mocy obliczeniowej jak obecnie. Nie oznacza to, że baza jest prymitywna - wręcz przeciwnie, funkcjonalnością dorównuje wielu komercyjnym i drogim odpowiednikom. Pliki bazy danych mogą być rozmieszczone w wielu różnych miejscach na dysku i nic nie stoi na przeszkodzie, aby przechowywać je na osobnych partycjach. Jest to niewątpliwą zaletą, jeśli spodziewamy się, że nasza baza może w przyszłości osiągnąć duży rozmiar. Kolejną cechą a jest niemal pełna zgodność ze standardami SQL: zaimplementowano w niej większość cech SQL-89, SQL-92 oraz część właściwości SQL-99. System posiada pełną obsługę złączeń warunkowych i bezwarunkowych (ang. inner join, left join, right join, outer join), unie (ang. unions) i perspektywy (ang. views). Dla użytkowników MySQL-a nowością będzie możliwość korzystania z podzapytań (ang. subqueries). Dodatkowo wsparcie dla pól wyliczanych (ang. calculated fields), procedur składowanych (ang. stored procedures), wyzwalaczy (ang. triggers), wyzwalaczy na perspektywach, więzów (ang. constraints) czy też lokalizacji sprawia, że bazę można uznać za w pełni profesjonalną. Generatory Każda baza danych posiada swój mechanizm nadawania unikalnych identyfikatorów. Przykładowo w MySQL możemy korzystać z pól typu autoincrement, a w Oracle z sekwencji. W zie wykorzystuje się generatory. Generator nie jest ściśle powiązany z żadną kolumną, ani nawet z żadną tabelą. Może się zdarzyć, że jeden generator będzie obsługiwał wszystkie tabele naszej bazy. Zwykle jednak przyjmuje się, że istnieje osobny generator dla każdej tabeli, która posiada klucz główny (ang. primary key). Aby stworzyć generator, wystarczy wykonać polecenie: CREATE GENERATOR nazwa_generatora; Następnie, aby nadawanie unikalnych numerów odbywało się automatycznie, można na tabelę założyć wyzwalacz: :SET TERM!! ; CREATE TRIGGER SET_UNIQUE_ FOR OUR_TABLE BEFORE INSERT AS BEGIN IF (NEW. IS NULL) THEN NEW. = GEN_(OUR_TABLE_GENERATOR, 1); END!! SET TERM ;!! W tym wypadku przed wstawieniem wiersza do tabeli, jeśli pole ma wartość NULL nadawana jest mu kolejna wartość generatora. Nie jest jednak konieczne używanie wyzwalaczy. Wartość generatora można również pobrać i wstawić do bazy ręcznie za pomocą funkcji: GEN_(nazwa_generatora, skok). Bardzo ważną cechą generatorów jest to, że nie są transakcyjne. Jeśli rozpoczniemy transakcję, pobierzemy kolejną wartość z generatora, a następnie anulujemy transakcję, generator nie cofnie się do poprzedniej wartości. Wbrew pozorom jest to olbrzymia zaleta, ponieważ daje nam stuprocentową pewność, że otrzymamy unikalne. Dla webdeweloperów świetnie nadaje się do tworzenia dynamicznych serwisów WWW. Ciężko podać przypadek, w którym nie sprostałby naszym wymaganiom. Jeśli potrzebujemy bazy prostej w administracji, wieloplatformowej, mającej niewielkie wymagania sprzętowe, a do tego darmowej, wybór może być tylko jeden. Istnieje oczywiście Postgre- SQL, lecz uruchomienie go na systemach innych niż Linux jest dość trudne. PostgreSQL ma też zdecydowanie większe wymagania, jeśli chodzi o zasoby systemowe oraz przestrzeń na dysku, a jego konfiguracja i administracja jest znacznie bardziej skomplikowana. Warto dodać, że tempo rozwoju a jest zawrotne, a kolejne wersje przynoszą coraz większą funkcjonalność i wydajność systemu. Praktyka Zalety a można mnożyć bardzo długo. Przejdźmy jednak do konkretów. Załóżmy, że tworzymy serwis wymagający wysokiej niezawodności, bezpieczeństwa oraz kontroli integralności danych. Potrzebujemy więc bazy z doskonałą obsługą transakcyjności. Transakcja to zbiór operacji, których wykonanie musi zakończyć się sukcesem. W przypadku niepowodzenia którejkolwiek z nich wszystkie powinny być anulowane. Transakcje opisuje zasada AC Atomicity, Consistency, Isolation, and Durability: Atomicity transakcja może być wykonana tylko w całości albo wcale, Consistency stan bazy danych zawsze przedstawia stan przed lub po transakcji. Zapytania do systemu w czasie wykonywania transakcji muszą pokazywać stan bazy przed transakcją, Isolation transakcja zachodzi niezależnie od innych wykonywanych operacji, w tym od innych transakcji, Durability w przypadku awarii całego systemu bazodanowego transakcje pozostają kompletne. W naszym projekcie MySQL niestety się nie sprawdzi, ponieważ transakcje w tej bazie są dopiero w powijakach. Jeśli dodatkowo system ma być dostępny na różnych platformach systemowych, nie mamy zbyt wielkiego wyboru. Pokażemy teraz, jak w praktyce wygląda wykorzystanie a z poziomu PHP. Spróbujemy wykorzystać transakcyjność za pomocą funkcji wbudowanych 45

4 Początki Listing 1. Tworzymy tabelę INVOICE DROP TABLE INVOICE; CREATE TABLE INVOICE( INTEGER NOT NULL PRIMARY KEY, NUMBER varchar(30) default '', DOC_DATE date, SALE_DATE date, CONTRACTOR varchar(250) default '', NETTO NUMERIC(15,2) default 0, VAT NUMERIC(15,2) default 0, GROSS_SUM NUMERIC(15,2) default 0 ); DROP GENERATOR INVOICE_GEN; CREATE GENERATOR INVOICE_GEN; w PHP oraz zastosować wyzwalacze i procedury składowane. Zacznijmy więc od podstaw, czyli od instalacji. Instalacja Wersja dla Microsoft Windows rozpowszechniana jest w postaci standardowego instalatora. Jedyna opcja, którą warto zaznaczyć, to copy client library to <system> directory, co spowoduje, że biblioteka FBCLIENT.DLL zostanie skopiowana do katalogu systemowego. Na koniec należy jeszcze zadecydować, czy ma być uruchamiany jako usługa (Win XP, Win 2000) czy jako aplikacja (Win 9x). Po kilku minutach mamy zainstalowaną i gotową do użycia bazę danych. W przypadku Linuksa po pobraniu i rozpakowaniu pakietu należy z poziomu użytkownika root uruchomić skrypt install.sh, który cały proces instalacji wykona automatycznie. Nasza baza zostanie zainstalowana w katalogu /opt/firebird/. Wszystkie niezbędne narzędzia administracyjne znajdują się w katalogu instalacyjnym, w podkatalogu bin/. Będziemy jeszcze poproszeni o podanie standardowego hasła masterkey dla domyślnego użytkownika SYSDBA (administratora bazy danych). Oczywiście można korzystać z ustawień domyślnych, co pozbawia nas wszelkich dodatkowych czynności administracyjnych, ale nie jest to bezpieczne. Warto zmienić domyślne hasło oraz założyć nowego użytkownika. W tym celu należy skorzystać z polecenia gsec z podkatalogu bin/:./gsec -user SYSDBA -pass masterkey Listing 2. Tworzymy tabelę POSITIONS oraz generator DROP TABLE POSITIONS; CREATE TABLE POSITIONS( id INTEGER NOT NULL PRIMARY KEY, _INVOICE INTEGER, ITEM VARCHAR(20) default '', QUANTITY NUMERIC(15,3) default 0, NETTO NUMERIC(15,2) default 0, VAT_RATE NUMERIC(5,2) default 0); DROP GENERATOR POSITIONS_GEN; CREATE GENERATOR POSITIONS_GEN; SET TERM!!; create trigger POSITIONS_GEN_ for POSITIONS BEFORE INSERT POSITION 0 AS BEGIN NEW.id = GEN_(POSITIONS_GEN,1); END!! SET TERM ;!! Następnie możemy zmienić hasło administratora: GSEC>modify SYSDBA S -pw nowe_hasło oraz dodać nowego użytkownika foo z hasłem bar: GSEC>add foo -pw bar GSEC>quit Po tych czynnościach możemy utworzyć nową bazę danych, której właścicielem będzie użytkownik foo. Można to zrobić z poziomu konsoli isql:./isql SQL>CREATE DATABASE 'invoice.gdb's USER 'foo' PASSWORD 'bar'; Na dysku została utworzona baza danych plik invoice.gdb. pozwala dodatkowo na skopiowanie tego pliku w dowolne miejsce na dysku stanowi to jego olbrzymią zaletę. Wystarczy, że w ścieżce do bazy podczas połączenia wpiszemy: localhost:/sciezka/do/pliku/s invoice.gdb i baza zostanie poprawnie otwarta (zakładając oczywiście, że nadane są prawa do odczytu/zapisu pliku). W ten sposób możemy utworzyć kilka różnych baz danych i rozmieścić je na osobnych partycjach. Daje to nam dużą elastyczność i pewność, że w razie braku miejsca na jednej z partycji, możemy umieścić plik z bazą na nowo dodanym dysku zmieniając jedynie ścieżkę dostępu. W dalszej części artykułu zakładamy, że użytkownik korzysta z systemu Linux (w przypadku systemu Windows zmiany będą niewielkie w większości wypadków wystarczy jedynie zmodyfikować ścieżki dostępu) oraz że plik invoice.gdb znajduje się w katalogu /opt/firebird. Przykład z życia Załóżmy, że piszemy skrypt do wystawiania faktur VAT. Tworzymy więc pliki invoice.sql (Listing 1) oraz positions.sql (Listing 2) i wykonujemy dodając do bazy nowe tabele: /opt/firebird/bin/isql -u foo S -p bar /opt/firebird/ invoices.gdb<invoice.sql /opt/firebird/bin/isql -u foo S -p bar /opt/firebird/s invoices.gdb<positions.sql Zakładamy, że użytkownik wprowadził już dane. Pora wykorzystać PHP i połączyć się z em spójrzmy zatem na Listing 3. Do nawiązania połączenia służy funkcja ibase _ connect(). Teraz musimy zapisać dane do tabel. Aby mieć pewność, że dane zostały zapisane poprawnie, musimy w tym miejscu rozpocząć transakcję: $tr = ibase_trans($dbh);s Po tej czynności możemy przejść do właściwych operacji, czyli zapisu danych. Zakładamy, że dane faktury znajdują się w tablicy asocjacyjnej, której pola mają takie same nazwy jak pola tabeli w bazie danych. Na początku musimy zapisać ogólne dane dotyczące faktury do tabeli INVOICE. W tym celu należy najpierw pobrać wartość generatora przypisanego do tej tabeli za pomocą zapytania: select GEN_(INVOICE_GEN, 1)S FROM RDB$DATABASE Teraz możemy wstawić do bazy dane faktury. Należy wspomnieć, że znaną praktyką jest wstawianie wartości do 46

5 Początki tabeli przed pobraniem wygenerowanego identyfikatora przy pomocy funkcji MAX(nazwa _ pola). W przypadku aplikacji WWW postępowanie takie jest bardzo niebezpieczne, ponieważ może się okazać, że otrzymaliśmy identyfikator rekordu, który w międzyczasie wstawił ktoś inny. Wtedy zapisywane w kolejnym kroku pozycje dopisalibyśmy do zupełnie innej faktury. Bezpieczeństwo tego typu operacji w znacznej mierze zależy od stosowanego przez bazę danych poziomu izolacji (ang. isolation level). Dla a domyślnie jest to poziom snapshot (transakcja ma dostęp do wszystkich tabel, lecz nie do zmian wprowadzonych i zatwierdzonych przez inne, rozpoczęte później transakcje), w którym moglibyśmy skorzystać z funkcji MAX() do pobrania identyfikatora ostatnio dodanej pozycji, lecz jeśli przełączylibyśmy poziom izolacji np. na read commited (transakcja ma dostęp do wszystkich tabel i zmian wprowadzonych oraz zatwierdzonych przez inne transakcje) mogłoby się okazać, że nasz program w niektórych przypadkach nie działa poprawnie. Mamy zatem pobrane wcześniej faktury możemy zapisać do bazy wszystkie pozycje tablicy POSITIONS z tym identyfikatorem jako kluczem obcym. Jeśli w trakcie wystąpi błąd zapisu którejkolwiek pozycji, powinniśmy wycofać wszystkie operacje (wraz z zapisaniem danych ogólnych) oraz wyświetlić odpowiedni komunikat błędu. Wyzwalacze Wyzwalacz (ang. trigger) to specjalna procedura, uruchamiana automatycznie podczas zajścia operacji na bazie danych. W zie można tworzyć wyzwalacze uruchamiane przed lub po wstawianiu (INSERT), modyfikacji (UPDATE) lub skasowaniu (DELETE) rekordu. Wyzwalacze nie służą jedynie go generowania unikalnych identyfikatorów. Można je wykorzystać do wielu różnych celów na przykład do obsługi pól automatycznie wyliczanych, jednak głównym ich zadaniem jest zapewnienie spójności danych w bazie. Na przykład, po skasowaniu faktury, powinny również zostać usunięte wszystkie jej pozycje. W tym celu możemy stworzyć odpowiedni wyzwalacz, który pobierze identyfikator usuniętego rekordu i skasuje wszelkie pozycje z takim kluczem obcym Listing 4. Po dodaniu takiego wyzwalacza Listing 3. Łączymy się z em i wstawiamy dane do bazy <?php $host = 'localhost:/opt/firebird/invoice.gdb'; $username = 'foo'; $password ='bar'; $dbh = ibase_connect($host, $username, $password); if (!$dbh) die ("error connecting to database"); $tr = ibase_trans( $dbh); $invoice = array("number"=>"2/04/2004", "DOC_DATE"=>" ","SALE_DATE"=>" ", "CONTRACTOR"=>"Jan Kowalski Sp. z o.o", "NETTO"=>"100","VAT"=>"22","GROSS_SUM"=>"122"); $poz= array( array( "ITEM"=>"Drukarka", "QUANTITY"=>"2", "NETTO"=>"400","VAT_RATE"=>"0.22"), array("item"=>"monitor", "QUANTITY"=>"1", "NETTO"=>"1200","VAT_RATE"=>"0.22")); // pobieramy wartość pola id przed wstawieniem do bazy $query = 'select GEN_(INVOICE_GEN, 1) FROM RDB$DATABASE'; $sth = ibase_query($tr, $query); if (!$sth) database_error ("Błąd przy pobieraniu ", $tr); $row = ibase_fetch_row($sth); $id = $row[0]; $query = "INSERT INTO INVOICE (, NUMBER, DOC_DATE, SALE_DATE, CONTRACTOR, NETTO, VAT, GROSS_SUM) VALUES('$id', '${invoice[number]}','${invoice[doc_date]}', '${invoice[sale_date]}','${invoice[contractor]}', '${invoice[netto]}','${invoice[vat]}','${invoice[gross_sum]}')"; // wstawiamy fakturę do bazy $sth = ibase_query($tr, $query); if (!$sth) database_error ("Błąd przy wstawianiu faktury", $tr); // wstawiamy kolejno wszystkie pozycje faktury for ($a = 0; $a<count( $poz ); $a++) { $query = "INSERT INTO POSITIONS (_INVOICE, ITEM, QUANTITY, NETTO) VALUES($id,'".$poz[$a][ITEM]."','".$poz[$a][QUANTITY]."', '".$poz[$a][netto]."')"; $sth = ibase_query($tr, $query); if (!$sth) database_error ("Błąd przy wstawianu pozycji", $tr); } // wszystko poszło OK. Zatwierdzamy transakcję. ibase_commit($tr); echo ("Fakturę dodano pomyślnie"); // funkcja obsługująca błędy function database_error ($error, $transaction) { // wycofujemy transakcję ibase_rollback($transaction); }?> // i kończymy działanie skryptu komunikatem o błędzie die($error); 47

6 Początki Listing 4. Wyzwalacz, który usunie wszystkie pozycje faktury z danym kluczem obcym DROP trigger delete_invoice; SET TERM!!; create trigger delete_invoice for invoice AFTER DELETE AS BEGIN delete from positions where id_invoice=old.; END!! SET TERM ;!! działa zupełnie inaczej. Domyślnie każda transakcja widzi swoją wersję rekordu z chwili, kiedy została rozpoczęta. Zmiany wprowadzone przez inne transakcje nie są widoczne, dopóki transakcje nie zostaną zatwierdzone (commit). Najlepiej zobrazuje to poniższy przykład: Otwieramy pierwszą sesję, która modyfikuje pozycję z tabeli BOOK: Session #1: SQL> select * from book; 1 Lord of the rings Widać, że każda z sesji posiada odrębne wersje rekordów widoczne w ramach swojej transakcji. Zatwierdźmy teraz wprowadzone zmiany: Session #1: SQL> commit; Session #2: SQL> commit; SQL> select * from book; możemy wejść do konsoli isql i usunąć ręcznie jedną z wstawionych wcześniej faktur. Przekonamy się, że pozycje będą kasowane automatycznie. Procedury składowane Użytkownicy mający doświadczenie w pracy z dużymi środowiskami bazodanowymi zapewne nieraz korzystali z procedur składowanych (ang. stored procedures). Są to procedury pisane w wewnętrznym języku bazy danych, parsowane i kompilowane jednorazowo przed pierwszym wykonaniem. Zastosowanie ich znacząco odciąży naszą aplikację, przyspieszy jej działanie i zwiększy bezpieczeństwo. W zie również możemy pisać takie procedury przy użyciu języka PSQL, który, choć może mniej rozbudowany od swoich odpowiedników w ORACLE czy PostgreSQL, spełnia wymagania większości użytkowników. Dodatkowo, pozwala na tworzenie funkcji UDF (User Defined Functions). Są one pisane w zewnętrznym języku (np. C/C++ lub Delphi), a następnie kompilowane do postaci bibliotek współdzielonych (*.dll lub *.so). Biblioteki te ładowane są do bazy danych, po czym można z nich korzystać z poziomu SQL-a. Procedury składowane w połączeniu z funkcjami UDF mogą przerzucić część ciężaru czasochłonnych operacji na silnik bazy danych, a co za tym idzie dodatkowo zwiększyć wydajność aplikacji. Blokady na poziomie wierszy MySQL domyślnie oferuje blokady wyłącznie na poziomie tabel. W przypadku bardzo obciążonych serwisów metoda taka jest dalece nieefektywna. Mechanizm transakcji w zie 1 Lord of the rings SQL> update book set title = 'Harry Potter' where id = 1; SQL> select * from title; 1 Harry Potter Na poziomie tej sesji, zawartość tabeli została zmodyfikowana. Otwieramy drugą sesję, która odwołuje się do tej samej tabeli: Session #2: SQL> select * from book; 1 Harry Potter Jak widać. niezatwierdzona transakcja z sesji pierwszej nie zabroniła dostępu do danych transakcji z sesji drugiej, jednakże widoczne były nieuaktualnione (stare) dane. Innym bardzo ważnym mechanizmem blokowania dostępu do rekordów jest select for update. Ta metoda gwarantuje, że żadna inna sesja nie zmieni wybranych danych, dopóki sesja blokująca nie zakończy ich przetwarzania (czyli nie zatwierdzi transakcji). Spójrzmy na poniższy przykład: Session #1: SQL> select * from book where id = 1 for update Pseudorelacyjność kontra MySQL Klucze obce służą do tworzenia połączeń relacyjnych (relacji stąd właśnie pochodzi nazwa relacyjna baza danych) pomiędzy tabelami. W większości przypadków dopasowywane pola to: klucz podstawowy (primary key) z głównej tabeli, który dostarcza unikatowego identyfikatora, dla klucza obcego z każdego rekordu w drugiej tabeli. Weźmy bazę danych dokumentów z księgowości tabele dokumenty i kontrahenci: tabela dokumenty zawiera m. in. kolumny id _ dokumentu (klucz główny), numer, data, kontrahent, a tabela kontrahenci: kolumny id _ kontrahenta (klucz główny), nazwisko, adres, telefon, , itp. Kolumna dokumenty.kontrahent może być kluczem obcym odnoszącym się do kolumny kontrahenci.id _ kontrahenta. Unika się w ten sposób powielania tych samych danych w różnych tabelach, co m. in. ułatwia utrzymanie zgodności pomiędzy zawartością bazy danych, a stanem faktycznym. Nic nie stoi na przeszkodzie, aby taką relację stworzyć bez kluczy głównych/obcych, lecz wtedy nie będzie zachowana pełna integralność danych. Dzięki kluczom silnik bazy danych dba o to, aby do tabeli podrzędnej możliwe było wstawienie jedynie rekordów, które mają przyporządkowany wpis w tabeli głównej. Niemożliwe będzie również usunięcie rekordu z tabeli głównej, jeśli nie zostały wcześniej usunięte wszystkie przyporządkowane mu rekordy z tabeli podrzędnej. MySQL nie posiada pełnego wsparcia dla mechanizmu kluczy głównych, dlatego często bywa nazywany pseudorelacyjną bazą danych. Częściowa implementacja dostępna jest jedynie dla tabel typu InnoDB. oferuje pełne wsparcie dla kluczy obcych, wraz ze sprawdzaniem więzów integralności. 48

7 Początki with lock; 1 Lord of the rings Session #2: SQL> update book set title = 'PHP Solutions' where id = 1; (Blokada) Jak widać, w tym wypadku druga sesja nie może modyfikować nawet swojej wersji rekordu. Może tego dokonać dopiero po zatwierdzeniu transakcji w obu sesjach. Należy zaznaczyć, że takie sterowanie dostępem do rekordów równie dobrze możemy zastosować z poziomu PHP. MySQL nie oferuje tak rozbudowanego mechanizmu obsługi transakcji, nawet jeśli korzystamy z tabel typu InnoDB. Abstrakcyjny dostęp do a Wielu webmasterów przyzwyczaiło się już do korzystania z abstrakcyjnych metod dostępu do bazy danych. Nie ma w tym nic dziwnego, jako że w PHP obsługa każdej bazy danych odbywa Listing 5. Przykład połączenia z bazą przy użyciu biblioteki PEAR <?php?> require_once("pear.php"); require_once("db.php"); $dsn = array( 'phptype' => 'ibase', 'username' => 'foo', 'password' => 'bar', 'hostspec' => 'localhost', 'database' => '/opt/ firebird/invoice.gdb', ); $options = array( 'persistent' => true ); $db = DB::connect($dsn,$options); $sql = "select * from invoice"; $result = $db->query($sql); $row = $result->fetchrow(); print_r ($row); $db->disconnect(); Listing 6. Przykład połączenia z bazą przy użyciu biblioteki ADOdb <? include("adodb.inc.php"); $db = NewADOConnection('firebird'); $db->connect("localhost", "foo", "bar", "/opt/firebird/.gdb"); $result = $db->execute("select * FROM POSITONS"); if ($result === false) die("błąd"); while (!$result->eof) { for ($i=0, $max=$result->fieldcount(); $i < $max; $i++) print $result->fields[$i].' '; $result->movenext(); print "<br>"; }?> się za pomocą osobnych funkcji. Jeśli potrzebujemy przenośności kodu oraz niezależności od bazy danych, powinniśmy skorzystać z bibliotek takich jak AdoDB czy PEAR:DB. Zobaczmy, jak interfejsy te radzą one sobie z em. i PEAR:DB PEAR to zbiór bibliotek i rozszerzeń PHP będących odpowiednikiem perlowskiego CPAN, dzięki którym budowa nawet skomplikowanej aplikacji staje się o wiele prostsza. PEAR dołączany jest do każdej oficjalnej dystrybucji PHP, dzięki czemu pisany przez nas kod staje się w pełni przenośny. Jednym z komponentów tej biblioteki jest również klasa DB, która zapewnia zunifikowane API obsługi baz danych. Wśród wielu wspieranych baz jest również /Interbase. Jeśli wcześniej tworzyliśmy swoje projekty przy użyciu tej biblioteki można modyfikując kilka linijek kodu dostosować je do współpracy z em. Na Listingu 5 przedstawiliśmy przykład połączenia z bazą przy użyciu biblioteki PEAR. Wygląda ono podobnie, jak w przypadku innych baz danych. Tworzymy DSN (Data Source Name) i wypełniamy go odpowiednimi parametrami. W przypadku a (Interbase) dobrze jest przekazać DSN w postaci obiektu, a nie łańcucha. W przeciwnym wypadku mogą wystąpić problemy z połączeniem. Następnie tworzymy obiekt $options, który do prawidłowego połączenia z bazą danych musi zawierać pole: persistent => true; Do danych odwołujemy się w identyczny sposób jak w przypadku innych baz obsługiwanych przez PEAR:DB. i AdoDB Skrót ADODB oznacza Active Data Objects DataBase (Obiektowa Baza Danych). W uproszczeniu można powiedzieć, że jest odpowiednikiem PEAR:DB. Również ta biblioteka wśród szerokiej gamy obsługiwanych baz oferuje dostęp do a. Na Listingu 6 przedstawiliśmy prosty przykład połączenia z bazą danych. Jeśli ktoś korzystał już z tej biblioteki, na pewno nie będzie miał problemów z przesiadką na a. Wszystkich spragnionych dodatkowej wiedzy na temat AdoDB odsyłamy do artykułu AdoDB interfejsowa alternatywa z numeru 4/2004, gdzie bardzo dokładnie opisywaliśmy implementację aplikacji bazodanowej w oparciu o interfejs AdoDB. Podsumowanie Jak pokazaliśmy w artykule, imponuje funkcjonalnością znaną niemal jedynie z komercyjnych baz takich jak ORACLE czy SyBase. Jego licencja (IPL) pozwala na dowolne wykorzystanie programu również w projektach komercyjnych. Prostota instalacji i administracji, niewielkie wymagania sprzętowe oraz wysoka wydajność i niezawodność sprawiają, że przy rozpoczynaniu kolejnego projektu warto pomyśleć o zie jako dobrej alternatywie dla MySQL czy PostgreSQL. 49

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

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

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

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie

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

Podstawy programowania III WYKŁAD 2

Podstawy programowania III WYKŁAD 2 Podstawy programowania III WYKŁAD 2 Jan Kazimirski 1 Komunikacja z bazami danych 2 PHP i bazy danych PHP zapewnia dostęp do wielu popularnych baz danych. Kilka poziomów abstrakcji: Funkcje obsługujące

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

Wyzwalacze (triggery) Przykład

Wyzwalacze (triggery) Przykład Wyzwalacze (triggery) Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę, a następnie trigger związany

Bardziej szczegółowo

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

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie

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

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. Temat: Wyzwalacze (triggery). Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę a następnie trigger

Bardziej szczegółowo

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł mysqli ma dwa interfejsy: proceduralny i obiektowy) PostgreSQL Oracle MS

Bardziej szczegółowo

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

Wdrożenie modułu płatności eservice. dla systemu Magento 1.4 1.9 Wdrożenie modułu płatności eservice dla systemu Magento 1.4 1.9 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do

Bardziej szczegółowo

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

Wykład 5: PHP: praca z bazą danych MySQL Wykład 5: PHP: praca z bazą danych MySQL Architektura WWW Podstawowa: dwuwarstwowa - klient (przeglądarka) i serwer WWW Rozszerzona: trzywarstwowa - klient (przeglądarka), serwer WWW, serwer bazy danych

Bardziej szczegółowo

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa Wprowadzenie do projektowania i wykorzystania baz danych Katarzyna Klessa POWTÓRKA Z PIERWSZYCH ZAJĘĆ Lista słówek - do zapamiętania na początek Z podstaw SQL: CREATE - Tworzenie tabeli, czyli Coś czego

Bardziej szczegółowo

Wprowadzenie do Doctrine ORM

Wprowadzenie do Doctrine ORM Wprowadzenie do Doctrine ORM Przygotowanie środowiska Do wykonania ćwiczenia konieczne będzie zainstalowanie narzędzia Composer i odpowiednie skonfigurowanie Netbeans (Tools->Options->Framework & Tools->Composer,

Bardziej szczegółowo

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH Kopie bezpieczeństwa NAPRAWA BAZ DANYCH Sprawdzanie spójności bazy danych Jednym z podstawowych działań administratora jest zapewnienie bezpieczeństwa danych przez tworzenie ich kopii. Przed wykonaniem

Bardziej szczegółowo

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

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x Wdrożenie modułu płatności eservice dla systemu oscommerce 2.3.x - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie

Bardziej szczegółowo

CREATE USER

CREATE USER Temat: Administrowanie użytkownikami bazy danych. Po instalacji serwera MYSQL dostępne jest konto o nazwie root. Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest możliwość

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

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

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4 Wdrożenie modułu płatności eservice dla systemu Gekosale 1.4 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do integracji...

Bardziej szczegółowo

Struktura drzewa w MySQL. Michał Tyszczenko

Struktura drzewa w MySQL. Michał Tyszczenko Struktura drzewa w MySQL Michał Tyszczenko W informatyce drzewa są strukturami danych reprezentującymi drzewa matematyczne. W naturalny sposób reprezentują hierarchię danych toteż głównie do tego celu

Bardziej szczegółowo

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

Wdrożenie modułu płatności eservice. dla systemu Zen Cart 1.3.9 1.5 Wdrożenie modułu płatności eservice dla systemu Zen Cart 1.3.9 1.5 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie

Bardziej szczegółowo

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie

Bardziej szczegółowo

Cele. Definiowanie wyzwalaczy

Cele. Definiowanie wyzwalaczy WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa

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

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

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna

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

Transakcje jednocześnie ACID

Transakcje jednocześnie ACID Transakcje Transakcja to zbiór operacji (u nas - instrukcji języka SQL), które mogą być wykonane jedynie wszystkie lub żadna. Nazwa takiego ciągu instrukcji pochodzi od operacji bankowych - przelew musi

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

Podstawy technologii WWW

Podstawy technologii WWW Podstawy technologii WWW Ćwiczenie 11 PHP, MySQL: więcej, więcej!, więcej!!. tabel i funkcjonalności. Na dzisiejszych zajęciach zdefiniujemy w naszej bazie kilka tabel powiązanych kluczem obcym i zobaczymy,

Bardziej szczegółowo

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się. Za operacje na bazie odpowiada biblioteka mysqli (i jak improved). Posiada ona interfejs obiektowy jak i proceduralny. Podłączenie do bazy (obiektowo) mysqli:: construct() ([ string $host [, string $username

Bardziej szczegółowo

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

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 9. SQL Klucze obce Transakcje

Bazy danych 9. SQL Klucze obce Transakcje Bazy danych 9. SQL Klucze obce Transakcje P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Klucze obce Klucze obce powiazanie indeksowanej kolumny jakiejś tabeli z indeksowana kolumna

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

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

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

Przykładowa baza danych BIBLIOTEKA

Przykładowa baza danych BIBLIOTEKA Przykładowa baza danych BIBLIOTEKA 1. Opis problemu W ramach zajęć zostanie przedstawiony przykład prezentujący prosty system biblioteczny. System zawiera informację o czytelnikach oraz książkach dostępnych

Bardziej szczegółowo

Wykład 8. SQL praca z tabelami 5

Wykład 8. SQL praca z tabelami 5 Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z dużej ilości danych zapisanych na serwerze jest współpraca z relacyjną bazą danych. 2 1. Utworzyć bazę danych.

Bardziej szczegółowo

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r. System FOKUS Instalacja bazy danych MySQL Autor : Piotr Zielonka tel. 601 99-73-79 pomoc@zielonka.info.pl Piotrków Tryb., sierpień 2018r. W wersji 2018.7.0 systemu FoKus wprowadzono funkcje umożliwiające

Bardziej szczegółowo

Paweł Cieśla. Dokumentacja projektu

Paweł Cieśla. Dokumentacja projektu Paweł Cieśla Dokumentacja projektu Projekt Project1 został utworzony i skompilowany na próbnej wersji Delphi XE 4. Po uruchomieniu programu należy kliknąć przycisk Wczytaj plik tekstowy, następnie wskazać

Bardziej szczegółowo

SQL 4 Structured Query Lenguage

SQL 4 Structured Query Lenguage Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...

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

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

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

Instrukcjaaktualizacji

Instrukcjaaktualizacji Instrukcja Instrukcjaaktualizacji aktualizacji oprogramowania oprogramowaniainpro InProBMS BMS SPIS TREŚCI 1. AKTUALIZACJA 3 1.1. ARCHIWIZACJA BAZY DANYCH...3 1.1.1. AUTOMATYCZNA...3 1.1.2. RĘCZNA...4

Bardziej szczegółowo

Internetowe bazy danych

Internetowe bazy danych Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 3 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Typy tabel MySQL domyślny MyISAM inne możliwe:

Bardziej szczegółowo

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia). POZIOMY IZOLACJI TRANSAKCJI 1. Microsoft SQL Server 2012 (od SQL Server 2005) W systemie SQL Server można wybrać sposób sterowania współbieżnością. Podstawowy sposób to stosowanie blokad. Wykorzystywane

Bardziej szczegółowo

Instalacja MySQL. http://dev.mysql.com/downloads/mysql/5.0.html#downloads

Instalacja MySQL. http://dev.mysql.com/downloads/mysql/5.0.html#downloads Instalacja MySQL Baza MySQL tworzona jest przez Szwedzką firmę MySQL AB strona domowa projektu to: www.mysql.com Wersję bezpłatną (różniącą się od komercyjnej brakiem wsparcia technicznego, nośnika i podręcznika)

Bardziej szczegółowo

Uruchamianie bazy PostgreSQL

Uruchamianie bazy PostgreSQL Uruchamianie bazy PostgreSQL PostgreSQL i PostGIS Ten przewodnik może zostać pobrany jako PostgreSQL_pl.odt lub PostgreSQL_pl.pdf Przejrzano 10.09.2016 W tym rozdziale zobaczymy, jak uruchomić PostgreSQL

Bardziej szczegółowo

Aspekty aktywne baz danych

Aspekty aktywne baz danych Aspekty aktywne baz danych Aktywne aspekty baz danych Baza danych powinna zapewniać pewne własności i niezmienniki; Własności te powinny mogą być zapisane do bazy danych, a baza danych powinna zapewniać

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

Bazy danych. Polecenia SQL

Bazy danych. Polecenia SQL Bazy danych Baza danych, to miejsce przechowywania danych. Dane w bazie danych są podzielone na tabele. Tabele składają się ze ściśle określonych pól i rekordów. Każde pole w rekordzie ma ściśle ustalony

Bardziej szczegółowo

Pracownia internetowa w szkole ZASTOSOWANIA

Pracownia internetowa w szkole ZASTOSOWANIA NR ART/SBS/07/01 Pracownia internetowa w szkole ZASTOSOWANIA Artykuły - serwery SBS i ich wykorzystanie Instalacja i Konfiguracja oprogramowania MOL Optiva na szkolnym serwerze (SBS2000) Artykuł opisuje

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

Ogólne informacje o Systemie Archiwizacji ZEUS

Ogólne informacje o Systemie Archiwizacji ZEUS Ogólne informacje o Systemie Archiwizacji ZEUS System Archiwizacji ZEUS przeznaczony jest do opracowywania zasobów archiwalnych. Oprogramowanie powstało w wyniku wielomiesięcznej analizy potrzeb jednego

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

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

Database Connectivity

Database Connectivity Oprogramowanie Systemów Pomiarowych 15.01.2009 Database Connectivity Dr inŝ. Sebastian Budzan Zakład Pomiarów i Systemów Sterowania Tematyka Podstawy baz danych, Komunikacja, pojęcia: API, ODBC, DSN, Połączenie

Bardziej szczegółowo

Naprawa uszkodzonej bazy Interbase/Firebird

Naprawa uszkodzonej bazy Interbase/Firebird Naprawa uszkodzonej bazy Interbase/Firebird W przypadku, gdy podczas pracy programu KS-Apteka Windows pojawiają się błędy jak na rysunku 1, (takie błędy w szczegółach zaczynają się od słów: internal gds

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Klucz podstawowy PRIMARY KEY Klucz kandydujący UNIQUE Klucz alternatywny - klucze kandydujące, które nie zostały wybrane na klucz podstawowy Klucz obcy - REFERENCES Tworząc tabelę,

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z

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

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

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , , Celem ćwiczeń jest zaprojektowanie oraz utworzenie na serwerze bazy danych przechowującej informacje na temat danych kontaktowych. Celem jest również zapoznanie z podstawowymi zapytaniami języka SQL służącymi

Bardziej szczegółowo

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3 cur.executescript(""" DROP TABLE IF EXISTS uczen; CREATE TABLE IF NOT EXISTS uczen ( Uniwersytet Technologiczno-Przyrodniczy im. J.J. Śniadeckich w Bydgoszczy Instrukcja do ćwiczeń laboratoryjnych Przedmiot

Bardziej szczegółowo

PODSTAWY BAZ DANYCH 13. PL/SQL

PODSTAWY BAZ DANYCH 13. PL/SQL PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących

Bardziej szczegółowo

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok; Temat: Funkcje, procedury i wyzwalacze. Oprócz tabel i widoków w bazach danych możemy tworzyć własne funkcje, procedury i specjalny typ procedur, które będą automatycznie wywoływanie przez MySQL w memencie

Bardziej szczegółowo

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

Instytut Mechaniki i Inżynierii Obliczeniowej  Wydział Mechaniczny technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie bazy danych z użyciem UML, proste

Bardziej szczegółowo

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

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2. Bazy Danych i Systemy informacyjne Wykład 2 Piotr Syga 16.10.2017 Dodawanie, usuwanie i zmienianie rekordów Wstawianie rekordu wstawianie do tabeli INSERT INTO A VALUES ( fioletowy, okrągły, słodko-kwaśny

Bardziej szczegółowo

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

Instytut Mechaniki i Inżynierii Obliczeniowej   fb.com/groups/bazydanychmt/ Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl fb.com/groups/bazydanychmt/ Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie

Bardziej szczegółowo

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter Konfiguracja i przygotowanie przykładowej aplikacji opartej o model Model-View- Controller Konfiguracja frameworka Zainstaluj na serwerze

Bardziej szczegółowo

INSTRUKCJA NAPRAWA BAZY DANYCH FIREBIRD ISO 9001:2008 Dokument: 2011.01.11 Wydanie: 1 Waga: 90

INSTRUKCJA NAPRAWA BAZY DANYCH FIREBIRD ISO 9001:2008 Dokument: 2011.01.11 Wydanie: 1 Waga: 90 NAPRAWA USZKODZONEJ BAZY INTERBASE/FIREBIRD W przypadku, gdy podczas pracy programu KS-APTEKA Windows pojawiają się błędy jak na rysunku 1, (takie błędy w szczegółach zaczynają się od słów: internal gds

Bardziej szczegółowo

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych

Bardziej szczegółowo

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

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN Integralność danych Wersje języka SQL Klauzula SELECT i JOIN Robert A. Kłopotek r.klopotek@uksw.edu.pl Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW Integralność danych Aspekty integralności

Bardziej szczegółowo

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED Podręcznik użytkownika Katowice 2010 Producent programu: KAMSOFT S.A. ul. 1 Maja 133 40-235 Katowice Telefon: (0-32) 209-07-05 Fax:

Bardziej szczegółowo

Podstawowe wykorzystanie Hibernate

Podstawowe wykorzystanie Hibernate Podstawowe wykorzystanie Hibernate Cel Wykonanie prostej aplikacji webowej przedstawiającą wykorzystanie biblioteki. Aplikacja sprawdza w zależności od wybranej metody dodaje, nową pozycje do bazy, zmienia

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium PHP + bazy danych Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię PHP. Aplikacja pokazuje takie aspekty, współpraca PHP z bazami

Bardziej szczegółowo

Wdrożenie do projektu

Wdrożenie do projektu Wdrożenie do projektu Zaczynamy od stworzenia zwykłego projektu Java. Środowisko z jakiego korzystam to Netbeans IDE w wersji 8.1. Możesz wykorzystywać inne IDE, bylebyś stosował analogiczne kroki w swoim

Bardziej szczegółowo

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

BAZY DANYCH. Transakcje. opracowanie: Michał Lech BAZY DANYCH Transakcje opracowanie: Michał Lech Plan wykładu 1. Transakcje - co to jest? 2. Mechanizmy transakcji 3. Reguły ACID 4. Niekorzystne zjawiska 5. Poziomy izolacji 6. Polecenia PostgreSQL transakcji

Bardziej szczegółowo

SIECI KOMPUTEROWE I BAZY DANYCH

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

Bardziej szczegółowo

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL Tutorial PostgreSQL 1. Instalacja na własnym komputerze: a. Zainstaluj program ze strony: https://www.postgresql.org/download/ Wersja odpowiednia dla systemu operacyjnego Linux, Mac, Windows Przy pierwszym

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

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

Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres

Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres Firebird Alternatywa dla popularnych darmowych systemów bazodanowych MySQL i Postgres Artur Kozubski Software Development GigaCon Warszawa 2008 Plan Historia projektu Firebird Architektura serwera Administracja

Bardziej szczegółowo

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Instalacja SQL Server Express. Logowanie na stronie Microsoftu Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy

Bardziej szczegółowo

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1 Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie wyzwalaczami 1 Procedury wyzwalane

Bardziej szczegółowo

Backend Administratora

Backend Administratora Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona

Bardziej szczegółowo

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe -- Definicje relacji i utworzenie stanu początkowego dla ćwiczeń z synchronizacji transakcji DROP TABLE Konta cascade constraints; DROP TABLE

Bardziej szczegółowo

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

Instytut Mechaniki i Inżynierii Obliczeniowej   Wydział Mechaniczny technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie bazy danych z użyciem UML, proste

Bardziej szczegółowo

Typy tabel serwera MySQL

Typy tabel serwera MySQL Typy tabel serwera MySQL Kopie zapasowe baz danych Zabezpieczanie serwera MySQL Zakładanie konta użytkownika z określonymi uprawnieniami Zarządzanie kontem i bazą danych Kilka kolejnych informacji na temat

Bardziej szczegółowo

Bazy danych i usługi sieciowe

Bazy danych i usługi sieciowe Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z

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

Rozdział 17. Zarządzanie współbieżnością zadania

Rozdział 17. Zarządzanie współbieżnością zadania Rozdział 17. Zarządzanie współbieżnością zadania Transakcja DML 1. Uruchom narzędzie Oracle SQL Developer i przyłącz się do bazy danych. Następnie rozpocznij nową transakcję, zmieniając pracownikowi o

Bardziej szczegółowo

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15 T-SQL dla każdego / Alison Balter. Gliwice, cop. 2016 Spis treści O autorce 11 Dedykacja 12 Podziękowania 12 Wstęp 15 Godzina 1. Bazy danych podstawowe informacje 17 Czym jest baza danych? 17 Czym jest

Bardziej szczegółowo

AKTYWNY SAMORZĄD. Instrukcja instalacji, aktualizacji i konfiguracji. www.as.tylda.pl

AKTYWNY SAMORZĄD. Instrukcja instalacji, aktualizacji i konfiguracji. www.as.tylda.pl AKTYWNY SAMORZĄD Instrukcja instalacji, aktualizacji i konfiguracji TYLDA Sp. z o.o. 65-001 Zielona Góra ul. Wazów 6a tel. 68 324-24-72 68 325-75-10 www.tylda.pl tylda@tylda.pl wersja 1.0 2013.04.12 2

Bardziej szczegółowo

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, 2017 Spis treści O autorze 9 Wprowadzenie 11 Lekcja 1. Zrozumieć SQL 15 Podstawy baz danych 15 Język SQL

Bardziej szczegółowo

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko Podstawowe pojęcia dotyczące relacyjnych baz danych mgr inż. Krzysztof Szałajko Czym jest baza danych? Co rozumiemy przez dane? Czym jest system zarządzania bazą danych? 2 / 25 Baza danych Baza danych

Bardziej szczegółowo