"

Graph Tables در Sql Server

تیم تحریریه 1404/07/04 0 32
لینک کوتاه https://zoheirsoftware.com/z/dfbf949d9 |
  Graph Tables در Sql Server,ایجاد Graph Tables  در Sql Server,ساختار داخلی Graph Tables   در Sql Server

Graph Tables در SQL Server

از نسخه‌ی SQL Server 2017 به بعد، مایکروسافت قابلیتی به نام Graph Database یا Graph Tables معرفی کرد.

هدف اصلی این قابلیت، ساده‌سازی کار با داده‌هایی است که ماهیت شبکه‌ای (شباهت به گراف) دارند؛ مثل شبکه‌های اجتماعی، سیستم‌های حمل‌ونقل، ساختارهای سازمانی و حتی تحلیل ارتباطات پیچیده بین موجودیت‌ها.

در علم کامپیوتر، یک گراف شامل دو بخش اصلی است:

  • Node (گره یا رأس)

    نشان‌دهنده‌ی موجودیت‌ها (مثلاً کاربر، محصول، مکان).
  • Edge (یال یا ارتباط)

    نشان‌دهنده‌ی رابطه بین موجودیت‌ها (مثلاً "کاربر A دوست کاربر B است" یا "کاربر X محصول Y را خریده است").

یک پایگاه داده‌ی گرافی به جای ذخیره‌ی داده‌ها در جداول سنتی رابطه‌ای، داده‌ها را به صورت Node و Edge مدیریت می‌کند.

این ساختار باعث می‌شود روابط پیچیده بین داده‌ها ساده‌تر مدیریت شوند.

هر Node Table به‌طور خودکار ستونی به نام $node_id دارد.

هر Edge Table به‌طور خودکار ستون‌های $edge_id, $from_id, $to_id دارد.

 

 

Graph Tables در SQL Server

چرا Graph Tables مهم هستند؟

  • مدیریت ساده‌ی روابط پیچیده بین داده‌ها

  • قابلیت Query ساده با MATCH

  • حفظ مزایای SQL Server (امنیت، تراکنش‌ها، ایندکس‌ها) در کنار مدل گرافی

  • ترکیب داده‌های رابطه‌ای و گرافی در یک محیط

چرا Graph Tables مهم هستند؟

ایجاد Graph Tables  در Sql Server

  • ایجاد Node Table

سینتکس:

CREATE TABLE table_name (
    column_definitions
) AS NODE;


مثال:

CREATE TABLE Person (
    PersonID INT PRIMARY KEY,
    Name NVARCHAR(100),
    Age INT
) AS NODE;


این جدول یک Node Table به نام Person ایجاد می‌کند که نشان‌دهنده افراد است.

  • ایجاد Edge Table 

سینتکس:

CREATE TABLE table_name (
    column_definitions
) AS EDGE;


مثال:

CREATE TABLE FriendOf AS EDGE;


این جدول یک Edge Table به نام FriendOf می‌سازد که ارتباط "دوستی" بین افراد را ذخیره می‌کند.

وارد کردن داده‌ها در Graph Tables

  • برای درج داده در Node Table:

INSERT INTO Person (PersonID, Name, Age)
VALUES (1, 'Ali', 25),
       (2, 'Sara', 22),
       (3, 'Reza', 30);

 

  • برای درج داده در Edge Table:

INSERT INTO FriendOf ($from_id, $to_id)
VALUES (
    (SELECT $node_id FROM Person WHERE PersonID = 1),
    (SELECT $node_id FROM Person WHERE PersonID = 2)
),
(
    (SELECT $node_id FROM Person WHERE PersonID = 2),
    (SELECT $node_id FROM Person WHERE PersonID = 3)
);

 

 

 

🌟 آیا می‌خواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟

با دوره آموزشی SQL Server ما، شما می‌توانید به راحتی و با روشی عملی، تمام مهارت‌های لازم را یاد بگیرید!

این دوره به شما آموزش می‌دهد که چگونه داده‌ها را به بهترین شکل مدیریت کنید، گزارش‌های قدرتمند بسازید و به تحلیل‌های عمیق دست یابید.

با محتوای جذاب و پروژه‌های واقعی، شما نه تنها تئوری را یاد می‌گیرید، بلکه توانایی‌های عملی خود را نیز تقویت می‌کنید.

پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشن‌تر بردارید!

 ⇐همین حالا شروع کنید و به دنیای داده‌ها بپیوندید!

 

 

Query با MATCH

با استفاده از دستور MATCH می‌توان به راحتی ارتباط‌ها را تحلیل کرد:

مثال: یافتن دوستان علی

SELECT p2.Name AS FriendName
FROM Person p1, FriendOf f, Person p2
WHERE MATCH(p1-(f)->p2)
  AND p1.Name = 'Ali';

ساختار داخلی Graph Tables   در Sql Server

  • Node Table:

    شامل ستون‌های تعریف‌شده‌ی کاربر + ستون سیستمی $node_id
  • Edge Table:

    شامل ستون‌های تعریف‌شده‌ی کاربر + ستون‌های سیستمی:
    • $edge_id

      شناسه یکتا برای یال
    • $from_id

      شناسه Node مبدأ
    • $to_id

      شناسه Node مقصد

این ستون‌های سیستمی توسط SQL Server مدیریت می‌شوند و کاربر نمی‌تواند آن‌ها را حذف کند.

 

حذف Graph Tables  در Sql Server

  • حذف Node Table

DROP TABLE Person;


این دستور جدول Person (به‌عنوان یک Node Table) را حذف می‌کند.

  • حذف Edge Table

DROP TABLE FriendOf;


این دستور جدول Edge Table را حذف می‌کند.

ترکیب داده‌های رابطه‌ای و گرافی

یکی از مزیت‌های SQL Server این است که می‌توان Graph Tables را با جداول رابطه‌ای معمولی ترکیب کرد.

مثلاً اگر جدولی به نام Orders داریم:

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    PersonID INT,
    Product NVARCHAR(50)
);


می‌توان بین Node Table (Person) و جدول Orders ارتباط برقرار کرد و کوئری‌های پیچیده نوشت:

SELECT p.Name, o.Product
FROM Person p
JOIN Orders o ON p.PersonID = o.PersonID;

کاربردهای Graph Tables در Sql Server

  • شبکه‌های اجتماعی (کاربران و ارتباط دوستانه)

  • تحلیل مسیرها (در حمل‌ونقل یا نقشه‌ها)

  • ساختارهای سازمانی (مدیران و زیردستان)

  • تحلیل شبکه‌های ارتباطی (ارتباطات تلفنی یا مالی)

  • توصیه‌گرها (کاربرانی که محصول مشابه خریده‌اند)

 

کاربردهای Graph Tables در Sql Server

محدودیت‌های Graph Tables در Sql Server

  • هر جدول فقط می‌تواند یا Node باشد یا Edge؛ ترکیبی وجود ندارد.
  • هنوز همه‌ی قابلیت‌های پیشرفته گرافی (مثل الگوریتم‌های shortest path) در SQL Server پیاده‌سازی نشده است.
  • نمی‌توان به‌طور مستقیم روی ستون‌های سیستمی تغییر ایجاد کرد.
  • برخی عملیات مثل TRUNCATE روی Edge Tables محدودیت دارند.

 

اسکریپت کامل نمونه

-- ایجاد Node Tables
CREATE TABLE Person (
    PersonID INT PRIMARY KEY,
    Name NVARCHAR(100),
    Age INT
) AS NODE;

CREATE TABLE Product (
    ProductID INT PRIMARY KEY,
    ProductName NVARCHAR(100)
) AS NODE;

-- ایجاد Edge Tables
CREATE TABLE FriendOf AS EDGE;
CREATE TABLE Bought AS EDGE;

-- درج داده در Node Table
INSERT INTO Person (PersonID, Name, Age)
VALUES (1, 'Ali', 25),
       (2, 'Sara', 22),
       (3, 'Reza', 30);

INSERT INTO Product (ProductID, ProductName)
VALUES (101, 'Laptop'),
       (102, 'Phone');

-- درج داده در Edge Table
INSERT INTO FriendOf ($from_id, $to_id)
VALUES (
    (SELECT $node_id FROM Person WHERE PersonID = 1),
    (SELECT $node_id FROM Person WHERE PersonID = 2)
);

INSERT INTO Bought ($from_id, $to_id)
VALUES (
    (SELECT $node_id FROM Person WHERE PersonID = 2),
    (SELECT $node_id FROM Product WHERE ProductID = 101)
);

-- Query: دوستان علی
SELECT p2.Name AS FriendName
FROM Person p1, FriendOf f, Person p2
WHERE MATCH(p1-(f)->p2)
  AND p1.Name = 'Ali';

-- Query: محصولات خریده‌شده توسط سارا
SELECT pr.ProductName
FROM Person p, Bought b, Product pr
WHERE MATCH(p-(b)->pr)
  AND p.Name = 'Sara';

-- حذف جداول
DROP TABLE FriendOf;
DROP TABLE Bought;
DROP TABLE Person;
DROP TABLE Product;

جمع‌بندی

قابلیت Graph Tables در SQL Server ابزاری ارزشمند برای مدیریت داده‌های رابطه‌ای پیچیده است.

با دستور CREATE TABLE … AS NODE جداول موجودیت‌ها (Node) ساخته می‌شوند.

با دستور CREATE TABLE … AS EDGE جداول ارتباطی (Edge) ایجاد می‌شوند.

ستون‌های سیستمی مثل $node_id, $from_id, $to_id به‌طور خودکار مدیریت می‌شوند.

با دستور MATCH می‌توان به راحتی روابط بین داده‌ها را تحلیل کرد.

برای حذف، کافی است از DROP TABLE استفاده شود.

این قابلیت برای تحلیل شبکه‌های اجتماعی، ساختارهای سازمانی و حتی سیستم‌های توصیه‌گر، بسیار کارآمد است.

دوره های مرتبط
آموزش Sql,آموزش sqlserver, آموزش جامع Sqlserver

آموزش پایگاه داده SqlServer

پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .

997,000 تومان

3.3k بازدید

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.