Pytania 16 17 18


Pytanie 18. Zapisać tablicę prawdy dla funkcji XOR, AND, OR.

Tablica prawdy - jest to (najczęściej) tabela, która ukazuje jak przy danych stanach logicznych ustawionych na wejściach bramki będzie ustawione wyjście bramki.

Stan logiczny - w bramkach logicznych można spotkać się z dwoma możliwymi stanami: jedynką logiczną "1" lub zerem logicznym "0".

A,B - Wejście

Y- Wyjście

  1. OR „lub”

Jest to tzw. bramka sumy logicznej. W przypadku tej bramki wystarczy aby choć na jednym z jej wejść pojawił się stan "1" i wtedy na wyjściu również pojawi się jedynka logiczna "1".

A

B

Y

0

0

0

0

1

1

1

0

1

1

1

1

  1. AND „i”

Bramka ta realizuje tzw. iloczyn logiczny. Na wyjściu stan "1" występuje tylko i wyłącznie wtedy gdy na wszystkich wejściach bramki ustawiony jest również stan logiczny "1". Bramka ta posiada co najmniej dwa wejścia - może jednak posiadać ich więcej - teoretycznie nieskończenie wiele. W praktyce spotyka się bramki posiadające do 8 wejść. Natomiast wyjście wszystkie bramki mają tylko jedno.

A

B

Y

0

0

0

0

1

0

1

0

0

1

1

1

  1. XOR „Wyłącznie lub”

Alternatywa wykluczająca (alternatywa rozłączna, różnica symetryczna, suma modulo 2, kontrawalencja, XOR, exclusive or, EOR) to logiczny funktor zdaniotwórczy (dwuargumentowa funkcja boolowska) . Różnica symetryczna zdań 0x01 graphic
jest prawdziwa wtedy i tylko wtedy, gdy dokładnie jedno ze zdań p,q jest prawdziwe: 0x01 graphic

A

B

Y

0

0

0

0

1

1

1

0

1

1

1

0

Pytanie 17. Omówić możliwe problemy z integralnością w bazie danych.

Integralność

Oznacza to, ze dane przechowywane w bazie danych są prawdziwe lub, inaczej mówiąc, w bazie nie

są przechowywane dane fałszywe.

W relacyjnym modelu danych integralność jest utrzymywana przy pomocy tak zwanych wewnętrznych reguł integralności: integralności encji i integralności referencyjnej.

Reguły te nie wystarczają jednak do zapewnienia integralności w każdym przypadku. Często atrybuty różnych lub tych samych relacji mogą pozostawać we wzajemnej zależności niemożliwej do zdefiniowania przy pomocy mechanizmu kluczy. Dlatego wprowadzono pojecie dodatkowych więzów integralności, pozwalających zachować integralność dziedziny, nazywana także niekiedy integralnością semantyczna.

Integralność encji

Jest to reguła mówiąca o tym, ze każda tabela w bazie danych musi mieć klucz główny.

Integralność encji zapewniana jest na etapie definiowania schematu bazy danych poprzez wymóg określenia atrybutu będącego kluczem głównym. Prawidłowo działający system zarządzania bazy danych nie dopuści do złamania tej reguły poprzez powtórzenie wartości atrybutu wybranego na klucz główny relacji.

Integralność referencyjna

Jest to reguła, która określa stany, w jakich może znajdować sie wartość klucza obcego. Dopuszczalne są tylko dwa takie stany: wartość klucza obcego przybiera wartość klucza głównego lub wartość null. Drugi przypadek oznacza, ze związek pomiędzy niektórymi z obiektów reprezentowanych w dwóch powiązanych kluczami relacjach jest nieznany lub takiego związku nie ma. Jest to jednak rzadki przypadek i zazwyczaj konieczne jest raczej zapewnienie, ze taki stan klucza obcego nie wystąpi. Podobnie jak w przypadku integralności encji możliwe jest określenie na etapie definiowania schematu bazy danych, ze dany klucz obcy nie może przybierać

wartości null. Zachowanie integralności referencyjnej wymaga szczególnej uwagi podczas usuwania i aktualizacji poszczególnych pól. Dla każdego związku pomiędzy relacjami w bazie danych konieczne jest zdefiniowanie sposobu postępowania w takim przypadku.

Jeśli z bazy danych biblioteki usuwany jest autor lub zmianie ulega wartość klucza głównego relacji przechowującej informacje o autorach, co dzieje sie z napisanymi przez niego książkami?

Istnieją trzy możliwości, wybór najwłaściwszej w danym przypadku należy rozważyć projektując

bazę danych (model relacyjny nie narzuca żadnej z tych metod postępowania):

Zmiany ograniczone (ang. restricted)

Nie jest możliwe usuniecie komórki zawierającej wartość klucza głównego ani zmiana tej wartości jeżeli odwołuje sie do niej jakikolwiek klucz obcy.

W podanym przykładzie w celu usunięcia z bazy danych autora należy najpierw usunąć z niej jego książki.

Zmiany kaskadowe (ang. cascades)

Usuniecie tabelki z autorem powoduje usuniecie wszystkich innych w bazie danych odwołujących sie do niej poprzez wartość klucza obcego.

Podobnie zmiana wartości klucza głównego powoduje kaskadowa zmianę wartości

wszystkich odwołujących sie do niej kluczy obcych.

W tym przypadku w przykładowej bazie danych podczas usuwania danych autora usunięte zostałyby wszystkie książki jego książki. Należałoby jeszcze sprawdzić, czy książka nie miała kilku autorów, taka pozycja nie może być usunięta. Jeżeli do klucza głównego relacji przechowującej informacje o książkach odwołują sie klucze obce innych relacji, pola o wartościach klucza obcego odpowiadających wartości klucza głównego usuwanego pola i również zostaną usunięte.

Zmiany powodują ustawienie wartości klucza obcego na null (ang. nullifies)

Usuniecie lub zmiana wartości klucza głównego powoduje ustawienie wartości wszystkich kluczy obcych odnoszących sie do usuniętej wartości klucza głównego na null.

Przyjecie tej metody powoduje, ze usuniecie autora spowoduje pozostawienie informacji o jego książkach w bazie danych, jednak wartość klucza obcego odnoszącego sie do klucza głównego w relacji autorów wynosić będzie null.

Integralność semantyczna

Istnieją związki pomiędzy obiektami wymagające zdefiniowania dodatkowych reguł integralności, nazywanych także integralnością dziedziny.

Rozważmy bazę danych służąca przychodni przechowywaniu danych o pacjentach.

Przykładem związku, którego nie można odzwierciedlić w bazie danych posługując sie integralnością

referencyjna może być zależność pomiędzy grupa krwi rodziców i ich dzieci. Kolejnym przykładem może być niepodważalna reguła, iż data zabiegu czy wizyty któregokolwiek z pacjentów nie może być wcześniejsza od daty jego narodzin. Jest to oczywiste, ale cóż stałoby na przeszkodzie pomyłkowemu wpisaniu pacjentowi daty wizyty z wieku XVIII gdyby do bazy danych przychodni nie zostały wprowadzone zasady określające z jakiego zakresu może pochodzić data wizyty?

Aby zapobiec nieprawidłowym stanom bazy danych wprowadza sie tak zwane ograniczenia (ang. constraints) definiujące dodatkowe więzy pomiędzy obiektami. Ograniczenia musza być brane pod uwagę podczas każdej operacji zmieniającej stan bazy danych.

// Informacje dodatkowe :

Redundancja - nadmiarowość.

Anomalie

Anomalia istnienia

- istnienie danych jednego obiektu jest uwarunkowane istnieniem danych innego obiektu,

choć same obiekty mogą istnieć niezależnie

Anomalia wstawiania

- wstawienie danych jednego obiektu wymaga wstawienia danych innego lub użycia w ich

miejsce wartości null, co jednak może powodować problemy z kluczem głownym

Anomalia usuwania

- usunięcie danych jednego obiektu powoduje zniknięcie danych innego

(ryzyko utraty danych!)

Anomalia modyfikacji

- modyfikacja danych obiektu wymaga rownoczesnej zmiany wartości w wielu krotkach

(ryzyko utraty spojności danych!)

Normalizacja - zajmuje się klasyfikacją struktury bazy danych - jest to proces uściślania i

korygowania bazy danych, polegający na rozdzieleniu wstępnie zaprojektowanych

schematów relacji na mniejsze, gromadzące wybrane atrybuty. Proces ten w swym założeniu

eliminuje możliwość utraty informacji podczas dekompozycji relacji, a jego efektem

końcowym jest reprezentowanie wszystkich zależności funkcyjnych w pojedynczych

relacjach. Kolejnymi etapami normalizacji, jest przekształcanie aktualnej postaci bazy danych

do kolejnych tzw. postaci normalnych (ang. Normal Form)

1. Pierwsza postać normalna (1NF) - każde pole musi być atomowe (niepodzielne)

Zakłada atomiczną postać każdego z atrybutów, a zatem wyeliminowanie atrybutów

wielowartościowych. Normalizacja na tym etapie polega na przekształceniu encji na mniejsze encje, a

tym samym opisanie kilkoma prostymi atrybutami mniejszej encji, aniżeli opis atrybutem złożonym

encji przed normalizacją. (np. „rozbicie” atrybutu adres na atrybuty: ulica, miasto, kod itp.)

2. Druga postać normalna (2NF) - każde pole nie będące kluczem musi zależeć od

klucza podstawowego.

Zakłada spełnienie warunków 1NF oraz dodatkowo wymaga aby każdy atrybut niekluczowy był w

pełni funkcyjnie zależny od klucza głównego, a nie innego podzbioru atrybutów. Proces normalizacji na

tym etapie polega na usunięciu wszystkich częściowych zależności funkcyjnych, czyli zależności od

fragmentu klucza głównego, które powodują redundancję oraz występowanie anomalii przy

aktualizacji.

3. Trzecia postać normalna (3NF) - pole nie będące kluczem nie może zależeć od

innego pola nie będącego kluczem.

Zawiera w sobie warunki 2NF, ponadto wymaga aby wszystkie pośrednie zależności (czyli między

atrybutami nie wchodzącymi w skład klucza głównego) zostały usunięte, czyli aby wyeliminować

zależności atrybutów nie będących kluczami głównymi.

Integralność ma zapewnić, by zmiany bazy danych polegały na przechodzeniu przez kolejne poprawne stany dyskretne.

Replikacje - baza danych powinna być zbiorem nie powtarzających się faktów (każdy element danych na temat obiektów i związków między obiektami powinien w bazie występować tylko raz) - brak replikacji ułatwia utrzymanie integralności.

Transakcje powodujące zmianę stanu bazy danych (zmieniające informacje) są zagrożeniem dla integralności bazy danych. Należy dopuszczać do realizacji tylko te transakcje, które nie doprowadzają do zaprzeczenia faktów.

Pytanie 16.

  1. Wyjaśnić różnice pomiędzy współpracą aplikacji klienckiej z serwerem bazodanowym w trybie połączeniowym i bezpołączeniowym. Omówić sposób implementacji tych dwóch filozofii w .NET.

Tryb połączeniowy:

• Połączenie zawsze aktywne

• Dane zawsze aktualne

• Dla aplikacji o krótkich transakcjach i kilku równoległych połączeniach

Tryb bezpołączeniowy:

• Brak stałego połączenia z bazą danych

• Dane zapisywane w pamięci głównej

• Możliwy konflikt danych pomiędzy bazą danych a danymi lokalnymi

• Dla aplikacji o wielu równoległych i długo trwałych połączeniach

Tryb połączeniowy :

Pomiędzy obiektem DataReader a źródłem danych jest utrzymywane aktywne połączenie. Każde wywołanie metody Read()zwraca wiersz danych ze źródła.

Cechą charakterystyczną tego modelu jest fakt, że wczytuje on dane ze zbioru utworzonego za pomocą polecenia SQL'owego po jednym rekordzie, sekwencyjnie i tylko w trybie do odczytu.

Niemożliwa jest bezpośrednia aktualizacja danych lub ich dodawanie. Relacje pomiędzy klasami DataReader, Command, Connection przedstawione są poniżej :

0x01 graphic

Open - otwiera połączenie z baza

Close - zamyka połączenie

Dispose - zwalnia zasoby przydzielone dla obiektu połączenia.

Dispose() automatycznie wywołuje metodę Close().

State - zwraca status połączenia Przykład: if (polaczenie state == ConnectionState.Open)

ExecuteReader - // wykonuje zapytanie

ExecuteNonQuery - //wykonuje składowane procedury

ExecuteXmlReader - // wykonuje polecenie SQL (zwracany wynik:obiekt XmlReader)

Prepare - // pozwala na umieszczenie wyniku polecenia SQL w pamięci podręcznej

Dispose - // zwalnia zasoby obiektu, automatycznie wywołuje metodę Close()

Read - // przesuwa wskaźnik rekordu na pierwszy wiersz

HasRows - // sprawdza, czy obiekt zawiera jakieś wiersze Przykład: if (DataReader.HasRows)

IsClosed - //sprawdza, czy obiekt jest zamknięty Przykład: if (DataReader.IsClosed == false)

NextResult - //przejście do kolejnego wyniku

Close - //zamyka obiekt

SingleResult - //zwraca skalar

SingleRow - //zwraca jeden wiersz

SequentialAccess -// pozwala na dostęp do danych zwróconych przez polecenie SQL

CloseConnection - //zamyka połączenie

// Przykład dodatkowy :

Przykład :

<html>

<head>

<title>Wybierz klientow</title>

</head>

<body>

<script runat="localhost" language="C#">

void Page_Load (Object Source, EventArgs E) {

SqlConnection objPolaczenie = new SqlConnection // connection

("server=(local);uid=sa;pwd=;database=Sklep;");

objPolaczenie.Open();

SqlCommand objPolecenie = new SqlCommand("SELECT * FROM // command

Klient ORDER BY nazwisko DESC", objPolaczenie);

objPolecenie.Prepare();

SqlDataReader objDane =

objPolecenie.ExecuteReader(CommandBehavior.CloseConnection);

while (objDane.Read() == true) // dataReader

{

Response.Write (objDane[2].ToString() + "<BR>");

}

objDane.Close();

objDane = null;

objPolecenie.Dispose();

objPolecenie = null;

objPolaczenie.Close();

objPolaczenie= null;

}

</script>

</body>

</html>

Tryb bezpołączeniowy :

Polecenie SQL ładuje dane z zewnętrznego źródła do pamięci podręcznej na maszynie klienta.

Program manipuluje zbiorem wynikowym na maszynie lokalnej, a aktualizacje przekazuje z danych w buforze do źródła danych. W modelu tym połączenie jest otwierane tylko na czas wczytania

danych ze źródła i dokonania aktualizacji. W ten sposób zostają zwolnione zasoby serwera.

0x01 graphic

Kluczowe składniki modelu bezpołączeniowego to DataAdapter i DataSet.

Klasa DataAdapter udostępnia takie ważne metody jak Fill() i Update().

Metoda Fill()przekazuje zapytanie do bazy danych i zapisuje zwrócony zbiór w wybranym obiekcie DataTable. Metoda Update()służy do wykonywania operacji wstawiania, aktualizacji i usuwania danych wg zmian dokonanych w obiekcie DataSet.



Wyszukiwarka

Podobne podstrony:
EE pytanie 16, 17, 18
klima pytania, 13 14 15 16 17 18, Pytanie nr
9,10,11,12,13,14,15,16,17,18,19 opracowane pytania egzamin historia wychowania
4 16, 4 17, 4 18
Spalanie 16, 17, 18
16,17,18
16 17 18, Pedagogika studia magisterskie, socjologia
dodawanie (16-17-18-19), matematyka
excercise2, nader 16, 17, 18, 19
OPRACOWANE PYTANIA Z 16 i 17.06, Prawo cywilne

więcej podobnych podstron