Baza
danych
Uporządkowany zbiór danych przechowywanych w urządzeniach
pamięciowych systemu komputerowego,
najczęściej na dyskach magnetycznych..
Zbiór wzajemnie powiązanych ze sobą informacji,
przechowywanych w pamięci zewnętrznej komputera,
służących w sposób optymalny jednemu lub wielu zastosowaniom.
Baza danych powinna umożliwić szybki dostęp do dużej ilości
informacji,
ich modyfikację a także przeszukiwanie danych spełniających określone warunki.
System
zarządzania bazą danych
program zarządzający dostepem do
bazy danych
Relacja
podstawowowa forma organizacji danych w bazie - zbiór rekordów (krotek)
Atrybut A - lub pole albo kolumna
rodzaj danych, oznaczany przez A (np. Nazwisko
lub Imię lub Wiek).
Z każdym atrybutem jest związany zbiór wartości, np. z atrybutem Wiek związany
zbiór liczb z zakresu od 0 do 110,
z atrybutem Nazwisko zbiór łańcuchów znaków (napisów) o długości do 30 znaków.
Domena
atrybutu dom(A) lub dziedzina atrybutu
zbiór wszystkich możliwych wartości atrybutu A, np dla atrybutu wiek
dopuszczalny zakres 0..110
Schemat
relacji R(A1...An)
zbiór wybranych atrybutów A1
... An
Przykładowy schemat relacji PRACOWNICY: PRACOWNICY(Nazwisko,
Imię, Wiek, Pensja)
Krotka t - lub rekord
ciąg wartości jego atrybutów, oznaczany przez t.
Przykładową krotką jest <Kowalski, Jan,
35, 12000>
Krotką t dla danego schematu relacji R(A1..An) nazywamy
ciąg wartoości <a1,..,an>,
takich że,
a1 należy do dom(A1), ... an należy do dom(An)
Relacja
skończony zbiór krotek (rekordów)
r(A1,...,An) = {<a1,..,an>: a1 (-
dom(A1), .. an (- dom(An)}
gdzie r(A1,..,An) jest relacją określoną na schemacie
relacji R(A1,...,An)
Przykładową relacją jest
{<Kowalski, Jan, 35, 1200>,
<Nowak, Piotr, 36, 2000>, <Zielińska, Anna, 25, 1400>}
Krotki relacji nie są uporządkowane, można zmieniać ich kolejność.
Klucz
relacji
taki zbiór identyfikujący relacji, którego żaden podzbiór
nie jest zbiorem identyfikujacym relacji
Wyróżnia się klucze proste i złożone.
Klucz jest kluczem prostym, jeśli zbiór identyfikujący relacji jest
zbiorem jednoelementowym,
w przeciwnym razie klucz jest złożony.
W ogólności, w relacji można wyróżnić wiele kluczy, które nazywamy kluczami potencjalnymi.
Wybrany klucz spośród kluczy potencjalnych nazywamy kluczem głównym.
Struktura
Dane w bazie danych są wprowadzane i zapamiętywane w formie
strukturalnej.
Elementarna struktura w bazie danych nazywa się rekordem (record)
lub krotką.
Zbiór informacji, zwany plikiem (file) składa się z rekordów.
Rekord z kolei złożony jest z pól
(field) - atrybutów.
Bezpieczeństwo
W bazach wielodostępnych musi być stosowany mechanizm
blokowania rekordów
(record locking),
polegający na tym, że gdy jeden użytkownik zmienia rekord,
musi on byc zablokowany (do czytania lub modyfikacji)
dla innych użytkowników.
Stosowane są też zabezpieczenia w postaci haseł oraz udostępniania dla
wybranych
użytkowników tylko określonych pól.
Tablice
najczęstszy zapis relacji -
wiersze tablic odpowiadają krotkom,
a kolumny atrybutom
Rozróżnia
się 2 podstawowe typy baz danych
Jednym z najważniejszych zastosowań komputerów są
systemy baz danych.
Najogólniej przez bazę danych rozumiemy uporządkowany zbiór danych przechowywancych
w pamieci zewnętrznej komputera,
a przez system bazy danych - bazę
danych wraz ze środkami programowymi umożliwiającymi
operowanie na niej, np. wyszukiwanie i aktualizowanie informacji.
W nowoczesnym przedsiębiorstwie nie można sobie wyobrazić dobrze
funkcjonującego przedsiębiorstwa ani biura,
którego działalność mogłaby być prowadzona bez korzystania z systemów baz
danych.
Upowszechnienie systemów baz danych było związane z
gwałtownym i masowym zastosowaniem mikrokomputerów.
Jest wiele pakietów określanych "mikrokomputerowy system bazy
danych".
Spośród nich dużą popularność osiągnął system dBase, np. dBase III firmy Ashton-Tate z USA.
dBase III + jest wielodostępną, sieciową wersją systemu dBase III.
System dBase III reklamowany jako "relacyjna baza danych" jest
podobnie jak wiele innych systemem quasi-relacyjnym.
W pełni relacyjna baza danych powinna mieć 20 cech.
U podstaw relacyjnych baz danych leży teoria matematyczna, umożliwiająca
zalgorytmizowanie procesu
projektowania baz danych oraz opracowanie języków dostępu do danych,
z których użytkownik określa tylko które dane go interesują, a nie jak do nich
dotrzeć.
Standardem w zakresie relacyjnych baz danych jest język SQL.
Gromadzenie
danych, a zwłaszcza wyszukiwanie informacji w wielkich zbiorach danych jest
pracochłonne i zabiera wiele czasu.
Do tego celu zastosowano komputery, wykorzystując ich możliwości pamiętania
dużych ilości informacji i szybkiego ich przetwarzania.
Opracowano specjalne systemy zarządzania bazą danych DBMS
- Data Base Menagement
Systems.
Pierwotnie
do tego celu stosowano duże systemy komputerowe.
Dzięki zastosowaniu mikrokomputerów zaczęto stosować bazy danych powszechnie.
Mogą być używane zarówno do opracowywania katalogów książek w bibliotece,
spisów towarów w magazynie, zamówień, pracowników, telefonów, podatników,
klientów, wydatków, rezerwacji miejsc i iinych.
Systemy zarządzania bazą danych (nazywane
w skrócie bazami danych) pozwalają na wprowadzenie
i przechowywanie ich w pamięci (np. na dysku
Realizują one 4 najważniejsze funkcje:
Programy do zarządzania bazami danych powinny umożliwić
przede wszystkim:
Dane w bazie danych są wprowadzane i zapamiętywane w
formie strukturalnej.
Elementarna struktura w bazie danych nazywa się rekordem
(record) lub krotką.
Zbiór informacji, zwany plikiem (file) składa się z rekordów.
Rekord z kolei złożony jest z pól (field) - atrybutów.
Przykład rekordu bazy danych w dBASE
NAZWA_TOWA |
TYP_TOWARU |
CENA_TOWAR |
ILOSC_TOWA |
DATA_DOSTA |
DATA_WAZN |
PRODUCENT |
JABŁKA |
JONATHAN |
120.00 |
68.00 |
02/05/87 |
02/15/87 |
FARMA
1 |
Pola w tej bazie to m.in. NAZWA_TOWA,
TYP_TOWARU, itd.
Systemy zarządzania bazą dancych są zwykle
programami ogólnego przeznaczenia,
tzn. uzytkownik ma możliwość dostosowanai
ich do konfiguracji sprzętu oraz do wymagań danego zastosowania.
Program bazodanowy trzeba najpierw zainstalować.
Dla
konkretnej bazy ustala się
Następnym
etapem pracy jest wprowadzenie danych - przypomina to wypełnianie
formularzy.
Największą zaletą baz danych jest szybkie wyszukiwanie
informacji oraz ich przetwarzanie.
Można np. wybierać tylko rekordy spełniające określone
kryteria, np. opisujące towary od konkretnego producenta.
Selekcja może być wielostopniowa, tzn. wśród już wybranych rekordów
można określać kolejne kryteria wyboru.
Wybrane rekordy można dalej przetwarzać lub wyświetlać.
Dane mogą być także posortowane, czyli uporządkowane w pewnej kolejności, np. w
porządku alfabetycznym wg ustalonego pola.
Wiele systemów pozwala na tworzenie plików indeksowych,
w których są zapisywane informacje o rozmieszczeniu pól i rekordów w bazie
danych.
Korzystanie z tych informacji znacznie przyśpiesza późniejsze wyszukiwanie
danych.
Informacje zapisane w pliku można automatycznie
przetwarzać.
Proste bazy danych pozwalają np. na obliczenie sum elementów z konkretnych pól
i wartości średnich.
Złożone systemy mają własne języki programowania, w których można zaprogramować
skomplikowane operacje,
wykonywane na zawartosci wybranych rekordów lub pól z
tych rekordów.
Można np. obliczyć wartość towarów w sklepie, zmienić ceny towarów itd.
Skomplikowane bazy danych umożliwiają jednoczesne operowanie na wielu plikach i
łączenie danych
z różnych plików a nawet równoczesne wykorzystywanie ich przez wielu
użytkowników.
Bazy danych różnią się między sobą sposobem
organizacji zapamiętywanych informacji i zarządzania nimi
Systemy te są najprostszymi bazami danych. Plik składa
się z odrębnych dokumentów o identycznej strukturze lecz o różnej zawartości.
Każdy z tych dokumentów stanowi rekord bazy danych. Plik składa się więc z
rekordów
Rekordy mogą być podzielone na pola, które mogą zawierać tekst, liczby, daty
oraz formuły,
służące do oblicznia wartosci
pola w zależności od wartosci innych pól.
Każdemu polu przypisuje się nazwę. Wszystkie rekordy składają sie z pól o tych
samych nazwach i tego samego typu,
ale zawartość pól w poszczególnych rekordach może być różna.
Wszystkie rekordy mają taką samą strukturę i nie są ze sobą powiązane.
Plik przypomina zbiór kartotekę jednakowych formularzy.
Przykładem kartotekowej bazy danych jest zbiór
książkowych kart katalogowych.
Każda karta stanowi rekord, a poszczególne pozycje jak autor, tytuł itp. są
polami rekordu.
Przykłady programów do obsługi kartotekowych baz
danych
Nutshell
Information Manager firmy Leading Edge Products.
Program nie stawiał praktycznie ograniczeń na liczbę rekordów, liczbę pól
i wielkość pól w rekordach.
Zdefiniowanie bazy polega na podaniu nazw i typu poszczególnych pól. Operacje
wykonuje się przez wybór opcji z menu.
Poszczególne pola można dowolnie rozmieszczać na ekranie tworząc różnego
rodzaju formularze.
Do określenia formy wydruku raportu służą formularze (szablony) wydruku,
definiowane na ekranie.
Program służył m.in. do obsługi katalogów, list płac, kartotek personalnych w
zakładzie pracy, kartotek pacjentów w szpitalach.
Wadą jest brak możliwości przeglądania raportu na ekranie przed jego wydrukiem.
Reflex firmy Borland International - pozwala w różnych
przekrojach analizować bazę danych
reprezentowaną przez tablicę oraz przedstawić wyniki w postaci wykresów.
Kartoteka (Cardfile) z grupy Akcesoria Windows 3.1x. Służy do
prowadzenia prostej kartotekowej bazy danych.
Użytkownik tworzy bazę danych składającą się z kart (rekordów) o 2 polach: pola
nagłówka (indeksu) i pola informacji.
Zawartości tych pól w bazie są na ogół różne, ale ich rozmiary są dla
wszystkich kart jednakowe.
W polu informacyjnym może znajdować się zarówno tekst jak i grafika.
Mogą tu być skopiowane, wbudowane lub dołączane dowolne obiekty OLE.
Do pola nagłówka (na rys. 1 lub 2) dostajemy się przez podwójne kliknięcie
myszą na tym polu lub przez Edycja/Indeks.
Pole informacyjne dostępne jest przez jedne kliknięcie myszą w jego obrębie.
Poruszanie się po kartotece umożliwia np. kliknięcie na wystającym brzegu karty
lub naciskanie
na poziomą strzałkę w prawo (do przodu) lub lewo (wstecz).
Dłuższe przytrzymanie strzałki powoduje szybkie przewijanie kart. W polu
informacyjnym mozna pisać teksty lub rysować/wstawiać
rysunki.
Włączanie trybu tekstowego (domyślny) przez Edycja/Tekst, a trybu Rysunek przez
Edycja/Rysunek.
TIG
Inne znane kiedyś systemy kartotek:
Nazwa |
Producent |
Sprzęt |
System
operayjny. |
max
liczba znakóww polu |
max
liczba pól w rekordzie |
max
liczba rekordów w pliku |
max
liczba otwartych plików |
rekord
o stałej lub zmiennej długości |
menu
lub polecenia |
organizacja
indeksu |
Masterfile |
Campbell |
ZX
Spektrum |
system
ZX Spectrum |
128 |
26 |
ograniczona
PaO (ok. 200) |
1 |
stałej |
menu |
nie
ma |
DBMAster v.4+ |
Stoneware Inc. |
Apple |
DOS
3.0 |
100 |
100 |
nieograniczona |
1 |
stałej |
- |
ISAM |
Supebase 64 |
Precision
Software |
Commodore 64 |
system
Commodore 64 |
1108 |
127 |
nieograniczona |
1 |
stałej |
- |
B-drzewa |
Omnifile |
SSR
Corp. |
IBM
PC XT, 2 FD |
DOS |
1828 |
64 |
nieograniczona |
1 |
zmiennej |
- |
zmodyfikowane
B-drzewa |
W relacyjnych bazach danych wykorzystano teorię
algebry relacji.
Pliki składają się z rekordów, zaś rekordy z
pól ale różnica w stosunku do baz kartotekowych polega na tym,
że baza może zawierać kilka plików (lub tabel),
które to pliki (tabele) różnią się strukturą
rekordów.
Pomiędzy rekordami jest określona pewna relacja
porządkująca.
Możliwe jest łączenie rekordów z różnych
plików, jeśli rekordy takie mają przynajmniej jedno pole wspólne.
Jeśli mamy jedną lub więcej baz zawierających
przynajmniej jedno wspólne pole,
wówczas może zachodzić potrzeba utworzenia nowej bazy zawierającej połączone
informacje
lub wydrukowania raportu z połączonymi informacjami.
Przykładowo może to dotyczyć informacji o stażu pracy z kartoteki personalnej i
wynagrodzeniu z listy płac.
Wspólnym polem może być nazwisko lub nr pracownika
Innym przykłądem może byc
baza danych prowadzona z księgowości i baza prowadzona w magazynie,
gdzie wspólnym polem jest nazwa (lub indeks) zakupionych i magazynowanych
materiałów.
Takie bazy nazywamy relacyjnymi.
W uproszczeniu można je przedstawić za pomocą tablic (nazywanych relacjami)
powiązanych między sobą
poprzez kolumny, w których występują wspólne dane.
Odszukanie określonego rekordu (wiersza) w jednej tablicy pozwala poprzez
kolumny
awierające wspólne dane wybrać odpowiedni rekord
drugiej tablicy.
Jedną dużą bazę można podzielić na mniejsze, a następnie łączyć informacje w
miarę potrzeby.
Bazy relacyjne są bazami wieloplikowymi lub wielotabelowymi.
Programy zarządzania relacyjnymi bazami danych zawierają zbiór rozkazów, które
umożliwiają wykonywanie operacji na całej bazie.
Zaletą relacyjnych baz danych jest uniezależnienie
formy wprowadzania informacji od sposobu ich użytkowania.
Bazy pozwalają bowiem na zmiany struktury rekordu.
Do programów zarządzania relacyjnymi bazami danych należą
m.in. programy serii dBASE
(w różnych odmianach: dBase III+, dBase IV, Foxbase
oraz różne wersje języka Clipper)
System bazy danych składa się z bazy danych i systemu
zarządzania bazą danych.
Baza danych jest to uporządkowany zbiór danych przechowywanych
w urządzeniach pamięciowych
systemu komputerowego, najczęściej na dyskach magnetycznych.
System zarzadzania
bazą danych jest programem zarzadzajacym dostępem do bazy danych.
Podstawową formą organizacji danych
w bazie jest relacja.
Rodzaj danych (np. Nazwisko, Wiek,
Pensja) w teorii relacyjnch baz danych nazywa
się atrybutem i jest oznaczany przez A.
Z każdym atrybutem jest związany zbiór dopuszczalnych wartości (np. Wiek
- liczby 0..110, Nazwisko - łancuchy znaków o
długości do 30).
Zbiór wszystkich możliwych wartości atrybutu
A nazywamy jego domeną
(dziedziną) i oznaczamy
przez dom(A).
Zbiór wybranych atrybutów A1, ...,
An nazywamy schematem relacji i
oznaczamy R(A1,...,An).
Przykład: schematem relacji PRACOWICY jest PRACOWNICY (Nazwisko, Imię, Wiek,
Pensja).
Dla danego schematu relacji ciąg wartości jego atrybutów
nazywamy krotką (rekordem) i oznaczamy przez t.
Przykładową krotką jest <Kowalski, Jan, 35, 2000>.
Innymi słowy, dla danego schematu relacji R(A1,...An),
ktotką t nazywamy ciąg wartości
<a1,...,an>,
takich, że a1 (- dom(A1,..., an (- dom(An)
Relacją określoną na danym
schemacie relacji nazywamy skończony zbiór krotek
(rekordów).
Formalnie
r(A1,..,An) = {<a1,...,an>:
a1(-dom(A1),..an(-dom(An)}, gdzie r(A1,...,An) jest
relacją określoną na schemacie relacji R(A1,...,An).
Przykładową relacją jest {<Kowalski, Jan, 35, 2000>, <Nowak, Piotr,
36, 1500>, <Zielińska, Anna, 25, 1000<}.
Krotki relacji nie są uporządkowane. Można dowolnie zmieniać kolejność krotek, bez
zmiany relacji.
Z matematycznego punktu widzenia przestawienie atrybutów powoduje zmianę
relacji.
W wielu systemach danych, również w dBase III, pomija się to ograniczenie i
przyjmuje, że uporządkowanie atrybutów nie jest znaczące.
Najczęściej relacje
reprezentuje się w postaci tablic, których wiersze odpowiadają
krotkom (rekordom), a kolumny atrybutom (polom).
Przykładowa
relacja w postaci tablicy |
|||
Nazwisko |
Imię |
Wiek |
Pensja |
Kowalski |
Jan |
35 |
2000 |
Nowak |
Piotr |
36 |
1500 |
Zielińska |
Anna |
25 |
1000 |
Na 3 pierwszych operacjach: selekcji, projekcji i
połączeniu opiera się tzw. język
manipulowania danymi,
umożliwiający użytkownikom baz danych dokonywanie przekształceń relacji,
wynikających z potrzeb.
Zazwyczaj użytkownicy żądają dostępu do innych relacji
niż te, które są przechowywane.
Zrealizowanie takiego żądania wymaga przekształcenia relacji przechowywanych w
bazie danych w relacje określone w żądaniu.
Tak utworzone relacje mogą być "pionowymi" lub "poziomymi"
podzbiorami innych relacji,
tzn. relacjami powstałymi przez usunięcie niektórych atrybutów lub krotek,
bądź mogą być wynikiem połączenia różnych relacji w jedną.
Operacja projekcji
Operacją projekcji relacji r(A1,...,An)
na zbiorze atrybutów X=(Ai,..,Aj), co zapisujemy Px r(A1,...,An),
nazywamy przekształcenie relacji r(A1,...,An) w
relację wynikową postaci:
Px r(A1,...,An) = {t[X] : t(- r(A1,...,An)}
Operacja projekcji umożliwia
utworzenie "pionowego" podzbioru relacji przez wybór określonych
atrybutów (pól).
Relacja KIEROWNICY_DZIALOW |
||||
Id_Kierownika |
Nazwisko |
Id_Dzialu |
Zarobki |
Adres_Dzialu |
1 |
Wałecki |
1 |
2500 |
Poznań,
ul. Strzelecka 5 |
2 |
Kościański |
2 |
1800 |
Pniewy,
ul. Prosta 3 |
6 |
Pietras |
3 |
2300 |
Poznań,
ul. Kórnicka 30 |
Wynik operacji projekcji PId_Kierownika, Nazwisko,
Zarobki KIEROWNICY_DZIALOW:
Wynik projekcji
relacji KIEROWNICY_DZIALOW |
||
Id_Kierownika |
Nazwisko |
Zarobki |
1 |
Wałecki |
2500 |
2 |
Kościański |
1800 |
6 |
Pietras |
2300 |
W systemach zarządzania danymi operacja ta jest
formułowana za pomocą poleceń manipulowania danymi.
Np. w dBasee służą do tego polecenia LIST i DISPLAY.
Operacją selekcji relacji r(A1,...,An)
względem kryterium selekcji E, co zapisujemy sEr(A1,...,An),
nazywamy przekształcenie relacji r(A1,...,An) w
relację wynikową postaci
sEr(A1,...,An)
= {t : t(- r(A1,...,An) i E(t) = prawda}
Operacja selekcji umożliwia
utworzenie "poziomego" podzbioru relacji przez wybór krotek
(rekordów) spełniających określony warunek.
Wynik operacji selekcji sId_Dzialu <= 3 .AND. Zarobki >=
2000 KIEROWNICY_DZIALOW
Id_Kierownika |
Nazwisko |
Id_Dzialu |
Zarobki |
Adres_Dzialu |
1 |
Wałecki |
1 |
2500 |
Poznań,
ul. Strzelecka 5 |
6 |
Pietras |
3 |
2300 |
Poznań,
ul. Kórnicka 30 |
W języku naturalnym można tę operację sformułować
następująco:
"Z relacji KIEROWNICY_DZIALOW wybierz informacje
o kierownikach tych działów,
których identyfikatory są mniejsze lub równe 3 i zaronbki
są większe równe 2000".
Operacja połączenia polega
na scaleniu odpowiednich krotek (rekordów) 2 różnych relacji pod warunkiem
spełnienia warunku logicznego q nałożonego na atrybuty połączeniowe.
Np. może byc operacja połączenia PRACOWNICY qWYDZIALY, gdzie q ma postać:
Id_Wydzialu = Id_Wydzialu
Punktem wyjścia są relacje wymagane przez użytkowników
a właściwie informacje zebrane przez projektanta o wymaganych atrybutach
bazy danych,
celem jest natomiast zdefiniowanie schematów relacji, które mają być
przechowywane w bazie danych.
Trzeba tak zaprojektować rozdział zbioru atrybutów na schematy relacji,
aby uzyskać pewne pożądane właściwości bazy danych.
Niewłaściwe zaprojektowanie schematów relacji może byc
przyczyną dublowania się danych, ich niespójności i anomalii podczas ich
aktualizowania.
W ramach projektowania schematów baz danych,
najistotniejszą czynnością jest normalizacja relacji,
czyli doprowadzenie relacji do odpowiedniej
postaci normalnej.
Pierwsza postać normalna jest
immanentną cechą relacji, gdyż wymagania tej postaci są zawarte w definicji
relacji.
Postać normalizacji polega w tym przypadku na doprowadzeniu określonego zbioru
danych do postaci relacji.
Mając bazę danych złożoną z relacji w pierwszej
postaci normalnej, jest się narażonym na wszystkie niekorzystne zjawiska
wymienione wyżej,
dlatego należy doprowadzić relacje do kolejnych postaci normalnych.
Proces normalizacji polega na
odpowiednim podziale relacji na mniejsze, w wyższej postaci normalnej.
Relacja jest w pierwszej postaci normalnej, jeżeli
każda wartość atrybutu w każdej krotce tej relacji jest wartością elementarną,
czyli nierozkładalną.
Z definicji pierwszej postaci normalnej relacji wynika, że każdemu elementowi
relacji znajdującemu się
na przecięciu dowolnej krotki i dowolnego atrybutu odpowiada pojedyncza
wartość,
a nie zbiór wartości.
Relacja
nieznormalizowana |
||||||||||||||
Nr_Zamow |
Id_Dostawcy |
Nazwa_Dostawcy |
Adres_Dostawcy |
Id_Czesci |
Nazwa_Czesci |
Ilosc |
||||||||
001 |
300 |
FSO |
Warszawa |
53
|
|
|
||||||||
002 |
400 |
FSM |
Tychy |
54 |
gaźnik |
200 |
Relacja
znormalizowana |
||||||
Nr_Zamow |
Id_Dostawcy |
Nazwa_Dostawcy |
Adres_Dostawcy |
Id_Czesci |
Nazwa_Czesci |
Ilosc |
001 |
300 |
FSO |
Warszawa |
53 |
gażnik |
100 |
001 |
300 |
FSO |
Warszawa |
57 |
wał |
50 |
001 |
300 |
FSO |
Warszawa |
59 |
błotnik |
500 |
002 |
400 |
FSM |
Tychy |
54 |
gażnik |
200 |
Aby przedstawić 2-gą postać normalną należy wprowadzić
kilka pojęć
Zbiór
identyfikujący relacji
taki zbiór atrybutów tej relacji, których kombinacje
wartości jednoznacznie identyfikują każdą krotkę relacji
Klucz
relacji
taki zbiór identyfikujący relacji, którego żaden podzbiór
nie jest zbiorem identyfikującym relacji
Wyróżnia się klucze proste i złożone.
Klucz jest kluczem prostym, jeśli zbiór identyfikujący relacji jest zbiorem jednoelementowym,
w przeciwnym razie klucz jest złożony.
W ogólności, w relacji można wyróżnić wiele kluczy, które nazywamy kluczami potencjalnymi.
Wybrany klucz spośród kluczy potencjalnych nazywamy kluczem głównym.
Zależność funkcjonalna
Atrybut B relacji r jest funkconalnie zależny od atrybutu A tej relacji, jeśli
zawsze każdej wartości a atrybutu A
odpowiada nie więcej niż jedna wartość atrybutu B. Inaczej A identyfikuje B.
Np. Id_Dostawcy jest funkcjonalnie zależny od
atrybutu Nr_Zamowienia, gdyż jedno zamówienie
jest kierowane tylko do jednego
dostawcy, a zatem numer zamówienia jednoznacznie określa identyfikator
dostawcy.
Odwrotna zależność nie jest prawdziwa.
Pełna zależność funkcjonalna
Atrybut B relacji r jest w
pełni funkcjonalnie zależny od zbioru atrybutów X, jeśli jest funkcjonalnie
zależny od niego,
ale nie jest funkcjonalnie zależny od żadnego podzbioru zbioru X.
Druga postać normalna:
Dana relacja jest w drugiej postaci
normalnej, jeśli każdy atrybut tej relacji nie wchodzący w skład żadnego klucza
potencjalnego jest w pełni funkcjonalnie zależny od wszystkich kluczy
potencjalnych.
W celu uzyskania drugiej postaci normalnej należy
podzielić relację na zbiór takich relacji,
których wszystkie atrybuty będą w pełni funkcjonalnie zależne od kluczy.
Przechodnia zależność funkcjonalna
Niech X, Y i Z będą 3 roz
łącznymi podzbiorami atrybutów danej relacji. Podzbiór atrybutów Z
jest przechodnio funkcjonalnie zależny od podzbioru atrybutów X, jeśli podzbiór
atrybutów Z
jest funkcjonalnie zależny od podzbioru atrybutów Y, podzbiór atrybutów Y jest
funkcjonalnie zależny
od podzbioru atrybutów X, natomiast podzbiór atrybutów X nie jest funkcjonalnie
zależny od Y lub podzbiór atrybutów Y nie jest funkcjonalnie zależny od Z.
Dana relacja jest w trzeciej
postaci normalnej, jeśli jest ona w drugiej postaci normalnej
i każdy jej atrybut nie wchodzący w skład żadnego klucza potencjalnego nie jest
przechodnio
funkcjonalnie zależny od żadnego klucza
potencjalnego tej relacji.
Aby uzyskać trzecią postać normalną relacji, której
atrybuty pozostają w przechodniej zależności funkcjonalnej,
należy podzielić ją na 2 relacje.
Wyróżnia się jeszcze czwartą i piątą postać normalną
relacji
Program bazy danych dBASE
firmy Ashton Tate, działajacy
na komputerze IBM PC był i jest jeszcze
jednym z najpopularniejszych systemów do zakładania, przechowywania i
przetwarzania dużych zbiorów informacji.
System dBASE II został opracowany dla mikrokomputerów
8-bitowych, pracujących z systemem operacyjnym CP/M.
Dużą popularność zdobył potem dBASE III
na komputery IBM PC, zwłaszcza dBASE III
Plus,
umożliwiający dostęp do plików za pośrednictwem sieci.
System dBASE III umożliwia
tworzenie tzw. relacyjnej bazy danych, gdzie podstawowymi składnikami
bazy są relacje.
Podejście relacyjne do danych wynika z faktu, że zawartość plików spełniających
pewne warunki można traktować
jako relacje matematyczne, do których stosuje się elemantarną
teorię relacji.
Każdą relację w systemie bazy danych możemy przedstawić w postaci tablicy
zawierającej szereg wierszy podzielonych na określoną liczbę kolumn.
Zamiast określenia relacja używa się często określenia plik bazy danych,
wiersze tablicy nazywa się rekordami, a jej kolumny polami.
Pliki bazy danych, zwwierające relacje mają
rozszerzenie DBF.
W przypadku dBASE III baze danych może tworzyć wiele plików, przy czym
jednocześnie otwartych może byc najwyżej
9.
Każdy plik składa się z nagłówka, w którym określona jest liczba rekordów i
nazwy oraz charakterystyki
pól tworzących rekord, oraz z rekordów zawierających dane.
Każdy rekord w pliku ma te samą strukturę, określoną podczas zakładania
pliku bazy danych
- długość rekordów i pól jest stała,
bez względu nadługość zapisywanej informacji.
Typ pola w rekordzie opisuje charakter danej, jaka będzie przechowywana
w polu.
System dBASE III akceptuje dane 5 podstawowych
typów: dane tekstowe - charakter field, dane liczbowe - numeric field, dane logiczne - logical
field,
dane w postaci daty - date field, wskaźnik
do tzw. notatki (pola memo).
Notatki zapisuje się do oddzielnego pliku o rozszerzeniu DBT.
Typy pól w
DBase |
|||
Oznaczenie pola |
Typ pola |
Długość |
Opis |
C |
znakowe
(tekstowe), Charakter |
254
znaki |
dowolny
ciąg znaków - napisy złożone z liter, cyfr i innych znaków dostepnych na klawiaturze |
N |
numeryczne
(liczbowe), Numeric |
19
znaków, |
cyfry,
znak + lub -, kropka dziesiętna |
L |
logiczne,
logical |
1
znak |
1
znak: t, T, y, Y - jeśli prawda lub n, N, f, F jeśli fałsz |
D |
data,
date |
8
znaków |
data
w postaci mm/dd/rr lub w
wersji polskiej w postaci rr/mm/dd |
M |
notatnikowe
(opisowe) |
10
znaków |
wskaźnik
do zbioru .DBT |
F |
numeryczne,
float |
20
znaków |
liczby
zmiennoprzecinkowe, inna reprezentacja wewnętrzna niż w typie N |
Liczba rekordów w zbiorze max 1 miliard. Długość
rekordu max. 4000 bajtów, max.
128 pól.
W DBase IV max liczba pól w rekordzie 255, dług.
rekordu też 4000 bajtów,
w j. Clipper 5.0 mogą wystąpić max.
1024 pola.
W dBase III+ w zbiorze .dbt
(memo) treść pola memo
wynosi max. 5000 znaków, w dBase IV jest dowolna
(ograniczona dostępną pamięcią),
w j. Clipper 5.0 rozmiar pola memo
ograniczony jest do 64 KB.
Poza plikami bazy danych, zawierającymi relacje (pliki
o rozszerzeniu DBF) i plikami notatek (DBT),
w systemie istnieją inne typy plików, zawierajace
informacje wspomagające działanie programu.
Największe znaczenie mają pliki indeksowe o nazwach określonych przez
użytkownika i rozszerzeniach NDX.
Pliki o rozszerzeniu MEM zawierają dane i zmienne, trzymane podczas
działania programu w pamięci operacyjnej.
Pliki FMT zawierają szablony, wg których wyświetlana jest informacja z
bazy na ekranie monitora.
Pliki FRM zawierają schematy tworzenia raportów przez drukarki.
Pliki indeksowe mają za zadanie skrócenie
czasu przeszukiwania pliku bazy danych.
Plik indeksowy umożliwia uszeregowanie rekordów wg informacji zawartych w
określonym polu.
Założenie pliku indeksowego nie powoduje uporządkowania rekordów w pliku bazy
danych (DBF),
lecz jej uporządkowanie w ramach pliku indeksowego (NDX).
W pliku indeksowym umieszcza się zawartość wybranego pola i nr rekordu, w
którym znajduje się pole wg kolejności alfabetycznej.
Z plikiem bazy danych może być skojarzonych wiele plików indeksowych,
ale równocześnie może być otwartych nie więcej niż 7.
Proces użytkowania bazy danych można podzielić na 2
zasadnicze fazy.
Faza zakładania bazy danych, podczas której należy opisać strukturę
rekordów w plikach baz danych,
a następnie wpisać do plików określoną
liczbę danych początkowych
(założyć rekordy - wypełnić ich pola).
Od momentu założenia zaczyna się faza druga, związana z przetwarzaniem i
konserwacją informacji zawartych w bazie.
Praca w dBase może odbywac się
na 2 sposoby:
W trybie konwersacyjnym, bezpośrednim tzw.
trybie z kropką. Kropka jest standardowym znakiem zgłoszenia dBase
i po niej wydaje się polecenia języka dBase, które są natychmiast wykonywane.
W trybie z asystentem - z wykorzystaniem
programu pomocniczego (asystenta) o nazwie ASSIST w dBase III+ lub Centrum
Sterowania w dBase IV.
W tym trybie użytkownik wybiera odpowiednie pozycje z menu i potwwierdza klawiszem <Enter>.
Program pomocniczy standardowo włączony jest po uruchomieniu dBase, można go
także wywołać pisząc polecenie assist
lub naciskająć <F2>.
W systemie znakiem zachęty jest kropka. Można wykorzystac opcje menu lub wpisać polecenie po znaku
zachęty.
Znajdziemy sie w edytorze struktury, wpisujemy kolejno
nazwy pól i ich typ oraz rozmiar.
Typ pola (domyślnie znakowy) zmieniamy spacją. Wprowadzenie potwierdzamy przez
<Enter>.
Po wpisaniu wszystkich pól naciskamy
<Ctrl><End>. Pojawi się pytanie: Czy
wprowadzić teraz rekordy danych?(T/N)
- tak jest w polskiej wersji dBase III+ Polonus, w angielskiej odpowiednia
komenda po angielsku.
Wpisujemy kolejno dane kończąc pole naciśnięciem
<Enter>. Wejście do pola memo przez <Ctrl><Home>,
wyjście <Ctrl><End>. Po wprowadzeniu
danych wszystkich rekordów naciskamy <Ctrl><End>
i dane zostaną zapisane do bazy danych.
Aby obejrzeć dane używamy polecenia list
lub jeśli chcemy wypisać rekordy bez numerów to list off.
Można użyć też menu.
W wersji angielskiej dBase III+ :
Retrieve, List
w wersji Polonus: Opracuj, Listuj
Jeśli chcemy wydruk na drukarce to dodajemy opcję to
print
Można wypisywać tylko wybrane pola z rekordów, np.
list nr, imie,
nazwisko, telefon off
Gdy interesują nas pewne rekordy spełniające określony
warunek, np.osoby o określonym imieniu to wydamy
przykładowe polecenia:
list for imie='Andrzej',
nr, imie, nazwisko off
list for imie='Andrzej'
.or. imie='Konrad' nr, imie, nazwisko off
Można również określic
zakres:
Podobne w działaniu jest polecenie display.
Przykłady:
display telefon for nazwisko='Kowalski'
Polecenie browse
umożliwia przeglądanie i poprawianie rekordów.
Pisze się komendę browse lub wybiera z menu Update Browse (albo Koryguj
Buszuj w Polonus)
Przechodzenie między polami przy użyciu <Home>
i <End> a miedzy
rekordami klawiszami kursor w górę i w dół.
W ramach pola kursor przesuwamy klawiszami strzałki kursora lewo, prawo.
Jeśli pole nie mieści się na ekranie to ekran można przesuwać <Ctrl>-> lub <Ctrl><-
Często trzeba zmienić rekord bieżący. Stosuje się
polecenie locate z parametrem for
locate [<zakres.] [for
<warunek>] [while <warunek>]
np. locate for nazwisko="Malicki"
edit
Zmiana rekordu bieżącego jest możliwa poleceniem goto
goto/go [record]
<wyrażenie> [bottom/top]
Np.
goto 10
go top
goto bottom
Delete - zaznacza
bieżący rekord do skasowania
Pack usuwa
fizycznie z bazy danych rekordy zaznaczone do skasowania
W celu łatwiejszego odnajdywania rekordów należy je
uporządkować. Np. ułożyć w kolejności alfabetycznej wg nazwiska i imienia.
Najlepszą metodą jest indeksowanie bazy wg określonych pól.
Indeksowanie nie zmienia fizycznego ułożenia rekordów, ale tworzy specjalny
zbiór indeksowy zawierający
informacje o logicznej kolejności
rekordów. Zbiór indeksowy jest automatycznie modyfikowany (porządkowany)
przy wpisywaniu nowego rekordu (jeśli bazę otworzy się łącznie z odpowiednim
plikiem indeksowym).
Plik indeksowy tworzy się poleceniem
index on
<wyrażenie> to <plik_indeksowy> [unique]
- tworzy plik indeksowy skojarzony z aktywną bazą danych. Pola kluczowe
są układane alfabetycznie,
chronologicznie lub numerycznie (rosnąco). Opcja Unique
powoduje pomijanie powtarzających się kluczy
index on nazwa_pola_i[+nazwa_pola_j+..] to nazwa
np.
index on nazwisko+imie
to nazw
Aby możliwa była automatyczna zmiana indeksów, bazę
należy otwierać poleceniem:
use znajomi index nazw
Wykonanie polecenia:
list nr, imie,
nazwisko, telefon off
po indeksowaniu bazy wg pola nazwisko i imie
spowoduje wyświetlenie listy posortowanej wg nazwisk i imion w ramach wspólnych
nazwisk.
Inną metodą porządkowania jest sortowanie
bazy. Jest to czynność pracochłonna polegająca na fizycznej
zmianie kolejności rekordów w pliku bazy danych.
Każde wprowadzenie nowego rekordu powoduje konieczność ponownego posortowania
bazy,
z tego względu metoda ta jest mniej popularna i moze
być stosowana w odniesieniu do baz o małej liczbie rekordów.
Do sortowania bazy danych stosuje się polecenie:
sort to nowy_plik on nazwa_pola
Można sortować w porządku rosnącym dodając parametr /A
(domyślnie) lub malejącym (/D).
Pełna forma polecenia:
sort to <nowy plik> on <pole1> [/a] [/c] [/d] [,
<pole2> [/a] [/c] [/d] ... [<zakres]] [for <warunek.] [while <warunek>]
Do tworzenia nalepek stosuje się polecenie
create label plik_z_proj_nalepek
Należy określić rozmiary nalepki, liczby nalepek,
odstępy. Gdy chcemy w wierszu umieścić kilka pól łączymy je znakiem
"+", np. IMIE+NAZWISKO.
Wydrukowanie nalepek
label form plik_nalepek, np. label form znaj
Jeśli chcemy wydrukować nalepki tylko dla niektórych
rekordów, np. osób o imieniu "Anna" to wydamy polecenie:
label form znaj for imie="Anna"
System dBase umożliwia pisanie programów na obsługę
bazy.
Przykład programu, który na podstawie wprowadzonego imienia i nazwiska sprawdza
czy osoba w bazie istnieje
i jeżeli nie to dopisuje nowy rekord automatycznie wypełniając pola imie i nazwisko.
W przeciwnym wypadku umożliwia dokonanie zmian w danych istniejącej osoby.
W przykładzie tworzone są 2 zmienne mimie i mnazwisko,
w których przy użyciu poleceń get i read
zapamiętane są dane wprowadzone przez użytkownika. Do przeszukiwania
wykorzystano funkcję found().
Program można napisać pod dowolnym edytorem ASCII a
można wykorzystać edytor tekstowy bazy poleceniem:
modify command
plik_programu
np. modify command dopisz.
Po wpisaniu naciśniecie Ctrl End
zapisuje program na dysku, dodając rozszerzenie prg,
tutaj dopisz.prg.
set talk off
set bell off
use znajomi
index on nazwisko+imie to nazw
use
use znajomi index nazw
clear
mnazwisko=space(20)
mimie=space(20)
@2,4 say 'Podaj nazwisko'
@2,30 get mnazwisko
@4,4 say 'Podaj imie'
@4,30 get mimie
read
seek mnazwisko+mimie
if .not. found()
append blank
replace nazwisko with mnazwisko
replace imie with mimie
else
edit
endif
set talk on
set bell on
Język bazy danych dBase oferuje m.in. takie
konstrukcje programowe jak:
Pętle:
DO WHILE warunek_logiczny
polecenia
ENDDO
Podjęcie decyzji
IF war_logiczny
polecenia
[ELSE]
polecenia
ENDIF
Wybór jednego z wielu
DO CASE
CASE war_log
polecenia
CASE war_log
polec
..
[OTHERWISE]
polecenia
ENDCASE
do plik.prg
np.
do dopisz
skip [wyrażenie] - przemieszcza się w
podanej bazie o podaną liczbę rekordów, np. skip -2, skip 3
recall -
zlikwidowanie zaznaczenia do skasowania, recall
all - wszystke
rekordy
ctod - zamienia
napis na datę
pack - usuwa
rekordy zaznaczone do skasowania
zap - usuwa
wszystkie rekordy, zostawia strukturę bazy
use - zamyka
bazę danych z wszystkimi indeksami
= |
równy |
<> |
nierówny |
> |
większy |
>= |
nie
mniejszy (większy, równy) |
< |
mniejszy |
<=
|
nie
większy |
.not. |
nie |
.and. |
i
- koniunkcja |
.or. |
lub
- alternatywa |
Przykłady
delete all for NAZWISKO='K'
delete all for nazwisko='K' .or. nazwisko='k'
delete all for srednia_oc>=4
delete all for data_ur>=ctod('06/01/79')
W języku dBase operacje wykonuje się na danych z pól
oraz na zmiennych pamięciowych.
Przykłady
x=5
y='5'
z=3*x
?x
?y
?z
a='Funkcje'
b='baz danych'
c=' '
d=a+c+b
?d - konkatenacja łańcuchów
() - nawiasy
^ lub ** - potęgowanie
* i / - mnożenie i dzielenie
+ i - - dodawanie i odejmowanie
? abs(-5)
? int(2.34)
? mod(7,5) - reszta z dzielenia
? sqrt(16) - pierwiastek
? chr(65) - wynik A - zamiana kodu znaku na znak
? asc('A') - znak na nr kodu
? val ('123') - tekst na liczbę
? str(25.345,2) - liczba na tekst
? ctod('05/03/95') - takst
na datę
? date() - data
d=date()
? dtoc(d)
Funkcje do napisów
tekst='Ucze sie dBase'
? left(tekst,6)
? right(tekst,5)
? lower('NAUKA')
? upper(tekst)
? len('Ala ma kota')
? ltrim (' utnij
spacje')
? replicate('*+',40)
p=space(15)
Daty
d=date()
d1=d+10
d2=d-400
? cdow(d)
? cmonth(d)
? day(d2)
? month(d2)
? year(d2)
? dow(d)
? time()
F1 |
help |
pomoc |
F2 |
assist |
program
asystenta |
F3 |
list |
zawartość
rekordów otwartej bazy |
F4 |
dr |
zbiory
*.dbf |
F5 |
display
structure |
struktura
bazy |
F6 |
display
status |
ustawienia
opcji oraz klawisze funkcyjne |
F7 |
display
memory |
zmienne
zadeklarowane |
F8 |
display |
zawartość
bieżącego rekordu |
F9 |
append |
dopisywanie
rekordu |
F10 |
edit |
modyfikacja
bieżącego rekordu |
Help można uruchomić wpisując polecenie help lub
naciskając klawisz funkcyjne F1.
Na ekranie ukaże się odpowiednie menu. Można też uzyskać pomoc na temat
dowolnego polecenia pisząc po jego nazwie /?
dBase interpretuje polecenia odczytywane
z pliku (PRG).
Usprawnieniem jest opracowanie systemów umożliwiających tłumaczenie programów
na kod maszynowy procesora - kompilatorów.
Najbardziej znanym programem tłumaczącym programy bazy jest Clipper Compiler
firmy Nantucket.
Dodatkową korzyścią jest to, że nie trzeba posiadać systemu dBase.
Clipper zwiększa ilość plików otwartych do 250,
liczba pól w rekordzie ze 128 do 1024,
zmiennych pamięciowych z 256 do 64000. Można definiować własne funkcje