Advertisement
JanuszKowalski123

10. Dostososowywanie bazy danych - typy danych

May 8th, 2024 (edited)
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.40 KB | None | 0 0
  1. Aby dostosować bazę danych do wykorzystania typów danych takich jak "hierarchy id", "współrzędne geograficzne (geography)", "geometry" oraz "dane XML", możemy zmodyfikować strukturę niektórych tabel oraz dodać nowe typy kolumn do przechowywania tych danych.
  2.  
  3. 1. Renewable_Energy_Devices
  4.  
  5. CREATE TABLE Renewable_Energy_Devices (
  6. device_id NVARCHAR(26) PRIMARY KEY,
  7. device_status INT CHECK (device_status >= 0 AND device_status <= 6),
  8. device_power DECIMAL(18,0),
  9. company_id INT,
  10. device_location GEOGRAPHY, -- Nowa kolumna przechowująca współrzędne geograficzne urządzenia
  11. device_hierarchy HIERARCHYID -- Nowa kolumna przechowująca hierarchię urządzeń
  12. );
  13.  
  14. Korzyści: Wykorzystanie typu danych "geography" umożliwi przechowywanie i operowanie współrzędnymi geograficznymi urządzeń, co może być przydatne np. w systemach monitoringu czy nawigacji. Z kolei typ danych "hierarchy id" pozwoli na hierarchiczne organizowanie urządzeń, co może być przydatne w przypadku drzewiastej struktury urządzeń, np. podłączonego do sieci energetycznej.
  15.  
  16. Korzystanie z powyższych typów danych umożliwia bardziej zaawansowane operacje na danych, takie jak obliczenia odległości między współrzędnymi geograficznymi, manipulowanie hierarchią danych, tworzenie zaawansowanych zapytań przestrzennych itp. Dzięki temu możemy tworzyć bardziej zaawansowane i wydajne aplikacje, które korzystają z danych geoprzestrzennych oraz hierarchicznych struktur danych.
  17.  
  18.  
  19. Dla wykorzystania typu danych "geometry":
  20.  
  21. Przykładowa modyfikacja tabeli urządzeń OZE:
  22.  
  23. -- Usunięcie istniejącej tabeli
  24. DROP TABLE IF EXISTS Renewable_Energy_Devices;
  25.  
  26. -- Tworzenie nowej tabeli urządzeń OZE z kolumną typu geometry
  27. CREATE TABLE Renewable_Energy_Devices (
  28. device_id NVARCHAR(26) PRIMARY KEY,
  29. device_status INT CHECK (device_status >= 0 AND device_status <= 6),
  30. device_power DECIMAL(18,0),
  31. company_id INT,
  32. device_location GEOMETRY
  33. );
  34.  
  35. W tej modyfikacji dodaliśmy kolumnę device_location o typie danych "geometry", która może przechowywać informacje o położeniu geograficznym urządzenia.
  36.  
  37.  
  38. Dla wykorzystania typu danych "xml":
  39.  
  40. Przykładowa modyfikacja tabeli napraw:
  41.  
  42. -- Usunięcie istniejącej tabeli
  43. DROP TABLE IF EXISTS Repairs;
  44.  
  45. -- Tworzenie nowej tabeli napraw z kolumną typu XML dla opisu naprawy
  46. CREATE TABLE Repairs (
  47. repair_id INT PRIMARY KEY IDENTITY,
  48. device_id NVARCHAR(26),
  49. repair_start DATETIME,
  50. repair_end DATETIME,
  51. repair_description XML, -- Zmiana typu danych na XML
  52. FOREIGN KEY (device_id) REFERENCES Renewable_Energy_Devices(device_id)
  53. );
  54.  
  55. W tej modyfikacji zmieniamy typ danych kolumny repair_description na "XML", co pozwoli przechowywać opis naprawy w formacie XML.
  56.  
  57. Korzyści z zastosowania tych typów danych:
  58. Typ "geometry": Pozwala przechowywać informacje o położeniu geograficznym urządzenia w sposób bardziej precyzyjny i elastyczny. Możemy wykonywać operacje geograficzne, takie jak obliczanie odległości między urządzeniami, znajdowanie urządzeń w określonej odległości od punktu odniesienia itp.
  59. Typ "XML": Umożliwia przechowywanie strukturalnych danych w formacie XML, co ułatwia analizę, przetwarzanie i wymianę danych. Możemy wykorzystać funkcje i metody wbudowane w język SQL do manipulowania danymi XML, takie jak zapytania XPath, wstawianie, aktualizowanie i usuwanie danych itp. Dodatkowo, XML jest formatem powszechnie używanym w integracji systemów, co ułatwia wymianę danych między różnymi aplikacjami i platformami.
  60.  
  61.  
  62. Przykład zapytania i możliwości typu danych "xml":
  63.  
  64. -- Wstawianie danych z formatem XML do kolumny
  65. INSERT INTO Repairs (device_id, repair_start, repair_end, repair_description)
  66. VALUES ('device001', '2024-04-15 08:00:00', '2024-04-15 10:00:00',
  67. '<repair>
  68. <issue>Broken component</issue>
  69. <actions>
  70. <action>Replaced the component</action>
  71. <action>Tested functionality</action>
  72. </actions>
  73. </repair>');
  74.  
  75. -- Zapytanie wyświetlające opisy napraw w formacie XML
  76. SELECT repair_description FROM Repairs;
  77.  
  78. -- Zapytanie z wykorzystaniem funkcji XQuery do wyodrębnienia danych z XML
  79. SELECT
  80. repair_id,
  81. device_id,
  82. repair_start,
  83. repair_end,
  84. repair_description.value('(repair/issue/text())[1]', 'nvarchar(100)') AS issue,
  85. repair_description.value('(repair/actions/action)[1]', 'nvarchar(100)') AS action1,
  86. repair_description.value('(repair/actions/action)[2]', 'nvarchar(100)') AS action2
  87. FROM Repairs;
  88.  
  89. W tym przykładzie dodano opis naprawy w formacie XML i wykorzystano funkcję value() wraz z zapytaniem XQuery, aby wyodrębnić konkretne informacje z XML.
  90. Dzięki typowi danych "xml" możemy przechowywać strukturalne dane i wykonywać operacje na nich, takie jak wyszukiwanie, filtrowanie i przetwarzanie.
  91.  
  92.  
  93.  
  94.  
  95. 11. Kolumnę typu XML, możemy wykorzystać w zapytaniach przy użyciu polecenia FOR XML:
  96.  
  97. SELECT
  98. device_id,
  99. device_status,
  100. device_power,
  101. company_id,
  102. device_data_xml
  103. FROM
  104. Renewable_Energy_Devices
  105. FOR XML AUTO, ELEMENTS, ROOT('RenewableEnergyDevices');
  106.  
  107. To zapytanie zwróci wszystkie urządzenia OZE w formie XML, gdzie każde urządzenie będzie reprezentowane jako osobny element <RenewableEnergyDevice>. Każde pole w rekordzie będzie reprezentowane jako atrybut lub element wewnątrz tego elementu.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement