Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
РАБОТА С ЙЕРАРХИЧНИ ДАННИ В
РЕЛАЦИОННИ БАЗИ ОТ ДАННИ ЧРЕЗ
ИЗПОЛЗВАНЕ НА РЕКУРСИВНИ ЗАЯВКИ
доц. д-р Цветанка Георгиева-Триф...
РАБОТА С ЙЕРАРХИЧНИ ДАННИ В РЕЛАЦИОННИ
БАЗИ ОТ ДАННИ – СЪДЪРЖАНИЕ
 Представяне на данните
 Намиране на дълбочината на въ...
РАБОТА С ЙЕРАРХИЧНИ ДАННИ В РЕЛАЦИОННИ
БАЗИ ОТ ДАННИ
 Понякога се изисква данните, съхранявани в релационни
таблици, да б...
РАБОТА С ЙЕРАРХИЧНИ ДАННИ В РЕЛАЦИОННИ
БАЗИ ОТ ДАННИ (2)
 Други примери за ситуации, при които възниква
необходимост от р...
ПРЕДСТАВЯНЕ НА ДАННИТЕ
 Един от начините за представяне на йерархични данни в
релационна база от данни е чрез рекурсивна ...
ПРЕДСТАВЯНЕ НА ДАННИТЕ (2)
 При създаването на таблицата Categories, съдържаща
данните за категориите, всяка категория е ...
ПРЕДСТАВЯНЕ НА ДАННИТЕ (3)
 Примерни данни в таблица за категориите Categories:
77Цветанка Георгиева
ПРЕДСТАВЯНЕ НА ДАННИТЕ (4)
 Получава се следната дървовидна структура:
88Цветанка Георгиева
НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ
 SQL3 (или SQL99) добавя възможност за изпълняване на
рекурсивни заявки.
 Следната ...
НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ (2)
 Резултатът от изпълнението на заявката за пресмятане на
нивото в йерархията на ...
НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ (3)
 Инициализация
 От изпълнението само на първата част от WITH заявката:
SELECT c...
НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ (4)
 Проследяване на рекурсивното изпълнение на WITH заявката
 I.
 От изпълнението...
НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ (5)
 Проследяване на рекурсивното изпълнение на WITH заявката
 II.
1313Цветанка Гео...
 Проследяване на рекурсивното изпълнение на WITH заявката
 II.
 От изпълнението само на втората част от WITH заявката с...
 Проследяване на рекурсивното изпълнение на WITH заявката
 III.
1515Цветанка Георгиева
 Проследяване на рекурсивното изпълнение на WITH заявката
 III.
 Втората част от WITH заявката връща:
 Следователно Up...
 Проследяване на рекурсивното изпълнение на WITH заявката
 IV.
1717Цветанка Георгиева Моделиране на информационни системи
 Проследяване на рекурсивното изпълнение на WITH заявката
 IV.
 Втората част от WITH заявката връща:
 Следователно Upp...
 Проследяване на рекурсивното изпълнение на WITH заявката
 V.
1919Цветанка Георгиева
 Проследяване на рекурсивното изпълнение на WITH заявката
 V.
 Втората част от WITH заявката връща:
 Следователно Uppe...
 Проследяване на рекурсивното изпълнение на WITH
заявката
 VI.
 Получава се същият резултат като от предишната стъпка,
...
ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА
 Заявката, показана по-долу, е за извеждане на йерархията.
2222Цветанка Георгиева
ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА (2)
 За целта се добавя колона Lineage, с която се намира пътя
от върха до елемент (връх) на йера...
ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА (3)
 Резултатът от изпълнението на заявката за извеждане на
йерархията е:
2424Цветанка Георгиева
ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА (4)
 Накрая, се модифицира заявката към UpperHierarchy, за
се да изведат имената на категориите с...
ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА (5)
 Освен това е зададено сортиране, така че категориите да се
извеждат след категорията, на коя...
ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА (6)
 Резултатът от изпълнението на модифицираната заявка към
UpperHierarchy за извеждане на йерар...
АГРЕГАТНИ ФУНКЦИИ ЗА ЕЛЕМЕНТИТЕ В
ЙЕРАРХИЯТА
 Нека е добавена таблица за продукти, за да може да се
демонстрира използван...
АГРЕГАТНИ ФУНКЦИИ ЗА ЕЛЕМЕНТИТЕ В
ЙЕРАРХИЯТА (2)
 Изгледът vw_Count_of_Prod
 намира броя на продуктите в категориите, ко...
АГРЕГАТНИ ФУНКЦИИ ЗА ЕЛЕМЕНТИТЕ В
ЙЕРАРХИЯТА (3)
 При извличане на данните от изгледа се получава следният
резултат:
SELE...
АГРЕГАТНИ ФУНКЦИИ ЗА ЕЛЕМЕНТИТЕ В
ЙЕРАРХИЯТА (4)
 За извеждане на категориите в йерархията и броя на
продуктите от всяка ...
АГРЕГАТНИ ФУНКЦИИ ЗА ЕЛЕМЕНТИТЕ В
ЙЕРАРХИЯТА (5)
 Резултатът от изпълнението на заявката за извеждане на
категориите в йе...
3333Цветанка Георгиева
Цветанка Георгиева-Трифонова, 2017
Някои права запазени.
Презентацията е достъпна под лиценз Creati...
Prochain SlideShare
Chargement dans…5
×

Работа с йерархични данни в релационни бази от данни чрез използване на рекурсивни заявки

787 vues

Publié le

Понякога се изисква данните, съхранявани в релационни таблици, да бъдат представени във вид на йерархия или дърво. Например, извеждане във формат, показващ зависимостите на схема, която съдържа всички служители в дадена организация и всеки служител е свързан със своя ръководител чрез неговия идентификатор. Тъй като ръководителите са също служители, техните подробни данни също се съхраняват в таблицата за служителите. Други примери за ситуации, при които възниква необходимост от работа с йерархични данни, са реализиране на: йерархия от позволения; каталог на продукти за онлайн магазин; форум с проследяване на отговорите по темите.
Един от начините за представяне на йерархични данни в релационна база от данни е чрез рекурсивна релационна връзка от тип „едно към много“.

Publié dans : Données & analyses
  • Soyez le premier à commenter

Работа с йерархични данни в релационни бази от данни чрез използване на рекурсивни заявки

  1. 1. РАБОТА С ЙЕРАРХИЧНИ ДАННИ В РЕЛАЦИОННИ БАЗИ ОТ ДАННИ ЧРЕЗ ИЗПОЛЗВАНЕ НА РЕКУРСИВНИ ЗАЯВКИ доц. д-р Цветанка Георгиева-Трифонова
  2. 2. РАБОТА С ЙЕРАРХИЧНИ ДАННИ В РЕЛАЦИОННИ БАЗИ ОТ ДАННИ – СЪДЪРЖАНИЕ  Представяне на данните  Намиране на дълбочината на върховете  Извеждане на йерархията  Агрегатни функции за елементите в йерархията 22Цветанка Георгиева
  3. 3. РАБОТА С ЙЕРАРХИЧНИ ДАННИ В РЕЛАЦИОННИ БАЗИ ОТ ДАННИ  Понякога се изисква данните, съхранявани в релационни таблици, да бъдат представени във вид на йерархия или дърво.  Например, извеждане във формат, показващ зависимостите на схема, която съдържа всички служители в дадена организация и всеки служител е свързан със своя ръководител чрез неговия идентификатор.  Тъй като ръководителите са също служители, техните подробни данни също се съхраняват в таблицата за служителите. 33Цветанка Георгиева
  4. 4. РАБОТА С ЙЕРАРХИЧНИ ДАННИ В РЕЛАЦИОННИ БАЗИ ОТ ДАННИ (2)  Други примери за ситуации, при които възниква необходимост от работа с йерархични данни, са реализиране на:  йерархия от позволения;  каталог на продукти за онлайн магазин;  форум с проследяване на отговорите по темите. 44Цветанка Георгиева
  5. 5. ПРЕДСТАВЯНЕ НА ДАННИТЕ  Един от начините за представяне на йерархични данни в релационна база от данни е чрез рекурсивна релационна връзка от тип „едно към много“.  Например, таблица за категории Categories с колони:  идентификатор на категория CategoryID;  наименование на категория CategoryName;  идентификатор на категория, на която текущата е подкатегория SubCategoryOf. 55Цветанка Георгиева
  6. 6. ПРЕДСТАВЯНЕ НА ДАННИТЕ (2)  При създаването на таблицата Categories, съдържаща данните за категориите, всяка категория е свързана с друга категория, на която се явява подкатегория чрез идентификатора си.  Таблицата има референция към себе си. CREATE TABLE Categories ( CategoryID int NOT NULL PRIMARY KEY, CategoryName varchar(50) NOT NULL UNIQUE, SubCategoryOf int NULL REFERENCES Categories(CategoryID) ) 66Цветанка Георгиева
  7. 7. ПРЕДСТАВЯНЕ НА ДАННИТЕ (3)  Примерни данни в таблица за категориите Categories: 77Цветанка Георгиева
  8. 8. ПРЕДСТАВЯНЕ НА ДАННИТЕ (4)  Получава се следната дървовидна структура: 88Цветанка Георгиева
  9. 9. НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ  SQL3 (или SQL99) добавя възможност за изпълняване на рекурсивни заявки.  Следната заявка пресмята нивото в йерархията на категория: 99Цветанка Георгиева
  10. 10. НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ (2)  Резултатът от изпълнението на заявката за пресмятане на нивото в йерархията на категория, приложена за примерните данни, е: 1010Цветанка Георгиева
  11. 11. НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ (3)  Инициализация  От изпълнението само на първата част от WITH заявката: SELECT c.CategoryID, c.CategoryName, c.SubCategoryOf, 0 AS HierarchyOrder FROM Categories AS c WHERE c.SubCategoryOf IS NULL  се получава следният резултат: 1111Цветанка Георгиева
  12. 12. НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ (4)  Проследяване на рекурсивното изпълнение на WITH заявката  I.  От изпълнението само на втората част от WITH заявката: SELECT c.CategoryID, c.CategoryName, c.SubCategoryOf, HierarchyOrder + 1 FROM Categories AS c INNER JOIN UpperHierarchy AS Parent ON c.SubCategoryOf = parent.CategoryID  се получава като резултат празното множество.  Следователно UpperHierarchy има следния вид: 1212Цветанка Георгиева
  13. 13. НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ (5)  Проследяване на рекурсивното изпълнение на WITH заявката  II. 1313Цветанка Георгиева
  14. 14.  Проследяване на рекурсивното изпълнение на WITH заявката  II.  От изпълнението само на втората част от WITH заявката се получава като резултат:  Следователно UpperHierarchy има следния вид: 1414Цветанка Георгиева
  15. 15.  Проследяване на рекурсивното изпълнение на WITH заявката  III. 1515Цветанка Георгиева
  16. 16.  Проследяване на рекурсивното изпълнение на WITH заявката  III.  Втората част от WITH заявката връща:  Следователно UpperHierarchy има следния вид: 1616Цветанка Георгиева
  17. 17.  Проследяване на рекурсивното изпълнение на WITH заявката  IV. 1717Цветанка Георгиева Моделиране на информационни системи
  18. 18.  Проследяване на рекурсивното изпълнение на WITH заявката  IV.  Втората част от WITH заявката връща:  Следователно UpperHierarchy има следния вид: 1818Цветанка Георгиева
  19. 19.  Проследяване на рекурсивното изпълнение на WITH заявката  V. 1919Цветанка Георгиева
  20. 20.  Проследяване на рекурсивното изпълнение на WITH заявката  V.  Втората част от WITH заявката връща:  Следователно UpperHierarchy има следния вид: 2020Цветанка Георгиева
  21. 21.  Проследяване на рекурсивното изпълнение на WITH заявката  VI.  Получава се същият резултат като от предишната стъпка, следователно край на рекурсията. 2121Цветанка Георгиева НАМИРАНЕ НА ДЪЛБОЧИНАТА НА ВЪРХОВЕТЕ (13)
  22. 22. ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА  Заявката, показана по-долу, е за извеждане на йерархията. 2222Цветанка Георгиева
  23. 23. ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА (2)  За целта се добавя колона Lineage, с която се намира пътя от върха до елемент (връх) на йерархията (дървото), т.е. през кои елементи трябва да се мине, за да бъде достигнат даден елемент. 2323Цветанка Георгиева
  24. 24. ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА (3)  Резултатът от изпълнението на заявката за извеждане на йерархията е: 2424Цветанка Георгиева
  25. 25. ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА (4)  Накрая, се модифицира заявката към UpperHierarchy, за се да изведат имената на категориите с отстъп, който съответства на тяхното ниво в йерархията. 2525Цветанка Георгиева
  26. 26. ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА (5)  Освен това е зададено сортиране, така че категориите да се извеждат след категорията, на която са подкатегория.  Сортрането е по низ, образуван от пътя до даден връх и идентификатора на самия връх (идентификатора на категория). 2626Цветанка Георгиева
  27. 27. ИЗВЕЖДАНЕ НА ЙЕРАРХИЯТА (6)  Резултатът от изпълнението на модифицираната заявка към UpperHierarchy за извеждане на йерархията е: 2727Цветанка Георгиева
  28. 28. АГРЕГАТНИ ФУНКЦИИ ЗА ЕЛЕМЕНТИТЕ В ЙЕРАРХИЯТА  Нека е добавена таблица за продукти, за да може да се демонстрира използването на агрегатни функции. 2828Цветанка Георгиева
  29. 29. АГРЕГАТНИ ФУНКЦИИ ЗА ЕЛЕМЕНТИТЕ В ЙЕРАРХИЯТА (2)  Изгледът vw_Count_of_Prod  намира броя на продуктите в категориите, които нямат подкатегории (т.е. листовите върхове);  за всички останали категроии броят на продуктите е 0. 2929Цветанка Георгиева
  30. 30. АГРЕГАТНИ ФУНКЦИИ ЗА ЕЛЕМЕНТИТЕ В ЙЕРАРХИЯТА (3)  При извличане на данните от изгледа се получава следният резултат: SELECT * FROM vw_Count_of_Prod 3030Цветанка Георгиева
  31. 31. АГРЕГАТНИ ФУНКЦИИ ЗА ЕЛЕМЕНТИТЕ В ЙЕРАРХИЯТА (4)  За извеждане на категориите в йерархията и броя на продуктите от всяка категория може да се използва следната заявка, базирана на създадения изглед: 3131Цветанка Георгиева
  32. 32. АГРЕГАТНИ ФУНКЦИИ ЗА ЕЛЕМЕНТИТЕ В ЙЕРАРХИЯТА (5)  Резултатът от изпълнението на заявката за извеждане на категориите в йерархията и броя на продуктите от всяка категория е: 3232Цветанка Георгиева
  33. 33. 3333Цветанка Георгиева Цветанка Георгиева-Трифонова, 2017 Някои права запазени. Презентацията е достъпна под лиценз Creative Commons, Признание-Некомерсиално-Без производни, https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode

×