Najwazniejsze Flashcards
(31 cards)
W jakiej sytuacji warto jest zdecydować się podczas projektowanie hurtowni danych na architekturę płatka śniegu?
Architektura płatka śniegu sprawdza się w środowiskach, gdzie kluczowa jest spójność danych, minimalizacja redundancji i zarządzanie dużą liczbą wymiarów złożonych. Jest odpowiednia, gdy priorytetem jest szczegółowość danych i optymalizacja ich przechowywania, a mniej ważna jest prostota i szybkość tworzenia zapytań.
Oparta na architekturze gwiazdy, stanowiąc jej bardziej
złożoną wersję . Podstawową różnicą między tymi schematami jest fakt, że w
schemacie płatka śniegu tabele wymiarów są znormalizowane , czyli są
zaprojektowane zgodnie z modelem relacyjnej bazy danych. Znajduje on
zastosowanie w przypadkach rozbudowanych struktur danych,
Wyjaśnij, jaką rolę w systemach federacyjnych pełni broker
Broker Specjalne oprogramowanie zwane pośrednikiem (broker), które akceptuje wspólny model danych i usług umożliwiając ich udostępnienie dla dowolnych miejsc w systemie rozproszonym.
W systemach federacyjnych, broker pełni rolę pośrednika, który umożliwia komunikację i wymianę danych między różnymi, autonomicznymi jednostkami lub systemami. Może to obejmować różne organizacje, serwery, aplikacje czy usługi, które współpracują w ramach federacji, ale zachowują niezależność w zakresie zarządzania, kontroli i przechowywania danych.
Wymień postulaty ACID
(A) Atomowość (atomicity)
(C) Spójność (consistency)
(I) Izolacja (isolation)
(D) Trwałość (durability)
Omów postutal Atomowości w ACID
Atomicity (atomowość) – transakcja jest niepodzielna, czyli wykonuje się w całości lub wcale. Jeśli w trakcie wykonania transakcji wystąpi błąd, wszystkie jej operacje są cofane, a dane powracają do stanu sprzed jej rozpoczęcia.
Omów postutal Spójności w ACID
Consistency (spójność) – transakcja zapewnia, że po jej zakończeniu baza danych będzie znajdować się w spójnym stanie, zgodnym z regułami integralności. Oznacza to, że jeśli baza była poprawna przed transakcją, to po niej również taka pozostanie.
Omów postutal Izolacji w ACID
Isolation (izolacja) – transakcje są izolowane od siebie nawzajem, dzięki czemu równoległe transakcje nie wpływają na siebie bezpośrednio. Każda transakcja wydaje się działać niezależnie, a zmiany dokonane przez jedną transakcję nie są widoczne dla innych, dopóki nie zostanie ona zatwierdzona.
Omów postutal Trwałości w ACID
Durability (trwałość) – po zatwierdzeniu transakcji jej zmiany są trwałe, czyli zapisane w bazie danych i przetrwają ewentualne awarie systemum, nie mogą być odwrócone przez zdarzenia losowe (np. wyłączenie prądu)
Na czym polega zasadnicza różnica między procedurą a transakcją?
Procedura składowana to zestaw operacji, które są wykonywane na żądanie, podczas gdy transakcja to mechanizm zarządzania spójnością danych, który zapewnia, że wszystkie operacje w jej ramach są wykonane lub wycofane jako całość. Transakcje mogą być częścią procedury, ale nie każda procedura musi korzystać z transakcji.
W jaki sposób stosowanie indeksów wpływa na wydajność SZBD?
Indeksy znacząco przyspieszają zapytania odczytowe, ale mogą spowolnić operacje zapisu (wstawianie, aktualizowanie, usuwanie). Wydajność całego systemu zależy od odpowiedniego doboru indeksów, uwzględniając charakterystykę zapytań i operacji wykonywanych na bazie danych. Zbyt wiele indeksów może prowadzić do nadmiernego obciążenia pamięci i dysku, a ich brak może prowadzić do wolniejszych zapytań.
Zalety i wady indeksów
Zalety indeksów: - przyspieszają wyszukiwanie danych, - przyspieszają zapytania wymagające sortowania, - pozwalają wymuszać unikalność kolumn. Wady indeksów: - planowanie i utrzymanie indeksów bywa pracochłonne, - mogą spowodować spowolnienie wykonywania operacji wstawiania i modyfikacji danych, - wymagają dodatkowego miejsca na dysku twardym.
Wyjaśnij pojęcie relacji stosowane w relacyjnym modelu danych.
dwuwymiarowa tabeli w bazie danych, która składa się z wierszy (krotek) i kolumn (atrybutów). Każda tabela w bazie danych jest relacją, a poszczególne wiersze w tabeli to rekordy, które reprezentują dane, natomiast kolumny definiują cechy tych danych.
Wyjaśnij różnicę między systemami OLTP a OLAP
Systemy OLTP (Online Transaction Processing) i OLAP (Online Analytical Processing) różnią się przede wszystkim celem, rodzajem danych oraz sposobem przetwarzania.
Cel:
OLTP służy do przetwarzania transakcji w czasie rzeczywistym, takich jak operacje CRUD (tworzenie, odczyt, aktualizacja, usuwanie). Skupia się na zapewnieniu integralności transakcji oraz obsłudze codziennych operacji biznesowych.
OLAP jest używane do analizy danych, raportowania oraz wsparcia w podejmowaniu decyzji. Umożliwia analizowanie dużych zbiorów danych historycznych w różnych wymiarach.
Rodzaj danych:
OLTP przechowuje dane operacyjne, które są aktualizowane na bieżąco, np. informacje o zamówieniach, transakcjach, klientach.
OLAP przechowuje dane historyczne, agregowane i denormalizowane, wykorzystywane do analiz, prognoz i raportów.
Rodzaj zapytań:
W OLTP zapytania są proste i dotyczą operacji na pojedynczych rekordach, jak np. dodanie zamówienia czy aktualizacja danych klienta.
W OLAP zapytania są bardziej złożone, często obejmujące agregacje i analizę danych w wielu wymiarach, np. analiza sprzedaży w różnych okresach czasu.
Wydajność:
OLTP wymaga wysokiej wydajności, ponieważ transakcje muszą być przetwarzane szybko i w czasie rzeczywistym.
OLAP przetwarza większe zbiory danych i ma mniejsze wymagania dotyczące szybkości, ale zapytania mogą być bardziej czasochłonne, zwłaszcza przy dużych bazach danych.
Przechowywanie danych:
W OLTP dane są zazwyczaj znormalizowane, co pozwala zaoszczędzić miejsce i minimalizować redundancję.
W OLAP dane są zdenormalizowane, co ułatwia szybsze przetwarzanie zapytań analitycznych, ale wymaga większej przestrzeni na przechowywanie.
Wolumen transakcji:
OLTP charakteryzuje się wysokim wolumenem transakcji, ponieważ codziennie przetwarza setki lub tysiące operacji.
OLAP ma niski wolumen transakcji, ponieważ zapytania analityczne są mniej częste i bardziej złożone.
Zarządzanie transakcjami:
W OLTP zarządzanie transakcjami jest kluczowe, ponieważ wymaga zapewnienia integralności (ACID), czyli atomowości, spójności, izolacji i trwałości.
W OLAP nie ma tak silnych wymagań dotyczących integralności transakcji, ponieważ system skupia się na analizie danych.
Podaj definicję bazy relacyjnej i bazy grafowej.
Wyjaśnij różnice między tymi bazami. Jakie dostrzegasz zalety a jakie wady w zastosowaniu baz grafowych.
Baza danych relacyjna (RDBMS – Relational Database Management System) to system zarządzania bazą danych, w którym dane przechowywane są w tabelach, a relacje między tymi danymi są określane przez klucze (np. klucz główny i obcy). Baza relacyjna korzysta z języka zapytań SQL (Structured Query Language) do manipulowania i odzyskiwania danych. Tabele składają się z wierszy (rekordów) i kolumn (atrybutów), a każdy rekord jest identyfikowany unikalnym kluczem głównym.
Grafowa baza danych – baza danych wykorzystująca struktury grafów z węzłami,
krawędziami i własnościami do przedstawiania i przechowywania danych oraz do
obsługi zapytań semantycznych . Bazą taką jest każdy system pamięci masowej , który
zapewnia bezindeksowe sąsiedztwo , co oznacza że każdy element bazy zawiera
bezpośredni wskaźnik na sąsiadujące elementy i nie jest konieczne wyszukiwanie
indeksowe .
Model grafu składa się zazwyczaj z:
● Węzłów - przechowują informacje o encjach
● Relacji - łączą ze sobą węzły, tworząc graf. Zawsze mają swój typ, kierunek a także
węzeł początkowy i końcowy. Mogą tworzyć pętle. Relacja musi łączyć parę encji.
● Własności - węzły i relacje są kontenerami na własności, które z kolei są parami
klucz-wartość
● Etykiet - są nadawane węzłom i stosowane do indeksowania
Różnice między bazą relacyjną a bazą grafową:
Struktura danych:
Baza relacyjna przechowuje dane w tabelach (w postaci wierszy i kolumn).
Baza grafowa przechowuje dane w postaci grafu (węzły i krawędzie).
Relacje:
W bazie relacyjnej relacje między danymi są określane za pomocą kluczy obcych i łączone za pomocą JOIN w zapytaniach SQL.
W bazie grafowej relacje są naturalnie reprezentowane przez krawędzie między węzłami, co pozwala na łatwe przetwarzanie skomplikowanych zależności.
Złożoność zapytań:
W bazie relacyjnej zapytania z wieloma złożonymi połączeniami (JOIN) mogą być kosztowne i trudne do optymalizacji.
W bazie grafowej zapytania dotyczące skomplikowanych zależności (np. ścieżek między węzłami) są szybkie, ponieważ struktura grafu pozwala na bezpośredni dostęp do sąsiadujących węzłów.
Model danych:
Baza relacyjna jest bardziej odpowiednia dla danych o dobrze zdefiniowanej strukturze i hierarchii.
Baza grafowa jest bardziej odpowiednia dla danych, które mają skomplikowane, zmienne i dynamiczne powiązania.
Zalety baz grafowych:
Efektywność w przypadku skomplikowanych relacji: Bazy grafowe są wydajne w przypadku operacji na złożonych relacjach, takich jak analiza sieci społecznych, analiza powiązań między osobami, produktami czy połączeniami transportowymi.
Elastyczność w modelowaniu danych: Bazy grafowe umożliwiają łatwe modelowanie zmiennych relacji między obiektami, które mogą zmieniać się w czasie.
Optymalizacja zapytań: Zapytania, które w bazach relacyjnych wymagają wielu JOINów, w bazach grafowych mogą być bardziej wydajne i prostsze do wykonania, dzięki natywnej reprezentacji grafu.
Naturalna reprezentacja sieci: Sieci, hierarchie i inne struktury powiązań są naturalnie reprezentowane w grafach, co sprawia, że bazy grafowe są doskonałym wyborem do takich zastosowań jak systemy rekomendacji, analiza zależności, geolokalizacja.
Wady baz grafowych:
Skalowalność: Chociaż bazy grafowe są efektywne w przypadku małych i średnich zbiorów danych, mogą napotkać trudności przy skalowaniu do bardzo dużych zbiorów danych, zwłaszcza w przypadku bardziej złożonych grafów o wielu węzłach i krawędziach.
Brak standaryzacji: W porównaniu do baz relacyjnych, bazy grafowe nie mają tak powszechnego i ujednoliconego standardu zapytań. Istnieje wiele różnych systemów baz grafowych, z różnymi językami zapytań (np. Cypher w Neo4j), co może utrudniać migrację i integrację.
Złożoność zarządzania: Bazy grafowe mogą być trudniejsze do zarządzania i optymalizacji w porównaniu do baz relacyjnych, zwłaszcza gdy grafy stają się bardzo duże i złożone.
Mniejsza kompatybilność z tradycyjnymi narzędziami: Istnieje mniejsza liczba narzędzi i bibliotek wspierających bazy grafowe w porównaniu do baz relacyjnych, co może utrudniać integrację z istniejącymi systemami.
Wymień poziomy izolacji transakcji
** READ UNCOMMITTED **– możliwy brudny odczyt, odczyt nie dający się powtórzyć i odczyt widmo. Problemem tutaj jest to, że chcesz wykonać jedną transakcje na jakiś danych, ale te dane w między czasie zostały już uprzednio zmodyfikowane przez inną.
READ COMMITTED – niemożliwy brudny odczyt, możliwy odczyt niedający się powtórzyć i odczyt widmo. W tym przypadku nie możesz modyfikować danych, na których założona jest już inna transakcja. Jednak wciąż możliwy jest ich odczyt, gdy są one zmieniane przez drugą transakcje, co może prowadzić do braku spójności.
REPEATABLE READ – niemożliwy brudny odczyt i odczyt niedający się powtórzyć, możliwy odczyt widmo. Domyślny poziom dla większości baz danych. Jest on bardzo podobny do poprzedniej opcji, z tą różnicą, że transakcja odczytuje dane sprzed jej rozpoczęcia, co ułatwia zachowanie spójności.
SERIALIZABLE – żaden z niepożądanych odczytów nie jest możliwy. W praktyce oznacza to zablokowanie dostępu do całej tabeli. Niemożliwa jest modyfikacja i odczyt aż do momentu zakończenia transakcji.
Indeksy klastrowane (grupowane) a nieklastrowane (niegrupowane). Jak stworzyć indeks klastrowany? Kiedy zdecydujesz sie na zastosowanie indeksu grupowanego zamiast niegrupowanego.
**indeksy grupowane **(klastrowe) - Indeks klastrowany przypomina w działaniu encyklopedię lub książkę telefoniczną. Dane są fizycznie sortowane według indeksowanej kolumny i wchodzą w skład samego indeksu. To tak jak w encyklopedii - hasła są ułożone według alfabetu. Dostęp do danych następuje poprzez odnalezienie hasła na liście słów kluczowych (poziomy indeksu powyżej poziomu liści, na którym znajdują się posortowane rekordy) i zlokalizowanie strony / stron, na których znajdują się rekordy spełniające kryteria wyszukiwania. Ponieważ indeks klastrowany sortuje fizycznie dane w tabeli, na której jest założony, można założyć tylko jeden taki indeks w tabeli. Zazwyczaj indeks klastrowany powstaje automatycznie przy tworzeniu klucza głównego w tabeli.
CREATE CLUSTERED INDEX IDX_Pracownicy_Id
ON Pracownicy(Id);
**indeksy niegrupowane (nieklastrowe) **- Indeks nieklastrowany nie zawiera w swojej strukturze całych rekordów, a jedynie wszystkie wartości z kolumny indeksowanej. Na poziomie liści znajdują się wszystkie wartości z kolumny indeksowanej posortowane alfabetycznie. Na poziomach znajdujących się wyżej znajdują się pierwsze pozycje ze stron o jeden poziom niżej. Poziom liści oprócz wartości z kolumny indeksowanej zawiera odsyłacze bezpośrednio do rekordów w nieposortowanej strukturze tabeli.
Na czym polega partycjonowanie, jakie są rodzaje partycjonowania. Jak włączyć w MS SQL.
Partycjonowanie w bazach danych polega na podzieleniu dużych tabel lub indeksów na mniejsze, łatwiejsze do zarządzania części, zwane partycjami. Dzięki temu procesy zapytań, modyfikacji i zarządzania danymi są bardziej wydajne.
Rodzaje partycjonowania:
**Partycjonowanie zakresowe **(Range Partitioning):
Polega na podzieleniu danych na partycje według wartości z określonej kolumny, najczęściej daty lub liczby. Na przykład, dane mogą być podzielone na partycje według lat, miesięcy, kwartałów itp.
Przykład: tabela sprzedaży, gdzie każda partycja odpowiada danym z jednego roku.
Partycjonowanie listowe (List Partitioning):
Dane są podzielone na partycje na podstawie konkretnych wartości w jednej kolumnie, takich jak kody krajów, regiony, grupy produktów itp.
Przykład: tabela z danymi o zamówieniach, gdzie każda partycja zawiera dane dla różnych krajów.
**Partycjonowanie hashujące **(Hash Partitioning):
Partycjonowanie odbywa się na podstawie funkcji haszującej, która przypisuje dane do partycji na podstawie wartości kolumny.
Przykład: tabela użytkowników, gdzie partycje są tworzone na podstawie haszowanej wartości identyfikatora użytkownika.
**Partycjonowanie kompozytowe **(Composite Partitioning):
Jest to połączenie dwóch lub więcej rodzajów partycjonowania, np. partycjonowanie zakresowe i listowe. Tego rodzaju partycjonowanie daje elastyczność w zarządzaniu danymi.
UZYCIE:
1. Tworzenie funkcji partycjonowania
CREATE PARTITION FUNCTION pf_SalesDate (DATE)
AS RANGE RIGHT FOR VALUES (‘2020-01-01’, ‘2021-01-01’, ‘2022-01-01’);
2.stworzenie schematu partycjonowania
CREATE PARTITION SCHEME ps_SalesDate
AS PARTITION pf_SalesDate
TO ([PRIMARY], [FileGroup1], [FileGroup2], [FileGroup3]);
3. CREATE TABLE Sales
(
SalesID INT PRIMARY KEY,
SalesDate DATE,
Amount DECIMAL(10, 2)
)
ON ps_SalesDate(SalesDate);
Na czym polega pojęcie spójności w bazie danych. Jakie konstrukcje języka SQL są w tym pomocne. Daj po jednym przykładzie.
Spójność w bazie danych oznacza, że dane w bazie muszą być zawsze zgodne z określonymi regułami i zależnościami, zarówno na poziomie strukturalnym (np. typy danych, relacje między tabelami), jak i na poziomie logicznym (np. integralność danych).
Omówić zwięźle jedną ze struktur danych w grafowych bazach danych.
-
Węzłów – zwykle przechowujemy w nich informacje o
encjach. -
Relacje – łączą ze sobą węzły, tworząc strukturę grafu.
Zawsze mają swój typ, kierunek, a także węzeł
początkowy i końcowy. Mogą tworzyć pętle wtedy, gdy
węzeł początkowy jest węzłem końcowym. Trzeba
podkreślić zasadniczą różnicę, pomiędzy pojęciem
relacji w modelach relacyjnym i grafowym. W modelu
relacyjnym, relacja to dwuwymiarowa tabela, która
operuje na prostych typach danych, gdzie każda relacja
składa się z atrybutów (kolumn) i krotek (wierszy). W
modelu grafowym, relacja to swego rodzaju sposób
powiązania encji ze światem. Tak jak w grafie, krawędź
to uporządkowana para wierzchołków, tak w modelu
grafowym, relacja może zachodzić tylko pomiędzy
encjami. Relacja musi łączyć parę encji, czyli nigdy nie
może być „dyndająca”. -
Własności – zarówno węzły, jak i relacje są
kontenerami na własności, które właściwie są parami
klucz-wartość. Węzły mogą posiadać jedną lub więcej
własności, podobnie do tabel w modelu relacyjnym,
które mogą mieć jeden lub więcej atrybutów. Relacje
także mogą posiadać własności, które określają moc,
wagę lub jakość danej relacji. Dzięki ich obecności,
możliwe jest dokładniejsze określenie szukanych
wzorców, podczas zadawania pytań i trawersowania
grafu. -
Etykiet, które są nadawane węzłom i stosowane do
indeksowania. Etykiety zostały zaprojektowane po to,
by umożliwić szybkie i efektywne tworzenie podgrafów.
Sql injection
SQL Injection to atak na bazę danych przy użyciu nieprawidłowo napisanej aplikacji, która nie
sprawdza (lub sprawdza niedostatecznie dobrze) dane wprowadzane w aplikacji przez użytkownika.
Atakujący stosuje kod SQL, który wykona w bazie niedozwoloną akcję. Atakujący może uzyskać
nieuprawniony dostęp do zasobów bazy danych lub nawet systemowych.
Sposoby ochrony:
● Używanie konta o minimalnych uprawnieniach
● Kontrolowanie danych wprowadzanych przez użytkowników i odrzucanie tych
nieprawidłowych oraz usuwanie znaków pochodzących z SQL
● Brak domyślnych komunikatów o błędach
● Używanie procedur składowanych z parametrami
● Unikanie konkatencji
Co to są widoki?
Widoki (ang. Views) w SQL Server to logiczne, wirtualne tabele, które reprezentują wynik zapytania SQL. Nie przechowują one danych fizycznie, lecz umożliwiają dostęp do danych z jednej lub wielu tabel w sposób zdefiniowany w zapytaniu.
Widoki mogą być używane do:
1. Upraszczania złożonych zapytań, dzięki ich zapisaniu jako widok.
2. Ukrywania szczegółów struktury bazy danych, umożliwiając użytkownikom dostęp do uproszczonego modelu.
3. Zapewnienia dodatkowego poziomu bezpieczeństwa poprzez ograniczenie dostępu do określonych kolumn lub wierszy.
4. Zwiększenia czytelności i łatwości zarządzania kodem SQL.
CREATE VIEW nazwa_widoku AS
SELECT kolumna1, kolumna2, …
FROM tabela
WHERE warunki;
Indeks gęsty i rzadki
Indeks gęsty to taki, który posiada wpis dla każdej wartości
klucza wyszukiwania.
Indeks gęsty to standardowy indeks, który tworzy wpis dla każdej wartości w kolumnie. Aby stworzyć indeks gęsty w SQL Server, wystarczy użyć standardowej składni CREATE INDEX.
CREATE INDEX IND_Customers_Id
ON Customers(Id);
Indeks rzadki posiada wpisy tylko dla niektórych wartości.
Indeks rzadki jest związany z tabelami, w których nie wszystkie kolumny zawierają wartości dla każdego rekordu. W SQL Server indeksy rzadkie odnoszą się raczej do kolumn w tabeli niż samych indeksów. Kolumny rzadkie mogą zawierać dużo wartości NULL, i SQL Server może zoptymalizować sposób przechowywania takich danych.
CREATE INDEX IND_Shipments_ShippingCost
ON Shipments(ShippingCost)
WHERE ShippingCost IS NOT NULL;
indeks kolumnowy
Indeks kolumnowy w bazach danych to struktura danych, która przechowuje dane w postaci kolumn zamiast wierszy, jak ma to miejsce w tradycyjnych indeksach wierszowych. W indeksie kolumnowym każda kolumna tabeli jest przechowywana oddzielnie, co pozwala na bardziej efektywne skanowanie i przetwarzanie zapytań, które dotyczą tylko kilku kolumn, zamiast całych wierszy.
Korzyści z indeksu kolumnowego:
Szybsze zapytania: Dla zapytań, które odwołują się do niewielkiej liczby kolumn (zwłaszcza w przypadku dużych tabel), indeksy kolumnowe mogą przyspieszyć czas dostępu do danych, ponieważ wczytywana jest tylko część danych.
Lepsza kompresja: Dane w indeksach kolumnowych są bardziej jednorodne, co pozwala na lepszą kompresję, zmniejszając ilość potrzebnego miejsca na dysku.
Optymalizacja zapytań agregujących: Indeksy kolumnowe są szczególnie przydatne w operacjach agregujących, takich jak SUM, AVG, COUNT, ponieważ łatwiej jest przetwarzać dane w kolumnach niż w wierszach.
Indeksy kolumnowe są wykorzystywa
CREATE COLUMNSTORE INDEX IND_OrderProducts
ON OrderProducts (Id,OrderId, ProductId, Sales, Quantity,Discount, Profit);
Widok zmaterializowany
Widok zmaterializowany (ang. materialized view) w SQL Server to rodzaj widoku, który przechowuje fizycznie dane wynikowe zapytania, co oznacza, że nie jest obliczany na bieżąco przy każdym wywołaniu, jak tradycyjny widok. Zamiast tego dane są przechowywane w bazie danych, a użytkownicy mogą je odczytywać, co przyspiesza czas odpowiedzi dla zapytań o dużych zestawach danych. Widok zmaterializowany wymaga ręcznej aktualizacji, aby odzwierciedlał zmiany w bazie danych.
CREATE VIEW dbo.MojWidok AS
SELECT
Kolumna1,
Kolumna2,
SUM(Kolumna3) AS SumaKolumna3
FROM
MojaTabela
GROUP BY
Kolumna1, Kolumna2;
GO
– Dodanie indeksu zmaterializowanego
CREATE UNIQUE CLUSTERED INDEX IDX_MojWidok ON dbo.MojWidok (Kolumna1, Kolumna2);
GO
Kompresja
W SQL Server kompresja danych może pomóc w zmniejszeniu rozmiaru bazy danych i poprawie wydajności operacji I/O
ALTER TABLE MyTable
REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = ROW/PAGE);
Zadanie dotyczy problemu aktualizacji perspektywy. Zakładamy, że perspektywa MoiPracownicy zwraca dane zawierające nazwisko pracownika oraz nazwisko jego szefa na podstawie rzeczywistej struktury danych. Należy ocenić, czy problem aktualizacji danych został rozwiązany, i uzasadnić odpowiedź.
Problem aktualizacji nie został rozwiązany. Widok MoiPracownicy jedynie prezentuje dane, ale nie ma wbudowanego mechanizmu do propagowania zmian do rzeczywistych tabel (Dzial i Pracownik). Aby rozwiązać problem, konieczne byłoby użycie triggerów lub odpowiedniej logiki aplikacji obsługującej aktualizacje widoku.