Mam ambitne postanowienie - nauczyć się trochę o Oracle, posługiwałam się językiem SQL w Accesie, niemniej jednak poza paroma "selectami" i ogólnym pojęciem o bazach danych - brakuje mi teorii i ćwiczeń. Tak więc do roboty... Może moje "notatki" przydadzą się komuś... Może ktoś pomoże mi w zrozumieniu niektórych kwestii...
poniedziałek, 13 lutego 2012
8. Funkcje agregujące Np. rollup, Cube...
Wyciągając z bazy dane przy użyciu samej klauzuli GROUP BY nie uzyskamy
częściowych podsumowań po poszczególnych poziomach wymiarów. Do
wprowadzenia wyników częściowych podsumowań służą operatory ROLLUP i
CUBE. Zapytanie:
Operator CUBE daje nawet więcej niż ROLLUP, bo również wszystkie częściowe podsumowania po poszczególnych wymiarach – we wszystkich możliwych kolejnościach.
Na przykład, gdybyśmy w powyższej instrukcji SELECT zamienili ROLLUP na CUBE, dostalibyśmy oprócz powyższych wierszy również takie wiersze jak:
Jest też możliwość łączenia zwykłego grupowania z grupowaniem typu ROLLUP i CUBE. Na przykład:
SELECT Czas.rok, Miejsce.miasto, Towar.kategoria, SUM(Sprzedaż.wartość)AS "W sumie"
FROM Sprzedaż NATURAL JOIN Miejsce NATURAL JOIN Towar NATURAL JOIN Czas
GROUP BY ROLLUP(Czas.Rok, Miejsce.Miasto, Towar.Kategoria);
da wynik w rodzaju (oczywiście używane po stronie klienckiej narzędzie OLAP
przedstawi wynik tego zapytania w bardziej czytelny sposób np. za pomocą
wykresu):ROK MIASTO KATEGORIA W sumie ------ ---------- ----------- ---------- 1996 Warszawa Komputery 100000 1996 Warszawa Telewizory 50000 .... 1996 Warszawa * 1000000 1996 Łódź Komputery 50000 1996 Łódź Telewizory 25000 ..... 1996 Łódź * 250000 ..... 1996 * * 2000000 1997 Warszawa Komputery 1500000 .... * * * 10000000Tab. 7.4 Wynik operacji ROLLUP Operator ROLLUP daje wszystkie częściowe podsumowania po poszczególnych wymiarach – w danej kolejności. W wyniku istotna jest kolejność grupowanych kolumn. W szczególności zapytanie:
SELECT e.Deptno, e.EmpNo, SUM(e.Sal) AS Zarobki
FROM Emp e
GROUP BY ROLLUP(e.Deptno, e.EmpNo);
daje wynik:DEPTNO EMPNO ZAROBKI ---------- ---------- ---------- 10 7782 2450 10 7839 5000 10 7934 1300 10 8750 20 7369 800 20 7566 2975 20 7788 3000 20 7876 1100 20 7902 3000 20 10875 30 7900 950 30 7499 1600 30 7521 1250 30 7654 1250 30 7698 2850 30 7844 1500 30 9400 29025Tab. 7.5 Wynik operacji ROLLUP Operator ROLLUP daje więc w szczególności możliwość, której brakowało dotychczas w SQL – zwracania w wyniku zarówno szczegółowych wierszy jak ich podsumowań.
Operator CUBE daje nawet więcej niż ROLLUP, bo również wszystkie częściowe podsumowania po poszczególnych wymiarach – we wszystkich możliwych kolejnościach.
Na przykład, gdybyśmy w powyższej instrukcji SELECT zamienili ROLLUP na CUBE, dostalibyśmy oprócz powyższych wierszy również takie wiersze jak:
* Warszawa Komputery 1000000 ... * Warszawa * 9000000 ... * * Komputery 8000000 .... 1996 * Komputery 500000Tab. 7.6 Wynik operacji CUBE
Jest też możliwość łączenia zwykłego grupowania z grupowaniem typu ROLLUP i CUBE. Na przykład:
GROUP BY Miejsce.Miasto, ROLLUP(Czas.Rok, Towar.Kategoria)
Źródło: http://edu.pjwstk.edu.pl/wyklady/szb/scb/wyklad7/w7.htm
7. Co to są funkcje analityczne? Np. rank over partition by
Funkcje analityczne to specjalna konstrukcja języka SQL dotycząca
operacji statystycznych wykonywanych na wierszach wynikowych zapytania
na samym końcu jego realizacji i tylko przed zastosowaniem klauzuli
ORDER BY.
Mianowicie, dla każdego wynikowego wiersza zapytania określamy zbiór powiązanych z nim wierszy - nazywany oknem tego wiersza. Definiuje się go za pomocą tzw. klauzuli analitycznej. Rozmiary okien określa się, albo za pomocą liczby wierszy stosując klauzulę ROWS, albo za pomocą przedziałów wartości, takich jak czas, stosując klauzulę RANGE. Zbiór wszystkich wynikowych wierszy można najpierw podzielić na zbiór rozłącznych grup (np. pracownicy pracujący w tym samym departamencie, pracownicy pracujący na tym samym stanowisku), a następnie w ramach jednej grupy określać okno danego wiersza.
Oto składnia funkcji analitycznej:
gdzie klauzula analityczna może zawierać następujące cztery podklauzule:
Podamy teraz kilka przykładów zastosowań.
Przykład (podklauzula PARTITION)
PARTITION jest podobne do GROUP BY z tym, że wartości podsumowujące są załączane do każdego wiersza w grupie, a nie tylko raz dla całej grupy.
W tym przypadku okno obliczeniowe dla danego pracownika pokrywa się z grupą określoną przez PARTITION BY - czyli ze zbiorem pracowników pracujących w tym samym departamencie co dany pracownik. Oto wynik:
Rozważmy problem analityczny wyznaczenia dla każdego pracownika, liczby pracowników, których zarobki są co najwyżej 50zł mniejsze lub 150zł większe od zarobków tego pracownika. W tym przypadku okno obliczeniowe dla danego pracownika o zarobkach
Zauważmy, że co najmniej jedna osoba spełnia ten warunek – pracownik względem którego określamy okno.
Dla każdego pracownika podaj numer jego kierownika, datę zatrudnienia, zarobki oraz średnią wartość zarobków pracowników zatrudnionych bezpośrednio przed i po zatrudnieniu tego pracownika (włącznie z tym pracownikiem) wśród pracowników tego kierownika.
Oracle dostarcza dodatkowych funkcji statystycznych do zastosowania w funkcjach analitycznych. Dwie z nich są pokazane poniżej.
Przykład
Rozważmy problem analityczny wyznaczenia dla każdego pracownika procentowego zaszeregowania jego zarobków w jego departamencie (procentowe zaszeregowanie zarobków danego pracownika określamy jako
Przykład
Rozważmy problem analityczny wyznaczenia dla każdego sprzedawcy stosunku jego zarobków do sumy zarobków wszystkich sprzedawców.
Jako dodatkową informację podajemy możliwość stosowania algorytmów eksplorujących dane na serwerze bazy danych Oracle.
ODM - Oracle Data Mining
Oracle rozpoczął w wersji 10g wprowadzanie pojęć i algorytmów data-miningowych na razie głównie przy pomocy pakietu DBMS_DATA_MINING (jeszcze nie na poziomie SQL i specjalnych obiektów zapisywanych w bazie danych). Centralne pojęcie to model określający parametry, algorytm data-miningowy i wprowadzone dane uczące.
Dane do analizy – zbiór punktów w przestrzeni wielowymiarowej - są dostarczane w jednej tabeli. Wiersze są nazywane przypadkami (ang. cases). Kolumna ID przypadku dostarcza jednoznacznego identyfikatora np. CUSTOMER ID w tabeli klientów. Kolumny są nazywane atrybutami. Np. model regresji może przewidzieć poziom dochodów klienta (atrybut typu target) w oparciu o datę urodzenia i płeć (atrybuty typu predictors).
Parametry procedury CREATE_MODEL
Stosuje podany model eksploracyjny do podanych danych i generuje wyniki w tabeli, której nazwa jest specyfikowana w APPLY. Operacja APPLY jest też nazywana scoring. Dla modeli predyktywnych, operacja APPLY generuje wynik w kolumnie docelowej. Dla modeli deskryptywnych jak clustering, operacja APPLY przyporządkowuje każdemu przypadkowi prawdopodobieństwo należenia do klastra.
Mianowicie, dla każdego wynikowego wiersza zapytania określamy zbiór powiązanych z nim wierszy - nazywany oknem tego wiersza. Definiuje się go za pomocą tzw. klauzuli analitycznej. Rozmiary okien określa się, albo za pomocą liczby wierszy stosując klauzulę ROWS, albo za pomocą przedziałów wartości, takich jak czas, stosując klauzulę RANGE. Zbiór wszystkich wynikowych wierszy można najpierw podzielić na zbiór rozłącznych grup (np. pracownicy pracujący w tym samym departamencie, pracownicy pracujący na tym samym stanowisku), a następnie w ramach jednej grupy określać okno danego wiersza.
Oto składnia funkcji analitycznej:
nazwa_funkcji_grupowej(argument,...) OVER (klauzula_analityczna) |
gdzie klauzula analityczna może zawierać następujące cztery podklauzule:
-
PARTITION BY wyrażenie, ... określa podział całego zbioru wynikowego wierszy na grupy; jeśli zostanie opuszczona, cały zbiór wynikowych wierszy stanowi jedną grupę. Wiersze wchodzące w skład okna są zawsze ograniczone (zawarte) do jednej grupy.
-
ORDER BY wyrażenie, ... określa porządek wierszy w ramach podziału określonego w grupie przez podklauzulę PARTITION BY.
-
ROWS specyfikacja_okna specyfikuje okno poprzez określenie liczby wierszy;
-
RANGE specyfikacja_okna specyfikuje okno poprzez określenie zakresu wierszy.
Podamy teraz kilka przykładów zastosowań.
Przykład (podklauzula PARTITION)
PARTITION jest podobne do GROUP BY z tym, że wartości podsumowujące są załączane do każdego wiersza w grupie, a nie tylko raz dla całej grupy.
SELECT e.Ename, e.Sal,
SUM(e.Sal) OVER
(PARTITION BY e.Deptno) AS Suma_zarob,
Round(100*e.Sal/(SUM(e.Sal) OVER
(PARTITION BY e.Deptno))) AS
Proc_zarob
FROM Emp e
ORDER BY e.Deptno, e.Ename;
SUM(e.Sal) OVER (PARTITION BY e.Deptno)
jest funkcją analityczną, która sumuje zarobki wszystkich pracowników pracujących
w tym samym departamencie.W tym przypadku okno obliczeniowe dla danego pracownika pokrywa się z grupą określoną przez PARTITION BY - czyli ze zbiorem pracowników pracujących w tym samym departamencie co dany pracownik. Oto wynik:
ENAME SAL SUMA_ZAROB PROC_ZAROB ---------- ---------- ---------- ---------- CLARK 2450 8750 28 KING 5000 8750 57 MILLER 1300 8750 15 ADAMS 1100 10875 10 FORD 3000 10875 28 JONES 2975 10875 27 SCOTT 3000 10875 28 SMITH 800 10875 7 ALLEN 1600 9400 17 BLAKE 2850 9400 30 JAMES 950 9400 10 MARTIN 1250 9400 13 TURNER 1500 9400 16 WARD 1250 9400 13Tab. 7.7 Ilustracja działania podklauzuli PARTITION Przykład (podklauzula RANGE)
Rozważmy problem analityczny wyznaczenia dla każdego pracownika, liczby pracowników, których zarobki są co najwyżej 50zł mniejsze lub 150zł większe od zarobków tego pracownika. W tym przypadku okno obliczeniowe dla danego pracownika o zarobkach
e.Sal
nie zależy od
departamentu i obejmuje wszystkich pracowników, których zarobki są w
przedziale [e.Sal-50, e.Sal+150]
. (Jest określona tylko jedna grupa
- zbiór wszystkich wierszy.)Zauważmy, że co najmniej jedna osoba spełnia ten warunek – pracownik względem którego określamy okno.
SELECT e.Ename, e.Sal,
COUNT(*) OVER (ORDER BY e.Sal RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING) AS Licznik
FROM Emp e;
Oto wynik:ENAME SAL LICZNIK --------- ------- ------- SMITH 800 2 JAMES 950 2 ADAMS 1100 3 WARD 1250 3 MARTIN 1250 3 MILLER 1300 3 TURNER 1500 2 ALLEN 1600 1 CLARK 2450 1 BLAKE 2850 4 JONES 2975 3 SCOTT 3000 3 FORD 3000 3 KING 5000 1Tab. 7.8 Ilustracja działania podklauzuli RANGE Przykład (podklauzula ROWS)
Dla każdego pracownika podaj numer jego kierownika, datę zatrudnienia, zarobki oraz średnią wartość zarobków pracowników zatrudnionych bezpośrednio przed i po zatrudnieniu tego pracownika (włącznie z tym pracownikiem) wśród pracowników tego kierownika.
SELECT mgr, ename, hiredate, sal,
AVG(sal) OVER (PARTITION BY mgr ORDER BY hiredate
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS ave
FROM Emp;
Oto wynik:MGR ENAME HIREDATE SAL AVE ---------- ---------- -------- ---------- ---------- 7566 FORD 81/12/03 3000 3000 7566 SCOTT 82/12/09 3000 3000 7698 ALLEN 81/02/20 1600 1425 7698 WARD 81/02/22 1250 1450 7698 TURNER 81/09/08 1500 1333,3 7698 MARTIN 81/09/28 1250 1233,3 7698 JAMES 81/12/03 950 1100 7782 MILLER 82/01/23 1300 1300 7788 ADAMS 83/01/12 1100 1100 7839 JONES 81/04/02 2975 2912,5 7839 BLAKE 81/05/01 2850 2758,3 7839 CLARK 81/06/09 2450 2650 7902 SMITH 80/12/17 800 800 KING 81/11/17 5000 5000Tab. 7.9 Ilustracja działania podklauzuli ROWS
Oracle dostarcza dodatkowych funkcji statystycznych do zastosowania w funkcjach analitycznych. Dwie z nich są pokazane poniżej.
Przykład
Rozważmy problem analityczny wyznaczenia dla każdego pracownika procentowego zaszeregowania jego zarobków w jego departamencie (procentowe zaszeregowanie zarobków danego pracownika określamy jako
pr=(i-1)/(n-1)
, gdzie n>1 jest liczbą pracowników w dziale, a
i jest numerem zaszeregowania zarobków danego pracownika wśród zarobków pracowników w jego
dziale według wzrastających zarobków).
SELECT e.Deptno, e.Ename, e.Sal,
PERCENT_RANK() OVER (PARTITION BY e.Deptno ORDER BY e.Sal) AS Pr
FROM Emp e;
Oto wynik:DEPTNO ENAME SAL PR ------- ------- ------- ------ 10 MILLER 1300 0 10 CLARK 2450 .5 10 KING 5000 1 20 SMITH 800 0 20 ADAMS 1100 .25 20 JONES 2975 .5 20 SCOTT 3000 .75 20 FORD 3000 .75 30 JAMES 950 0 30 WARD 1250 .2 30 MARTIN 1250 .2 30 TURNER 1500 .6 30 ALLEN 1600 .8 30 BLAKE 2850 1Tab. 7.10 Ilustracja działania funkcji PERCENT_RANK z podklauzulą PARTITIONPrzedstawione dane można użyć do sporządzenia wykresu słupkowego obrazującego zaszeregowania zarobków pracowników w ramach ich działów.
Przykład
Rozważmy problem analityczny wyznaczenia dla każdego sprzedawcy stosunku jego zarobków do sumy zarobków wszystkich sprzedawców.
SELECT e.Ename, e.Sal, RATIO_TO_REPORT(e.Sal) OVER () AS Rr
FROM Emp e
WHERE e.Job = 'SALESMAN';
Oto wynik:ENAME SAL RR -------- ---- ------------ ALLEN 1600 .285714286 WARD 1250 .223214286 MARTIN 1250 .223214286 TURNER 1500 .267857143Tab. 7.11 Ilustracja działania funkcji RATIO_TO_REPORT
Jako dodatkową informację podajemy możliwość stosowania algorytmów eksplorujących dane na serwerze bazy danych Oracle.
ODM - Oracle Data Mining
Oracle rozpoczął w wersji 10g wprowadzanie pojęć i algorytmów data-miningowych na razie głównie przy pomocy pakietu DBMS_DATA_MINING (jeszcze nie na poziomie SQL i specjalnych obiektów zapisywanych w bazie danych). Centralne pojęcie to model określający parametry, algorytm data-miningowy i wprowadzone dane uczące.
Dane do analizy – zbiór punktów w przestrzeni wielowymiarowej - są dostarczane w jednej tabeli. Wiersze są nazywane przypadkami (ang. cases). Kolumna ID przypadku dostarcza jednoznacznego identyfikatora np. CUSTOMER ID w tabeli klientów. Kolumny są nazywane atrybutami. Np. model regresji może przewidzieć poziom dochodów klienta (atrybut typu target) w oparciu o datę urodzenia i płeć (atrybuty typu predictors).
Parametry procedury CREATE_MODEL
- model_name -- nazwa modelu
- mining_function -- stała reprezentująca rodzaj problemu eksploracji danych np. klasyfikacja, clustering, regresja
- data_table_name -- nazwa tabeli z danymi „uczącymi” model
- case_id_column_name
- target_column_name -- NULL dla modeli deskryptywnych, nie NULL dla modeli predyktywnych
- settings_table_name -- ustawienia dla funkcji i algorytmu (np. nazwa algorytmu eksploracyjnego)
Stosuje podany model eksploracyjny do podanych danych i generuje wyniki w tabeli, której nazwa jest specyfikowana w APPLY. Operacja APPLY jest też nazywana scoring. Dla modeli predyktywnych, operacja APPLY generuje wynik w kolumnie docelowej. Dla modeli deskryptywnych jak clustering, operacja APPLY przyporządkowuje każdemu przypadkowi prawdopodobieństwo należenia do klastra.
DBMS_DATA_MINING.APPLY
(model_name IN VARCHAR2,
data_table_name IN VARCHAR2,
case_id_column_name IN VARCHAR2,
result_table_name IN VARCHAR2
-- schemat tworzonej przez APPLY tabeli zależy od
algorytmu );
Źródło: http://edu.pjwstk.edu.pl/wyklady/szb/scb/wyklad7/w7.htm
2. Co to są i jak się tworzy, kasuje, modyfikuje i do czego służą:
1. Partycje (także indeksy na partycjach)
2. Tabele zorganizowane na indeksach
3. Klastry
4. kursory
5. tabele tymczasowe
6. widoki
7. snapshoty
8. przestrzenie tabel
9. sekwencje
1. Co to są postacie normalne (1NF, 2NF,3NF i BCNF)? Do czego służy normalizacja baz danych, czemu ma zapobiegać, czy zawsze się ją stosuje?
NORMALIZACJA (struktury baz danych)- technika projektowania struktury bazy danych w oparciu o tabele i pola, która pozwala uniknąć problemów związanych z niepotrzebnym powielaniem danych i niemożliwością jednoznacznego identyfikowania rekordów, co ma ogromny wpływ na ograniczenie przestrzeni pamięciowej ale poprzez mnożenie liczby tabel wydłuża czas dostępu do danych.
Tab. Źródło: http://andrzejklusiewicz.blogspot.com/2010/11/kurs-oracle-sql-podstawowe-definicje.html
PIERWSZA POSTAĆ NORMALNA (1NF) - reguły, które regulują proces tworzenia dobrze zorganizowanej struktury bazy danych.
- organizowanie informacji w kolumny
- określenie typu danych dla każdej z kolumn (np. char, varchar, real, decimal, date)
- umieszczenie powiązanych kolumn w odpowiednich tabelach
- wyeliminowanie problemu powielania grup danych
- wskazanie kluczy głównych poszczególnych tabel
Tab. Źródło: http://andrzejklusiewicz.blogspot.com/2010/11/kurs-oracle-sql-podstawowe-definicje.html
PIERWSZA POSTAĆ NORMALNA (1NF) - reguły, które regulują proces tworzenia dobrze zorganizowanej struktury bazy danych.
- organizowanie informacji w kolumny
- określenie typu danych dla każdej z kolumn (np. char, varchar, real, decimal, date)
- umieszczenie powiązanych kolumn w odpowiednich tabelach
- wyeliminowanie problemu powielania grup danych
- wskazanie kluczy głównych poszczególnych tabel
DRUGA POSTAĆ NORMALNA (2NF)
pierwsza postać normalna zakłada, że każda tabela ma swój klucz główny (unikalny identyfikator rekordu). Druga, że nie mogą istnieć żadne (nawet częściowe) zależności pomiędzy jakimikolwiek kolumnami wchodzącymi w skład klucza głównego.
Założenia:
- spełnione są wszystkie wymagania pierwszej postaci normalnej
- należy usunąć wszystkie podzbiory danych, które mają zastosowanie do wielu wierszy w tabeli i umieścić je w oddzielnych tabelach.
- należy utworzyć relacje pomiędzy tymi tabelami i połączyć je za pomocą kluczy obcych
TRZECIA POSTAĆ NORMALNA (3NF)
występuje tylko wtedy, gdy spełnia następujące warunki:
- znajduje się w drugiej postaci normalnej
- wszystkie pola, które nie należą do klucza głównego, są od tego klucza zależne
POSTAĆ NORMALNA BOYCE- CODDA (najmocniejsza)
11. Na jakich poziomach projektuje się relacyjną bazę danych:
pierwsza postać normalna zakłada, że każda tabela ma swój klucz główny (unikalny identyfikator rekordu). Druga, że nie mogą istnieć żadne (nawet częściowe) zależności pomiędzy jakimikolwiek kolumnami wchodzącymi w skład klucza głównego.
Założenia:
- spełnione są wszystkie wymagania pierwszej postaci normalnej
- należy usunąć wszystkie podzbiory danych, które mają zastosowanie do wielu wierszy w tabeli i umieścić je w oddzielnych tabelach.
- należy utworzyć relacje pomiędzy tymi tabelami i połączyć je za pomocą kluczy obcych
Przykład:
Zamiast tabeli z powielonym ID aktorów
powinny być następujące tabele:
TRZECIA POSTAĆ NORMALNA (3NF)
występuje tylko wtedy, gdy spełnia następujące warunki:
- znajduje się w drugiej postaci normalnej
- wszystkie pola, które nie należą do klucza głównego, są od tego klucza zależne
POSTAĆ NORMALNA BOYCE- CODDA (najmocniejsza)
PYTANIA I ODPOWIEDZI.ĆWICZENIA
1. ENCJI odpowiada w relacyjnej bazie danych: TABELA
2. ZWIĄZKOWI JEDNOZNACZNEMU odpowiada w relacyjnej bazie danych:KLUCZ OBCY
3. ZWIĄZKOWI WIELOZNACZNEMU odpowiada w relacyjnej bazie danych:TABELA
4. ATRYBUTOWI w relacyjnej bazie danych odpowiada: KOLUMNA W TABELI
5. JEDNOZNACZNEMU IDENTYFIKATOROWI odpowiada w relacyjnej bazie danych:
KLUCZ GŁÓWNY
5. SPÓJNOŚĆ REFERENCYJNA dotyczy faktu: wartością klucza obcego może być null lub wartość odpowiadającego mu klucza głównego
6. III POSTAĆ NORMALNA dotyczy faktu: wartości w kolumnie niekluczowej nie mogą zależeć ani od części klucza ani nawet przechodnio od klucza
7. Które ze sformułowań są prawdziwe w modelu relacyjnym - wszystkie poniższe:
- wiersze nie powtarzają się
- kolejność kolumn jest nieistotna
- wiersze nie mają tożsamości obiektowej
- związek jednoznaczny reprezentuje się przy pomocy klucza obcego
- tabela jest konkretną reprezentacją relacji
- dla klucza jednoznacznego jest automatycznie zakładany indeks
- dla klucza głównego jest automatycznie zakładany indeks jednoznaczny
- wartości klucza głównego nie mogą się powtarzać
- klucz główny nie może być częścią właściwą klucza obcego
- może być wiele kluczy obcych
- może być wiele kluczy jednoznacznych
- może być wiele indeksów
8. ZALEŻNOŚĆ ZŁĄCZENIOWA jest uogólnieniem zależności wielowartościowej w następującym sensie:dotyczy rozbicia tabeli na więcej niż dwie tabele,
9. POSTAĆ NORMALNA BOYCE- CODDA dotyczy faktu:
każda nietrywialna zależność funkcyjna jest zależnością od nadklucza,
10. Które z poniższych stwierdzeń są prawdziwe - wszystkie poniższe:
- w tabeli nie powinno być żadnych niekontrolowanych redundancji,
- jedyną poprawną, nietrywialną zależnością funkcyjną jest zależność do klucza,
- należy skonsultować z użytkownikiem poprawność skonstruowanego modelu danych,
- każdy fakt przechowywany w bazie danych powinien być w niej wyrażany tylko na jeden sposób,
11. Na jakich poziomach projektuje się relacyjną bazę danych:
- logicznym,
- użytkowym,
- fizycznym.
12. Kto jest twórcą relacyjnego modelu baz danych: Edgar Codd
13. W której firmie zaimplementowano po raz pierwszy system zarządzania relacyjną bazą danych:
- IBM
14. Gdy schemat tabel nie jest w trzeciej postaci normalnej mamy do czynienia z:
- anomaliami przy wstawianiu,
- anomaliami przy usuwaniu,
- redundancją,
- anomaliami przy modyfikacji.
- anomaliami przy usuwaniu,
- redundancją,
- anomaliami przy modyfikacji.
15. ZALEŻNOŚĆ FUNKCYJNA dotyczy zależności między: atrybutami
Eliminacja zależności częściowych i przechodnich prowadzi do:
zwiększenia liczby tabel,
III postaci normalnej,
Przy przejściu do tabeli obiektowej wiersz tabeli:
staje się obiektem pewnej klasy,
uzyskuje tożsamość obiektową,
może mieć związane ze sobą metody,
Jakiego typu może być wartość atrybutu w modelu obiektowo-relacyjnym:
zbiorem wartości,
listą wartości,
wartością atomową.
referencją do obiektu,
Dany
jest schemat relacyjny R={Student,Uczelnia,Adres,Akademik}, F {Student, Uczelnia->Klub; Klub->Adres}. W której postaci
normalnej jest ten schemat:
I i II postać normalna
Dany
jest schemat relacyjny R={Student,Uczelnia,Adres,Klub}, F {Student->Uczelnia; Klub->Adres Uczelnia->Adres}. W której
postaci normalnej jest ten schemat:
I postać normalna
Dany
jest schemat relacyjny R={Student,Uczelnia,Adres,Klub}, F
{Student->Uczelnia; Klub->Adres}. W której postaci normalnej jest
ten schemat:
I postać normalna
Dany
jest schemat relacyjny R={Student,Adres,Akademik}, F {Student->Adres; Akademik->Adres; Student->Akademik}. W której
postaci normalnej jest ten schemat:
Dany
jest schemat relacyjny R={Student,Adres,Akademik}, F {Student->Adres; Akademik->Adres; Student->Akademik}. W której
postaci normalnej jest ten schemat:
I i II postać normalna
Dany
jest schemat relacyjny R={Ulica, Kod, Sklep}, F = {Ulica->Kod;
Ulica, Numer ->Sklep}. W której postaci normalnej jest ten schemat::
I postać normalna
52. Dany
jest schemat relacyjny R={Ulica, Kod, Sklep}, F = {Ulica->Kod;
Sklep->Ulica}. W której postaci normalnej jest ten schemat
I i II postać normalna
Dany jest schemat relacyjny R={Miasto, Ulica, Kod}, F = {Miasto,Ulica->Kod}. W której postaci normalnej jest ten schemat::
III postać normalna
II postać normalna
I postać normalna
postać normalna Boyce’a-Codda
Dany
jest schemat relacyjny R={Miasto, Ulica, Kod, Poczta}, F {Miasto,Ulica->Kod; Kod->Poczta}. W której postaci normalnej jest
ten schemat:
I i II postać normalna
Dany
jest schemat relacyjny R={Miasto, Ulica, Kod, Poczta}, F {Miasto,Ulica->Kod; Kod->Miasto; Kod->Poczta}. W której
postaci normalnej jest ten schemat::I postać normalna
Dany
jest schemat relacyjny R={Miasto, Ulica, Kod}, F {Miasto,Ulica->Kod; Kod->Miasto}. W której postaci normalnej jest
ten schemat:
III postać normalna
II postać normalna
I postać normalna
Specyfikacje języka ODL obejmują:
dziedziczenie,związki odwrotne
Dany jest schemat relacyjny R={Miasto, Ulica, Kod}, F = {Miasto,Ulica->Kod; Kod->Miasto}. Schemat ten:
jest w III postaci normalnej,
jest w III postaci normalnej ale nie jest w postaci normalnej Boyce’a-Codda,
Dany
jest schemat relacyjny R={Miasto, Ulica, Kod, Poczta}, F {Miasto,Ulica->Kod; Kod->Miasto; Kod->Poczta}. Schemat ten:
nie jest ani w III postaci normalnej ani w postaci normalnej Boyce’a-Codda.
Dany jest schemat relacyjny R={Miasto, Ulica, Kod, Poczta}, F = {Miasto,Ulica->Kod; Kod->Poczta}. Schemat ten:
nie jest ani w III postaci normalnej ani w postaci normalnej Boyce’a-Codda.
Dany jest schemat relacyjny R={Miasto, Ulica, Kod}, F = {Miasto,Ulica->Kod}. Schemat ten:
jest w postaci normalnej Boyce’a-Codda,jest w III postaci normalnej,
Dany jest schemat relacyjny R={Ulica, Kod, Sklep}, F = {Ulica->Kod; Sklep->Ulica}. Schemat ten:
nie jest ani w III postaci normalnej ani w postaci normalnej Boyce’a-Codda.
Dany jest schemat relacyjny R={Ulica, Kod, Sklep, Numer}, F = {Ulica->Kod; Ulica, Numer ->Sklep}. Schemat ten:
nie jest ani w III postaci normalnej ani w postaci normalnej Boyce’a-Codda.
Dany
jest schemat relacyjny R={Student,Adres,Akademik}, F {Student->Adres; Akademik->Adres; Student->Akademik}. Schemat
ten:
nie jest ani w III postaci normalnej ani w postaci normalnej Boyce’a-Codda.
Dany
jest schemat relacyjny R={Student,Uczelnia,Adres,Klub}, F =
{Student->Uczelnia; Klub->Adres}. Schemat ten:Dany
jest
schemat relacyjny R={Student,Uczelnia,Adres,Klub}, F
{Student->Uczelnia; Klub->Adres; Uczelnia->Adres}. Schemat
ten:Dany jest schemat relacyjny R={Student,Uczelnia,Adres,Klub}, F =
{Student, Uczelnia->Klub; Klub->Adres}. Schemat ten:
Subskrybuj:
Posty (Atom)