دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
کنترل radioButton در سی شارپ
1404/07/07 -
System View در SQL Server
1404/07/07 -
کنترل richTextBox در سی شارپ
1404/07/06 -
کنترل propertyGrid در سی شارپ
1404/07/05 -
Graph Tables در Sql Server
1404/07/04 -
File Tables در Sql Server
1404/07/03
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 مهم هستند؟
-
مدیریت سادهی روابط پیچیده بین دادهها
-
قابلیت Query ساده با MATCH
-
حفظ مزایای SQL Server (امنیت، تراکنشها، ایندکسها) در کنار مدل گرافی
-
ترکیب دادههای رابطهای و گرافی در یک محیط
ایجاد 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
- هر جدول فقط میتواند یا 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 استفاده شود.
این قابلیت برای تحلیل شبکههای اجتماعی، ساختارهای سازمانی و حتی سیستمهای توصیهگر، بسیار کارآمد است.
دوره های مرتبط

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