Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017

ΠŸΡ€Π΅Π΄ΠΈ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° курса β€žΡ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° MS SQL ΡΡŠΡ€Π²ΡŠΡ€β€œ ΠŸΡ€ΠΈΠ³ΠΎΡ‚Π²ΠΈΠ»ΠΈ смС Π²ΠΈ ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€Π΅Π²ΠΎΠ΄.

Π“Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ са Π²Π°ΠΆΠ½Π° тСхнология Π·Π° спСциалиститС ΠΏΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ΠžΠΏΠΈΡ‚Π²Π°ΠΌ сС Π΄Π° слСдя ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΈ Π½ΠΎΠ²ΠΈΡ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π² Ρ‚Π°Π·ΠΈ област ΠΈ слСд Ρ€Π°Π±ΠΎΡ‚Π° с Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ ΠΈ NoSQL Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌ, Ρ‡Π΅ ролята Π½Π° Π³Ρ€Π°Ρ„ΠΎΠ²ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ става всС ΠΏΠΎ-голяма. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ със слоТни ΠΉΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π½Π΅ само Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΈ NoSQL са Π½Π΅Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ. ЧСсто, с ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° броя Π½Π° Π½ΠΈΠ²Π°Ρ‚Π° Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, ΠΈΠΌΠ° намаляванС Π½Π° производитСлността. И Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ стават ΠΏΠΎ-слоТни, броят Π½Π° JOIN ΡΡŠΡ‰ΠΎ сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°.

Π Π°Π·Π±ΠΈΡ€Π° сС, Π² рСлационния ΠΌΠΎΠ΄Π΅Π» ΠΈΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΉΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° рСкурсивни CTE), Π½ΠΎ Ρ‚ΠΎΠ²Π° всС ΠΎΡ‰Π΅ са Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ функционалността Π½Π° Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server улСснява Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с мноТСство Π½ΠΈΠ²Π° Π½Π° йСрархия. ΠšΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠ΄Π΅Π»ΡŠΡ‚ Π½Π° Π΄Π°Π½Π½ΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ заявкитС са опростСни ΠΈ слСдоватСлно тяхната СфСктивност сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ намалява ΠΎΠ±Π΅ΠΌΠ° Π½Π° ΠΊΠΎΠ΄Π°.

Π“Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ са СкспрСсивСн Π΅Π·ΠΈΠΊ Π·Π° прСдставянС Π½Π° слоТни систСми. Π’Π°Π·ΠΈ тСхнология Π²Π΅Ρ‡Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° доста ΡˆΠΈΡ€ΠΎΠΊΠΎ Π² ИВ индустрията Π² области ΠΊΠ°Ρ‚ΠΎ социални ΠΌΡ€Π΅ΠΆΠΈ, систСми Π·Π° Π±ΠΎΡ€Π±Π° с ΠΈΠ·ΠΌΠ°ΠΌΠΈΡ‚Π΅, Π°Π½Π°Π»ΠΈΠ· Π½Π° ИВ ΠΌΡ€Π΅ΠΆΠΈ, социални ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ Π·Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅.

Ѐункционалността Π½Π° Π³Ρ€Π°Ρ„ΠΈΡ‡Π½Π°Ρ‚Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π² SQL Server Π΅ подходяща Π·Π° сцСнарии, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ са силно Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ ΠΈ ΠΈΠΌΠ°Ρ‚ Π΄ΠΎΠ±Ρ€Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ.

Π“Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ ΠΌΠΎΠ΄Π΅Π» Π½Π° Π΄Π°Π½Π½ΠΈ

Π“Ρ€Π°Ρ„ΡŠΡ‚ Π΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π²ΡŠΡ€Ρ…ΠΎΠ²Π΅ (възли, възСл) ΠΈ Ρ€ΡŠΠ±ΠΎΠ²Π΅ (ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, Ρ€ΡŠΠ±). Π’ΡŠΡ€Ρ…ΠΎΠ²Π΅Ρ‚Π΅ прСдставляват ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, Π° Ρ€ΡŠΠ±ΠΎΠ²Π΅Ρ‚Π΅ прСдставляват Π²Ρ€ΡŠΠ·ΠΊΠΈ, Ρ‡ΠΈΠΈΡ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ информация.

Π“Ρ€Π°Ρ„ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ Π² тСорията Π½Π° Π³Ρ€Π°Ρ„ΠΈΡ‚Π΅. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ‚Π΅ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ са Π²ΡŠΡ€Ρ…ΠΎΠ²Π΅ ΠΈ Ρ€ΡŠΠ±ΠΎΠ²Π΅. АтрибутитС са свойства Π½Π° Π²ΡŠΡ€Ρ…ΠΎΠ²Π΅ ΠΈ Ρ€ΡŠΠ±ΠΎΠ²Π΅. Π’Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ° Π½Π° Π²ΡŠΡ€Ρ…ΠΎΠ²Π΅.

Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ, Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ няма Π½ΡƒΠΆΠ΄Π° Π΄Π° сС изчисляват Π²Ρ€ΡŠΠ·ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° външни ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΏΠΎ някакъв Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ слоТни ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ само абстракции Π½Π° Π²ΡŠΡ€Ρ…ΠΎΠ²Π΅ ΠΈ Ρ€ΡŠΠ±ΠΎΠ²Π΅.

Π’ днСшния свят ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ изисква всС ΠΏΠΎ-слоТни Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ. Π—Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°Π½Π΅ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ, SQL Server 2017 ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° Π³Ρ€Π°Ρ„ΠΈΡ‡Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π’ΡŠΡ€Ρ…ΠΎΠ²Π΅Ρ‚Π΅ ΠΈ Ρ€ΡŠΠ±ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π³Ρ€Π°Ρ„Π° са прСдставСни ΠΊΠ°Ρ‚ΠΎ Π½ΠΎΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ: NODE ΠΈ EDGE. Π“Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ заявки ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π½ΠΎΠ²Π° T-SQL функция, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° MATCH(). Въй ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ функционалност Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½Π° Π² SQL Server 2017, тя ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° във Π²Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π±Π΅Π· нСобходимост ΠΎΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.

ΠŸΡ€Π΅Π΄ΠΈΠΌΡΡ‚Π²Π° Π½Π° графичния ΠΌΠΎΠ΄Π΅Π»

Π’ днСшно Π²Ρ€Π΅ΠΌΠ΅ Ρ„ΠΈΡ€ΠΌΠΈΡ‚Π΅ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ изискват прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ работят с всС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π΄Π°Π½Π½ΠΈ, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ‚ висока производитСлност ΠΈ надСТдност. Π“Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΎΡ‚ΠΎ прСдставянС Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ срСдство Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° слоТни Π²Ρ€ΡŠΠ·ΠΊΠΈ. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π΅ΡˆΠ°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π·Π° постиганС Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π² Π΄Π°Π΄Π΅Π½ контСкст.

ИзглСТда, Ρ‡Π΅ ΠΌΠ½ΠΎΠ³ΠΎ прилоТСния Ρ‰Π΅ сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚ Π±Π°Π·ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅.

ΠœΠΎΠ΄Π΅Π»ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ: ΠΎΡ‚ Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ към Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°Π½Π΅

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017
ΠŸΡ€ΠΈΠΌΠ΅Ρ€

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Π° структура с йСрархия Π½Π° слуТитСлитС: слуТитСл Π΄ΠΎΠΊΠ»Π°Π΄Π²Π° Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€, ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π΄ΠΎΠΊΠ»Π°Π΄Π²Π° Π½Π° ΡΡ‚Π°Ρ€ΡˆΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ ΠΈ Ρ‚.Π½. Π’ зависимост ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ‚Π° компания, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π±Ρ€ΠΎΠΉ Π½ΠΈΠ²Π° Π² Ρ‚Π°Π·ΠΈ йСрархия. Но Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ броят Π½Π° Π½ΠΈΠ²Π°Ρ‚Π° сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°, изчисляванСто Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ става всС ΠΏΠΎ-Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. Доста Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΅ Π΄Π° си прСдставим йСрархията Π½Π° слуТитСлитС, йСрархията Π² ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³Π° ΠΈΠ»ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ Π² социалнитС ΠΌΠ΅Π΄ΠΈΠΈ. НСка Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ SQL Graph ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π΅ΡˆΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° йСрархия.

Π—Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΠΊΠ° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ прост ΠΌΠΎΠ΄Π΅Π» Π½Π° Π΄Π°Π½Π½ΠΈ. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π° слуТитСлитС EMP с ΠΈΠ΄ EMPNO ΠΈ ΠΊΠΎΠ»ΠΎΠ½Π° М.Π“.Π .A, ΠΊΠΎΠΉΡ‚ΠΎ сочи към ID Π½Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»Ρ (ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π°) Π½Π° слуТитСля. Цялата информация Π·Π° йСрархията сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Ρ‚Π°Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ‚ΡŠΡ€ΡΠΈ Ρ‡Ρ€Π΅Π· ΠΊΠΎΠ»ΠΎΠ½ΠΈ EMPNO ΠΈ М.Π“.Π ..

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017
Π‘Π»Π΅Π΄Π½Π°Ρ‚Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° ΡΡŠΡ‰ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΡŠΡ‰ΠΈΡ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° с Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ Π½ΠΈΠ²Π° Π½Π° Π²Π»Π°Π³Π°Π½Π΅ Π² ΠΏΠΎ-ΠΏΠΎΠ·Π½Π°Ρ‚Π° Ρ„ΠΎΡ€ΠΌΠ°. Π‘Π»ΡƒΠΆΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ са Π²ΡŠΡ€Ρ…ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π° ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° EMP. Π‘ΡƒΠ±Π΅ΠΊΡ‚ΡŠΡ‚ β€žΡΠ»ΡƒΠΆΠΈΡ‚Π΅Π»β€œ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ със сСбС си Ρ‡Ρ€Π΅Π· Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° β€žΠΏΠΎΠ΄Π°Π²Π°β€œ (ReportsTo). ΠžΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π°, Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π΅ Ρ€ΡŠΠ± (EDGE), ΠΊΠΎΠΉΡ‚ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π° възли (NODE) ​​на слуТитСлитС.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017

НСка създадСм ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° EMP ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ стойности Ρ‚Π°ΠΌ спорСд Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅.

CREATE TABLE EMP
(EMPNO INT NOT NULL,
ENAME VARCHAR(20),
JOB VARCHAR(10),
MGR INT,
JOINDATE DATETIME,
SALARY DECIMAL(7, 2),
COMMISIION DECIMAL(7, 2),
DNO INT)
 
INSERT INTO EMP VALUES
(7369, 'SMITH', 'CLERK', 7902, '02-MAR-1970', 8000, NULL, 2),
(7499, 'ALLEN', 'SALESMAN', 7698, '20-MAR-1971', 1600, 3000, 3),
(7521, 'WARD', 'SALESMAN', 7698, '07-FEB-1983', 1250, 5000, 3),
(7566, 'JONES', 'MANAGER', 7839, '02-JUN-1961', 2975, 50000, 2),
(7654, 'MARTIN', 'SALESMAN', 7698, '28-FEB-1971', 1250, 14000, 3),
(7698, 'BLAKE', 'MANAGER', 7839, '01-JAN-1988', 2850, 12000, 3),
(7782, 'CLARK', 'MANAGER', 7839, '09-APR-1971', 2450, 13000, 1),
(7788, 'SCOTT', 'ANALYST', 7566, '09-DEC-1982', 3000, 1200, 2),
(7839, 'KING', 'PRESIDENT', NULL, '17-JUL-1971', 5000, 1456, 1),
(7844, 'TURNER', 'SALESMAN', 7698, '08-AUG-1971', 1500, 0, 3),
(7876, 'ADAMS', 'CLERK', 7788, '12-MAR-1973', 1100, 0, 2),
(7900, 'JAMES', 'CLERK', 7698, '03-NOV-1971', 950, 0, 3),
(7902, 'FORD', 'ANALYST', 7566, '04-MAR-1961', 3000, 0, 2),
(7934, 'MILLER', 'CLERK', 7782, '21-JAN-1972', 1300, 0, 1)

Π€ΠΈΠ³ΡƒΡ€Π°Ρ‚Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ ΠΏΠΎΠΊΠ°Π·Π²Π° слуТитСлитС:

  • слуТитСл с EMPNO 7369 Π΅ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½ Π½Π° 7902;
  • слуТитСл с EMPNO 7902 ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½ Π½Π° 7566
  • слуТитСл с EMPNO 7566 ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½ Π½Π° 7839

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ прСдставянСто Π½Π° ΡΡŠΡ‰ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°. Π’ΡŠΠ·Π΅Π»ΡŠΡ‚ EMPLOYEE ΠΈΠΌΠ° няколко Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ със сСбС си Ρ‡Ρ€Π΅Π· Π²Ρ€ΡŠΠ·ΠΊΠ° "ΠΏΠΎΠ΄Π°Π²Π°" (EmplReportsTo). EmplReportsTo Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°.

ΠšΡ€Π°ΠΉΠ½Π°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° (EDGE) ΡΡŠΡ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017
Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° с възли EmpNode

Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π·Π° създаванС Π½Π° възСл Π΅ доста прост: към ΠΈΠ·Ρ€Π°Π·Π° Π‘ΠͺЗДАЙВЕ МАБА Π΄ΠΎΠ±Π°Π²Π΅Π½ към края КАВО Π’ΠͺΠ—Π•Π›.

CREATE TABLE dbo.EmpNode(
ID Int Identity(1,1),
EMPNO NUMERIC(4) NOT NULL,
ENAME VARCHAR(10),
MGR NUMERIC(4),
DNO INT
) AS NODE;

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½Π°. БлСдващия INSERT вмъква Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° EMP.

INSERT INTO EmpNode(EMPNO,ENAME,MGR,DNO) select empno,ename,MGR,dno from emp

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017
Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π² спСциална ΠΊΠΎΠ»ΠΎΠ½Π° $node_id_* ID Π½Π° хоста сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΊΠ°Ρ‚ΠΎ JSON. ΠžΡΡ‚Π°Π½Π°Π»ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π½Π° Ρ‚Π°Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΡ‚Π΅ Π½Π° възСла.

БъздаванС Π½Π° Ρ€ΡŠΠ±ΠΎΠ²Π΅ (EDGE)

Π‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° с възли, с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° КАВО Π ΠͺΠ‘.

CREATE TABLE empReportsTo(Deptno int) AS EDGE

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ слуТитСлитС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈ EMPNO ΠΈ М.Π“.Π .. ΠžΡ€Π³Π°Π½ΠΈΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° ясно ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ сС пишС INSERT.

INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 1),
   	(SELECT $node_id FROM EmpNode WHERE id = 13),20);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 2),
   	(SELECT $node_id FROM EmpNode WHERE id = 6),10);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 3),
   	(SELECT $node_id FROM EmpNode WHERE id = 6),10)
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 4),
   	(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 5),
   	(SELECT $node_id FROM EmpNode WHERE id = 6),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 6),
   	(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 7),
   	(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 8),
   	(SELECT $node_id FROM EmpNode WHERE id = 4),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 9),
   	(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 10),
   	(SELECT $node_id FROM EmpNode WHERE id = 6),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 11),
   	(SELECT $node_id FROM EmpNode WHERE id = 8),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 12),
   	(SELECT $node_id FROM EmpNode WHERE id = 6),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 13),
   	(SELECT $node_id FROM EmpNode WHERE id = 4),30);
INSERT INTO empReportsTo  VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 14),
   	(SELECT $node_id FROM EmpNode WHERE id = 7),30);

ΠšΡ€Π°ΠΉΠ½Π°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ° Ρ‚Ρ€ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. ΠΏΡŠΡ€Π²ΠΎ, $edge_id β€” ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° Ρ€ΡŠΠ±Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° JSON. Π”Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π΄Π²Π΅ ($from_id ΠΈ $to_id) прСдставляват Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅. ОсвСн Ρ‚ΠΎΠ²Π° Ρ€ΡŠΠ±ΠΎΠ²Π΅Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠΌΠ°Ρ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ свойства. Π’ нашия случай Ρ‚ΠΎΠ²Π° Π”Π΅ΠΏΡ‚Π½ΠΎ.

БистСмни ΠΈΠ·Π³Π»Π΅Π΄ΠΈ

Π’ систСмСн ΠΈΠ·Π³Π»Π΅Π΄ sys.tables Има Π΄Π²Π΅ Π½ΠΎΠ²ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ:

  1. Π΅_Ρ€ΡŠΠ±
  2. С_възСл

SELECT t.is_edge,t.is_node,*
FROM sys.tables t
WHERE name like 'emp%'

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017

ssms

ΠžΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΈΡ‚Π΅, сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π“Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. Π˜ΠΊΠΎΠ½Π°Ρ‚Π° Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° с възли Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π° с Ρ‚ΠΎΡ‡ΠΊΠ°, Π° ΠΈΠΊΠΎΠ½Π°Ρ‚Π° Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° с Ρ€ΡŠΠ±ΠΎΠ²Π΅ Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π° с Π΄Π²Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ ΠΊΡ€ΡŠΠ³Π° (ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ ΠΌΠ°Π»ΠΊΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‡ΠΈΠ»Π°).

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017

MATCH ΠΈΠ·Ρ€Π°Π·

изразяванС MATCH Π²Π·Π΅Ρ‚ΠΈ ΠΎΡ‚ CQL (Cypher Query Language). Π’ΠΎΠ²Π° Π΅ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π·Π° свойствата Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°. CQL Π·Π°ΠΏΠΎΡ‡Π²Π° с ΠΈΠ·Ρ€Π°Π· MATCH.

синтаксис

MATCH (<graph_search_pattern>)
 
<graph_search_pattern>::=
    {<node_alias> {
                 	{ <-( <edge_alias> )- }
               	| { -( <edge_alias> )-> }
             	<node_alias>
             	}
 	}
 	[ { AND } { ( <graph_search_pattern> ) } ]
 	[ ,...n ]
 
<node_alias> ::=
    node_table_name | node_alias
 
<edge_alias> ::=
    edge_table_name | edge_alias

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ няколко ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

Заявката ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ ΠΏΠΎΠΊΠ°Π·Π²Π° слуТитСлитС, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Π‘ΠΌΠΈΡ‚ ΠΈ нСговият ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π΄ΠΎΠΊΠ»Π°Π΄Π²Π°Ρ‚.

SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR
FROM
    empnode e, empnode e1, empReportsTo m
WHERE
    MATCH(e-(m)->e1)
and e.ENAME='SMITH'

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017
Π‘Π»Π΅Π΄Π½Π°Ρ‚Π° заявка Π΅ Π·Π° Π½Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° слуТитСли ΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈ ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎ Π½ΠΈΠ²ΠΎ Π·Π° Smith. Ако ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ ΠΎΡ„Π΅Ρ€Ρ‚Π°Ρ‚Π° КΠͺΠ”Π•, Ρ‚ΠΎΠ³Π°Π²Π° всички слуТитСли Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚.

SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR,E2.EMPNO,e2.ENAME,E2.MGR
FROM
    empnode e, empnode e1, empReportsTo m ,empReportsTo m1, empnode e2
WHERE
    MATCH(e-(m)->e1-(m1)->e2)
and e.ENAME='SMITH'

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017
И накрая, исканС Π·Π° слуТитСли ΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈ ΠΎΡ‚ Ρ‚Ρ€Π΅Ρ‚ΠΎ Π½ΠΈΠ²ΠΎ.

SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR,E2.EMPNO,e2.ENAME,E2.MGR,E3.EMPNO,e3.ENAME,E3.MGR
FROM
    empnode e, empnode e1, empReportsTo m ,empReportsTo m1, empnode e2, empReportsTo M2, empnode e3
WHERE
    MATCH(e-(m)->e1-(m1)->e2-(m2)->e3)
and e.ENAME='SMITH'

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ посоката, Π·Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΡˆΠ΅Ρ„ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π‘ΠΌΠΈΡ‚.

SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR,E2.EMPNO,e2.ENAME,E2.MGR,E3.EMPNO,e3.ENAME,E3.MGR
FROM
    empnode e, empnode e1, empReportsTo m ,empReportsTo m1, empnode e2, empReportsTo M2, empnode e3
WHERE
    MATCH(e<-(m)-e1<-(m1)-e2<-(m2)-e3)

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

SQL Server 2017 сС ΡƒΡ‚Π²ΡŠΡ€Π΄ΠΈ ΠΊΠ°Ρ‚ΠΎ цялостно ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ бизнСс ИВ Π½ΡƒΠΆΠ΄ΠΈ. ΠŸΡŠΡ€Π²Π°Ρ‚Π° вСрсия Π½Π° SQL Graph Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅Ρ‰Π°Π²Π°Ρ‰Π°. Π”ΠΎΡ€ΠΈ Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ някои ограничСния, Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ функционалност Π·Π° изслСдванС Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈΡ‚Π΅.

Ѐункционалността Π½Π° SQL Graph Π΅ напълно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π° Π² SQL Engine. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΊΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ бСшС спомСнато, SQL Server 2017 ΠΈΠΌΠ° слСднитС ограничСния:

Няма ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΡŠΠΌ.

  • ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС само Сднопосочни Π²Ρ€ΡŠΠ·ΠΊΠΈ.
  • Edges Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ своитС ΠΊΠΎΠ»ΠΎΠ½ΠΈ $from_id ΠΈ $to_id Ρ‡Ρ€Π΅Π· UPDATE.
  • ΠŸΡ€Π΅Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ затваряния Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚, Π½ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° CTE.
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° OLTP ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.
  • Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ (System-Versioned Temporal Table), Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΈ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚.
  • Π’ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ NODE ΠΈΠ»ΠΈ EDGE.
  • ΠšΡ€ΡŠΡΡ‚ΠΎΡΠ°Π½ΠΈΡ‚Π΅ заявки към Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚.
  • Няма Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ ΠΈΠ»ΠΈ някакъв ΡΡŠΠ²Π΅Ρ‚Π½ΠΈΠΊ (ΡΡŠΠ²Π΅Ρ‚Π½ΠΈΠΊ) Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.
  • Няма GUI Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Power BI.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° SQL Server 2017

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΎΡ‰Π΅:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€