Podstawowy kurs z systemów baz danych / Jeffrey D. Ullman
Transkrypt
Podstawowy kurs z systemów baz danych / Jeffrey D. Ullman
Podstawowy kurs z systemów baz danych / Jeffrey D. Ullman, Jennifer Widom. - wyd. 3. - Gliwice, cop. 2011 Spis treści Przedmowa 15 Co nowego w trzecim wydaniu? Korzystanie z tej ksiąŜki Wymagania wstępne Ćwiczenia Ćwiczenia online z wykorzystaniem technologii Gradiance Materiały w internecie Odwzorowanie drugiego wydania na trzecie Podziękowania 16 16 17 17 17 18 18 18 1. Środowisko systemów baz danych 1.1. Ewolucja systemów baz danych 1.1.1. Pierwsze systemy zarządzania bazami danych 1.1.2. Relacyjne bazy danych 1.1.3. Coraz mniejsze systemy 1.1.4. Coraz większe systemy 1.1.5. Integracja informacji 1.2. System zarządzania bazą danych w zarysie 1.2.1. Polecenia języka definiowania danych 1.2.2. Ogólny opis przetwarzania zapytań 1.2.3. Zarządzanie pamięcią masową i buforami 1.2.4. Przetwarzanie transakcji 1.2.5. Procesor zapytań 1.3. Plan opisu systemów baz danych 1.4. Literatura do rozdziału 1. 21 21 22 23 23 23 24 24 25 26 27 27 28 29 30 I: Modelowanie relacyjnych baz danych 33 2. Relacyjny model danych 2.1. Przegląd informacji o modelach danych 2.1.1. Co to jest model danych? 2.1.2. WaŜniejsze modele danych 2.1.3. Model relacyjny w zarysie 2.1.4. Model semistrukturalny w zarysie 2.1.5. Inne modele danych 2.1.6. Porównanie sposobów modelowania danych 2.2. Podstawowe informacje na temat modeli relacyjnych 2.2.1. Atrybuty 2.2.2. Schematy 2.2.3. Krotki 2.2.4. Dziedziny 2.2.5. RównowaŜne odpowiedniki relacji 2.2.6. Egzemplarze relacji 2.2.7. Klucze relacji 2.2.8. Przykład schematu bazy danych 35 35 35 36 36 37 38 38 39 39 40 40 40 41 41 42 44 2.2.9. Ćwiczenia do podrozdziału 2.2 2.3. Definiowanie schematu relacyjnego w SQL 2.3.1. Relacje w języku SQL 2.3.2. Typy danych 2.3.3. Proste deklaracje tabel 2.3.4. Modyfikowanie schematów relacji 2.3.5. Wartości domyślne 2.3.6. Deklarowanie kluczy 2.3.7. Ćwiczenia do podrozdziału 2.3 2.4. Algebraiczny język zapytań 2.4.1. Do czego jest potrzebny specjalny język zapytań? 2.4.2. Czym jest algebra? 2.4.3. Ogólne informacje o algebrze relacji 2.4.4. Działania na zbiorach wykonywane w odniesieniu do relacji 2.4.5. Rzutowanie 2.4.6. Selekcja 2.4.7. Iloczyn kartezjański 2.4.8. Złączenia naturalne 2.4.9. Złączenia teta 2.4.10. Łączenie operacji w celu tworzenia zapytań 2.4.11. Nadawanie nazw i przemianowywanie 2.4.12. Związki pomiędzy działaniami 2.4.13. Liniowa notacja dla wyraŜeń algebraicznych 2.4.14. Ćwiczenia do podrozdziału 2.4 2.5. Ograniczenia dotyczące relacji 2.5.1. Algebra relacji jako język definiowania ograniczeń 2.5.2. Ograniczenia integralności odwołań 2.5.3. Ograniczenia kluczowe 2.5.4. Dodatkowe przykłady ograniczeń 2.5.5. Ćwiczenia do podrozdziału 2.5 2.6. Podsumowanie rozdziału 2. 2.7. Literatura do rozdziału 2. 45 46 46 47 48 49 50 50 52 53 54 54 54 55 56 57 58 59 61 62 64 64 65 66 72 73 73 74 75 76 77 78 3. Teoria projektowania relacyjnych baz danych 3.1. ZaleŜności funkcyjne 3.1.1. Definicja zaleŜności funkcyjnej 3.1.2. Klucze relacji 3.1.3. Nadklucze 3.1.4. Ćwiczenia do podrozdziału 3.1 3.2. Reguły dotyczące zaleŜności funkcyjnych 3.2.1. Wnioskowanie na temat zaleŜności funkcyjnych 3.2.2. Reguła podziału i łączenia 3.2.3. Trywialne zaleŜności funkcyjne 3.2.4. Obliczanie domknięcia zbioru atrybutów 3.2.5. Dlaczego algorytm domknięć działa? 3.2.6. Reguła przechodniości 3.2.7. Domykanie zbiorów zaleŜności funkcyjnych 3.2.8. Projekcja zaleŜności funkcyjnych 3.2.9. Ćwiczenia do podrozdziału 3.2 3.3. Projektowanie schematów relacyjnych baz danych 3.3.1. Anomalie 79 79 80 81 83 83 84 84 85 86 86 89 90 91 92 94 96 97 3.3.2. Dekompozycja relacji 3.3.3. Postać normalna Boyce'a-Codda 3.3.4. Dekompozycja do postaci BCNF 3.3.5. Ćwiczenia do podrozdziału 3.3 3.4. Dekompozycja - dobre, złe i brzydkie cechy 3.4.1. Odtwarzanie informacji po dekompozycji 3.4.2. Test pościgu dla złączeń bezstratnych 3.4.3. Dlaczego algorytm pościgu działa? 3.4.4. Zachowanie zaleŜności 3.4.5. Ćwiczenia do podrozdziału 3.4 3.5. Trzecia postać normalna 3.5.1. Definicja trzeciej postaci normalnej 3.5.2. Algorytm syntezy dla schematów 3NF 3.5.3. Dlaczego algorytm syntezy 3NF działa? 3.5.4. Ćwiczenia do podrozdziału 3.5 3.6. ZaleŜności wielowartościowe 3.6.1. NiezaleŜność atrybutów a redundancja 3.6.2. Definicja zaleŜności wielowartościowych 3.6.3. Wnioskowanie na temat zaleŜności wielowartościowych 3.6.4. Czwarta postać normalna 3.6.5. Dekompozycja do czwartej postaci normalnej 3.6.6. Związki pomiędzy postaciami normalnymi 3.6.7. Ćwiczenia do podrozdziału 3.6 3.7. Algorytm wykrywania zaleŜności wielowartościowych 3.7.1. Algorytm domknięć a algorytm pościgu 3.7.2. Rozszerzenie algorytmu pościgu o zaleŜności wielowartościowe 3.7.3. Dlaczego algorytm pościgu dla zaleŜności wielowartościowych działa? 3.7.4. Rzutowanie zaleŜności wielowartościowych 3.7.5. Ćwiczenia do podrozdziału 3.7 3.8. Podsumowanie rozdziału 3. 3.9. Literatura do rozdziału 3. 97 98 100 103 103 104 106 109 110 111 112 112 113 114 114 115 115 116 117 120 120 122 122 124 124 125 128 128 129 130 131 4. Wysokopoziomowe modele baz danych 4.1. Model związków encji 4.1.1. Zbiory encji 4.1.2. Atrybuty 4.1.3. Związki 4.1.4. Diagramy E/R 4.1.5. Egzemplarze diagramu E/R 4.1.6. Liczebność binarnych związków E/R 4.1.7. Związki wieloargumentowe 4.1.8. Role w związkach 4.1.9. Atrybuty w związkach 4.1.10. Konwersja związków wieloargumentowych na binarne 4.1.11. Podklasy w modelu E/R 4.1.12. Ćwiczenia do podrozdziału 4.1 4.2. Zasady projektowania 4.2.1. Wierność 4.2.2. Unikanie redundancji 4.2.3. Prostota 4.2.4. Dobór właściwych związków 133 134 134 134 135 135 136 137 138 139 140 142 143 145 146 147 147 148 148 4.2.5. Dobór właściwych typów elementów 4.2.6. Ćwiczenia do podrozdziału 4.2 4.3. Ograniczenia w modelu związków encji 4.3.1. Klucze w modelu związków encji 4.3.2. Reprezentowanie kluczy w modelu E/R 4.3.3. Integralność odwołań 4.3.4. Stopnie powiązania 4.3.5. Ćwiczenia do podrozdziału 4.3 4.4. Słabe zbiory encji 4.4.1. Sens istnienia słabych zbiorów encji 4.4.2. Wymagania dla słabych zbiorów encji 4.4.3. Notacja dla słabych zbiorów encji 4.4.4. Ćwiczenia do podrozdziału 4.4 4.5 Od diagramów E/R do projektu relacyjnej bazy danych 4.5.1. Od zbiorów encji do relacji 4.5.2. Od związków E/R do relacji 4.5.3. Łączenie relacji 4.5.4. Postępowanie ze słabymi zbiorami encji 4.5.5. Ćwiczenia do podrozdziału 4.5 4.6. Konwersja struktur podklas na relacje 4.6.1. Konwersja na podstawie diagramu E/R 4.6.2. Podejście obiektowe 4.6.3. Wykorzystanie wartości null do łączenia relacji 4.6.4. Porównanie podejść 4.6.5. Ćwiczenia do podrozdziału 4.6 4.7. Język UML 4.7.1. Klasy UML 4.7.2. Klucze klas UML 4.7.3. Asocjacje 4.7.4. Samoasocjacje 4.7.5. Klasy asocjacji 4.7.6. Podklasy w języku UML 4.7.7. Agregacje i kompozycje 4.7.8. Ćwiczenia do podrozdziału 4.7 4.8. Od diagramów UML do relacji 4.8.1. Podstawowe zasady przekształcania diagramów UML na relacje 4.8.2. Konwersja podklas UML na relacje 4.8.3. Konwersja agregacji i kompozycji na relacje 4.8.4. Analogia do słabych zbiorów encji w notacji UML 4.8.5. Ćwiczenia do podrozdziału 4.8 4.9. Język ODL 4.9.1. Deklaracje klas 4.9.2. Atrybuty w języku ODL 4.9.3. Związki w języku ODL 4.9.4. Związki odwrotne 4.9.5. Liczebność związków 4.9.6. Typy w języku ODL 4.9.7. Podklasy w języku ODL 4.9.8. Deklaracje kluczy w języku ODL 4.9.9. Ćwiczenia do podrozdziału 4.9 4.10. Od projektów w języku ODL do projektów relacyjnych baz danych 150 151 154 154 154 155 156 156 157 157 159 160 160 161 161 162 164 165 167 169 169 170 171 172 173 174 175 175 175 177 178 178 180 181 181 181 182 183 183 184 185 185 185 187 187 188 189 191 191 193 193 4.10.1. 4.10.2. 4.10.3. 4.10.4. 4.10.5. 4.10.6. 4.11. 4.12. Konwersja klas ODL na relacje ZłoŜone atrybuty w klasach Reprezentowanie atrybutów o wartościach typu zbiór Reprezentowanie innych konstruktorów typów Reprezentowanie związków ODL Ćwiczenia do podrozdziału 4.10 Podsumowanie rozdziału 4. Literatura do rozdziału 4. 194 195 195 197 198 198 199 201 II: Programowanie relacyjnych baz danych 203 5. Algebraiczne i logiczne języki zapytań 5.1. Działania relacyjne na wielozbiorach 5.1.1. Dlaczego wielozbiory? 5.1.2. Suma, część wspólna i róŜnica wielozbiorów 5.1.3. Rzutowanie wielozbiorów 5.1.4. Selekcja na wielozbiorach 5.1.5. Iloczyn wielozbiorów 5.1.6. Złączenia wielozbiorów 5.1.7. Ćwiczenia do podrozdziału 5.1 5.2. Rozszerzony zbiór operatorów algebry relacji 5.2.1. Eliminowanie duplikatów 5.2.2. Operatory agregacji 5.2.3. Grupowanie 5.2.4. Operator grupowania 5.2.5. Rozszerzenie operatora rzutowania 5.2.6. Operator sortowania 5.2.7. Złączenia zewnętrzne 5.2.8. Ćwiczenia do podrozdziału 5.2 5.3. Logika relacji 5.3.1. Predykaty i atomy 5.3.2. Atomy arytmetyczne 5.3.3. Reguły i zapytania w Datalogu 5.3.4. Znaczenie reguł Datalogu 5.3.5. Predykaty ekstensjonalne i intensjonalne 5.3.6. Reguły Datalogu stosowane do wielozbiorów 5.3.7. Ćwiczenia do podrozdziału 5.3 5.4. Algebra relacji a Datalog 5.4.1. Działania logiczne 5.4.2. Rzutowanie 5.4.3. Selekcja 5.4.4. Iloczyn 5.4.5. Złączenia 5.4.6. Symulacja wielu operacji w Datalogu 5.4.7. Porównanie Datalogu z algebrą relacji 5.4.8. Ćwiczenia do podrozdziału 5.4 5.5. Podsumowanie rozdziału 5. 5.6. Bibliografia do rozdziału 5. 205 205 206 207 208 209 209 210 211 212 213 213 214 215 216 218 218 220 221 221 222 222 223 225 226 227 228 228 229 230 232 232 233 235 235 236 237 6. Język baz danych SQL 6.1. Proste zapytania w SQL 239 240 6.1.1. 6.1.2. 6.1.3. 6.1.4. 6.1.5. 6.1.6. 6.1.7. 6.1.8. 6.1.9. 6.2. 6.2.1. 6.2.2. 6.2.3. 6.2.4. 6.2.5. 6.2.6. 6.3. 6.3.1. 6.3.2. 6.3.3. 6.3.4. 6.3.5. 6.3.6. 6.3.7. 6.3.8. 6.3.9. 6.4. 6.4.1. 6.4.2. 6.4.3. 6.4.4. 6.4.5. 6.4.6. 6.4.7. 6.4.8. 6.5. 6.5.1. 6.5.2. 6.5.3. 6.5.4. 6.6. 6.6.1. 6.6.2. 6.6.3. 6.6.4. 6.6.5. 6.6.6. 6.6.7. 6.7. 6.8. Rzutowanie w języku SQL Selekcja w języku SQL Porównywanie ciągów znaków Dopasowywanie wzorców w SQL Daty i godziny Wartości null i porównania z wykorzystaniem wartości NULL Wartość logiczna UNKNOWN Porządkowanie wyniku Ćwiczenia do podrozdziału 6.1 Zapytania do więcej niŜ jednej relacji Iloczyny i złączenia w SQL Eliminowanie niejednoznaczności atrybutów Zmienne krotek Interpretowanie zapytań do wielu relacji Suma, część wspólna i róŜnica zapytań Ćwiczenia do podrozdziału 6.2 Podzapytania Podzapytania, które generują wynik w postaci wartości skalarnej Warunki dotyczące relacji Warunki dotyczące krotek Podzapytania skorelowane Podzapytania w klauzulach FROM WyraŜenia złączeń w SQL Złączenia naturalne Złączenia zewnętrzne Ćwiczenia do podrozdziału 6.3 Działania na całych relacjach Eliminowanie duplikatów Duplikaty w sumach, częściach wspólnych i róŜnicach relacji Grupowanie i funkcje agregacji w języku SQL Operatory agregacji Grupowanie Grupowanie, agregacje a wartości NULL Klauzule HAVING Ćwiczenia do podrozdziału 6.4 Modyfikacje baz danych Wstawianie krotek Usuwanie Aktualizacje Ćwiczenia do podrozdziału 6.5 Transakcje w języku SQL Szeregowalność Niepodzielność Transakcje Transakcje tylko do odczytu Brudne odczyty Inne poziomy izolacji Ćwiczenia do podrozdziału 6.6 Podsumowanie rozdziału 6. Bibliografia do rozdziału 6. 242 244 245 246 246 248 249 250 251 253 253 255 255 257 259 261 262 263 264 265 266 267 268 269 270 272 274 274 275 276 276 277 279 280 281 282 282 284 285 286 287 287 289 290 291 292 295 296 297 298 7. Więzy i wyzwalacze 7.1. Klucze główne i obce 7.1.1. Deklarowanie więzów kluczy obcych 7.1.2. Utrzymywanie integralności odwołań 7.1.3. Odroczone sprawdzanie więzów 7.1.4. Ćwiczenia do podrozdziału 7.1 7.2. Więzy na poziomie atrybutów i krotek 7.2.1. Więzy NOT NULL 7.2.2. Więzy CHECK na poziomie atrybutów 7.2.3. Więzy CHECK na poziomie krotek 7.2.4. Porównanie więzów CHECK na poziomie krotek z więzami CHECK na poziomie atrybutów 7.2.5. Ćwiczenia do podrozdziału 7.2 7.3. Modyfikacje więzów 7.3.1. Nadawanie nazw więzom 7.3.2. Modyfikowanie więzów na poziomie tabel 7.3.3. Ćwiczenia do podrozdziału 7.3 7.4. Asercje 7.4.1. Tworzenie asercji 7.4.2. Wykorzystywanie asercji 7.4.3. Ćwiczenia do podrozdziału 7.4 7.5. Wyzwalacze 7.5.1. Wyzwalacze w języku SQL 7.5.2. Opcje projektowania wyzwalacza 7.5.3. Ćwiczenia do podrozdziału 7.5 7.6. Podsumowanie rozdziału 7. 7.7. Bibliografia do rozdziału 7. 301 301 302 303 305 307 308 309 309 311 8. Perspektywy i indeksy 8.1. Perspektywy wirtualne 8.1.1. Deklarowanie perspektyw 8.1.2. Zapytania do perspektyw 8.1.3. Przemianowania atrybutów 8.1.4. Ćwiczenia do podrozdziału 8.1 8.2. Modyfikowanie perspektyw 8.2.1. Usuwanie perspektyw 8.2.2. Perspektywy modyfikowalne 8.2.3. Wyzwalacze instead-of dla perspektyw 8.2.4. Ćwiczenia do podrozdziału 8.2 8.3. Indeksy w języku SQL 8.3.1. Motywacja istnienia indeksów 8.3.2. Deklarowanie indeksów 8.3.3. Ćwiczenia do podrozdziału 8.3 8.4. Dobór indeksów 8.4.1. Prosty model kosztów 8.4.2. Przykłady przydatnych indeksów 8.4.3. Wyznaczanie najlepszych moŜliwych indeksów 8.4.4. Automatyczny wybór indeksów do utworzenia 8.4.5. Ćwiczenia do podrozdziału 8.4 8.5. Perspektywy zmaterializowane 8.5.1. Utrzymywanie perspektyw zmaterializowanych 329 329 329 331 331 332 332 333 333 335 336 337 338 338 339 340 340 340 342 345 346 346 347 312 313 314 314 315 316 317 317 317 319 320 320 322 324 326 327 8.5.2. Okresowa obsługa perspektyw zmaterializowanych 349 8.5.3. Przepisywanie zapytań w celu korzystania z perspektyw zmaterializowanych 8.5.4. Automatyczne tworzenie perspektyw zmaterializowanych 8.5.5. Ćwiczenia do podrozdziału 8.5 8.6. Podsumowanie rozdziału 8. 8.7. Bibliografia do rozdziału 8. 349 351 352 353 354 9. SQL w środowisku serwerowym 9.1. Architektura trójwarstwowa 9.1.1. Warstwa serwera WWW 9.1.2. Warstwa aplikacji 9.1.3. Warstwa bazy danych 9.2. Środowisko języka SQL 9.2.1. Środowiska 9.2.2. Schematy 9.2.3. Katalogi 9.2.4. Klienty i serwery w środowisku SQL 9.2.5. Połączenia 9.2.6. Sesje 9.2.7. Moduły 9.3. Interfejs SQL - język-gospodarz 9.3.1. Problem niezgodności impedancji 9.3.2. Połączenie języka SQL z językiem-gospodarzem 9.3.3. Sekcja deklaracji 9.3.4. UŜywanie zmiennych współdzielonych 9.3.5. Jednowierszowe instrukcje SELECT 9.3.6. Kursory 9.3.7. Modyfikacje z wykorzystaniem kursorów 9.3.8. Zabezpieczenie przed równoległym wprowadzaniem aktualizacji 9.3.9. Dynamiczny SQL 9.3.10. Ćwiczenia do podrozdziału 9.3 9.4. Procedury składowane 9.4.1. Tworzenie funkcji i procedur PSM 9.4.2. Proste rodzaje instrukcji w PSM 9.4.3. Instrukcje warunkowe 9.4.4. Zapytania w modułach PSM 9.4.5. Pętle w modułach PSM 9.4.6. Pętle for 9.4.7. Wyjątki w modułach PSM 9.4.8. Posługiwanie się funkcjami i procedurami PSM 9.4.9. Ćwiczenia do podrozdziału 9.4 9.5. Wykorzystanie interfejsu poziomu wywołania 9.5.1. Wprowadzenie do interfejsu SQL/CLI 9.5.2. Przetwarzanie instrukcji 9.5.3. Pobieranie danych z wyniku zapytania 9.5.4. Przekazywanie parametrów do zapytań 9.5.5. Ćwiczenia do podrozdziału 9.5 9.6. JDBC 9.6.1. Wprowadzenie do JDBC 355 356 357 357 358 358 358 360 361 361 362 362 363 364 365 365 366 367 368 368 370 372 372 374 375 375 376 377 379 380 381 383 385 385 387 387 389 390 392 393 393 393 9.6.2. 9.6.3. 9.6.4. 9.6.5. 9.7. 9.7.1. 9.7.2. 9.7.3. 9.7.4. 9.7.5. 9.7.6. 9.7.7. 9.7.8. 9.8. 9.9. Tworzenie instrukcji w JDBC Operacje na kursorach w JDBC Przekazywanie parametrów Ćwiczenia do podrozdziału 9.6 PHP Podstawy PHP Tablice Biblioteka PEAR DB Tworzenie połączenia z bazą danych za pomocą biblioteki DB Uruchamianie instrukcji SQL Operacje na kursorach w PHP Dynamiczny SQL w języku PHP Ćwiczenia do podrozdziału 9.7 Podsumowanie rozdziału 9. Bibliografia do rozdziału 9. 394 396 397 397 398 398 399 399 400 400 401 402 402 403 404 10. Zaawansowane zagadnienia dotyczące relacyjnych baz danych 10.1. Bezpieczeństwo i autoryzacja uŜytkowników w SQL 10.1.1. Uprawnienia 10.1.2. Definiowanie uprawnień 10.1.3. Proces sprawdzania uprawnień 10.1.4. Nadawanie uprawnień 10.1.5. Diagramy uprawnień 10.1.6. Odbieranie uprawnień 10.1.7. Ćwiczenia do podrozdziału 10.1 10.2. Rekurencja w języku SQL 10.2.1. Definiowanie relacji rekurencyjnych w języku SQL 10.2.2. WyraŜenia stwarzające problemy w rekurencyjnym SQL 10.2.3. Ćwiczenia do podrozdziału 10.2 10.3. Model obiektowo-relacyjny 10.3.1. Od relacji do obiektorelacji 10.3.2. Relacje zagnieŜdŜone 10.3.3. Referencje 10.3.4. Model obiektowy a obiektowo-relacyjny 10.3.5. Ćwiczenia do podrozdziału 10.3 10.4. Typy definiowane przez uŜytkowników w języku SQL 10.4.1. Definiowanie typów w języku SQL 10.4.2. Deklaracje metod w UDT 10.4.3. Definicje metod 10.4.4. Deklarowanie relacji z wykorzystaniem typów UDT 10.4.5. Referencje 10.4.6. Tworzenie identyfikatorów obiektów dla tabel 10.4.7. Ćwiczenia do podrozdziału 10.4 10.5. Działania na danych obiektowo-relacyjnych 10.5.1. Śledzenie referencji 10.5.2. Dostęp do składowych krotek wykorzystujących typy UDT 10.5.3. Funkcje generatora i uratora 10.5.4. Sortowanie relacji bazujących na typach UDT 10.5.5. Ćwiczenia do podrozdziału 10.5 10.6. Przetwarzanie OLAP 10.6.1. Przetwarzanie OLAP i hurtownie danych 405 405 406 407 408 409 411 411 415 416 416 419 422 423 424 424 425 426 427 428 428 430 430 431 431 432 433 434 434 435 436 438 439 440 441 10.6.2. 10.6.3. 10.6.4. 10.6.5. 10.6.6. 10.7. 10.7.1. 10.7.2. 10.7.3. 10.8. 10.9. Aplikacje OLAP Wielowymiarowe spojrzenie na dane OLAP Schematy gwiaździste Cięcie i kawałkowanie Ćwiczenia do podrozdziału 10.6 Kostki danych Operator CUBE Operator CUBE w języku SQL Ćwiczenia do podrozdziału 10.7 Podsumowanie rozdziału 10. Bibliografia do rozdziału 10. 441 442 443 445 447 448 448 450 452 453 454 III: Modelowanie i programowanie danych semistrukturalnych 455 11. Model danych semistrukturalnych 11.1. Dane semistrukturalne 11.1.1. Sens istnienia modelu danych semistrukturalnych 11.1.2. Reprezentacja danych semistrukturalnych 11.1.3. Integracja informacji za pośrednictwem danych semistrukturalnych 11.1.4. Ćwiczenia do podrozdziału 11.1 11.2. XML 11.2.1. Znaczniki semantyczne 11.2.2. XML ze schematem i bez niego 11.2.3. Dokumenty XML poprawne składniowo 11.2.4. Atrybuty 11.2.5. Atrybuty łączące elementy 11.2.6. Przestrzenie nazw 11.2.7. XML i bazy danych 11.2.8. Ćwiczenia do podrozdziału 11.2 11.3. Definicje typu dokumentów 11.3.1. Format definicji DTD 11.3.2. Korzystanie z DTD 11.3.3. Listy atrybutów 11.3.4. Identyfikatory i referencje 11.3.5. Ćwiczenia do podrozdziału 11.3 11.4. XML Schema 11.4.1. Postać standardu XML Schema 11.4.2. Elementy 11.4.3. Typy złoŜone 11.4.4. Atrybuty 11.4.5. Ograniczenia dla typów prostych 11.4.6. Klucze w XML Schema 11.4.7. Klucze obce w XML Schema 11.4.8. Ćwiczenia do podrozdziału 11.4 11.5. Podsumowanie rozdziału 11. 11.6. Bibliografia do rozdziału 11. 457 457 457 458 459 461 461 462 462 463 464 465 466 466 468 468 468 471 471 472 473 474 474 475 476 478 479 480 482 484 484 485 12. Języki programowania dla XML 12.1. XPath 12.1.1. Model danych XPath 12.1.2. Węzły-dokumenty 489 489 489 490 12.1.3. ŚcieŜki XPath 12.1.4. ŚcieŜki względne 12.1.5. Atrybuty w wyraŜeniach opisujących ścieŜki 12.1.6. Osie 12.1.7. Kontekst wyraŜeń 12.1.8. Symbole wieloznaczne 12.1.9. Warunki w wyraŜeniach ścieŜek 12.1.10. Ćwiczenia do podrozdziału 12.1 12.2. XQuery 12.2.1. Podstawy języka XQuery 12.2.2. WyraŜenia FLWR 12.2.3. Zastępowanie zmiennych ich wartościami 12.2.4. Złączenia w XQuery 12.2.5. Operatory porównań w języku XQuery 12.2.6. Eliminowanie duplikatów 12.2.7. Kwantyfikatory w języku XQuery 12.2.8. Agregacje 12.2.9. Rozgałęzienia sterowania w wyraŜeniach XQuery 12.2.10. Porządkowanie wyników zapytania 12.2.11. Ćwiczenia do podrozdziału 12.2 12.3. Język XSLT 12.3.1. Podstawy języka XSLT 12.3.2. Szablony 12.3.3. Odczytywanie wartości z danych XML 12.3.4. Rekurencyjne stosowanie szablonów 12.3.5. Iteracje w XSLT 12.3.6. Rozgałęzienia sterowania w XSLT 12.3.7. Ćwiczenia do podrozdziału 12.3 12.4. Podsumowanie rozdziału 12. 12.5. Bibliografia do rozdziału 12. 491 492 492 493 494 494 495 497 500 500 500 504 505 506 507 508 509 509 510 512 513 513 513 514 515 517 519 519 520 521 Skorowidz 523 oprac. BPK