اسکریپت لیست جداول Graph در یک دیتابیس SQL Server
اسکریپت لیست جداول Graph در یک دیتابیس SQL شامل Node و Edge هستند. با بررسی ویژگیهای سیستمی، نوع و نام این جداول مشخص میشود.
07 آبان 1405
لینک کوتاه
اسکریپت لیست جداول Graph در یک دیتابیس SQL Server
در SQL Server، قابلیت Graph Database برای مدلسازی ارتباط میان موجودیتها و ذخیره روابط بین دادهها استفاده میشود.این قابلیت به توسعهدهندگان اجازه میدهد اطلاعات مرتبط را بهصورت شبکهای از گرهها (Node) و یالها (Edge) مدیریت کنند.
برای مثال، در یک شبکه اجتماعی، کاربران میتوانند گره باشند و ارتباط دوستی میان آنها بهصورت یال ذخیره شود.
هنگام کار با دیتابیسهایی که از قابلیت Graph استفاده میکنند، ممکن است لازم باشد تمام جداول Graph موجود در یک دیتابیس را شناسایی کنیم. این کار در بررسی ساختار دیتابیس، مستندسازی، تحلیل روابط و نگهداری سیستم کاربرد دارد.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
جداول Graph در SQL Server چه هستند؟
جداول Graph در SQL Server به دو گروه اصلی تقسیم میشوند:-
Node Table
برای ذخیره موجودیتها استفاده میشود؛ مانند کاربران، محصولات، کارمندان یا حسابهای بانکی. -
Edge Table
برای ذخیره ارتباط میان موجودیتها استفاده میشود؛ مانند رابطه دوستی کاربران، ارتباط میان سفارش و محصول یا رابطه مدیریتی میان کارمندان.
برای نمونه، جدول کاربران را میتوان به شکل زیر ایجاد کرد:
CREATE TABLE dbo.Users
(
UserName NVARCHAR(100),
City NVARCHAR(100)
) AS NODE;
در این مثال، جدول Users یک جدول Node است؛ زیرا موجودیتهای کاربران را نگهداری میکند.
برای تعریف ارتباط میان کاربران نیز میتوان یک جدول Edge ایجاد کرد:
CREATE TABLE dbo.Friendships
(
FriendshipType NVARCHAR(50)
) AS EDGE;
جدول Friendships برای نگهداری روابط میان گرهها طراحی شده است.
البته ایجاد این دو جدول صرفاً یک نمونه آموزشی است و برای ثبت روابط واقعی باید دادههای Graph نیز به شکل صحیح درج شوند.
اسکریپت لیست جداول Graph در دیتابیس
برای شناسایی جداول Graph در SQL Server، میتوان از نمای سیستمی sys.tables استفاده کرد.این نما اطلاعات مربوط به جداول دیتابیس جاری را در اختیار ما قرار میدهد.
ستون is_node مشخص میکند که یک جدول از نوع Node است یا خیر و ستون is_edge برای تشخیص جدول Edge کاربرد دارد.
اسکریپت زیر تمام جداول Graph موجود در دیتابیس جاری را فهرست میکند:
SELECT
SCHEMA_NAME(schema_id) AS SchemaName,
name AS TableName,
CASE
WHEN is_node = 1 THEN N'Node'
WHEN is_edge = 1 THEN N'Edge'
ELSE N'Unknown'
END AS GraphTableType
FROM sys.tables
WHERE is_node = 1
OR is_edge = 1
ORDER BY
GraphTableType,
SchemaName,
TableName;
بررسی عملکرد اسکریپت
در این اسکریپت، ابتدا اطلاعات جداول از نمای سیستمی sys.tables خوانده میشود.سپس با استفاده از تابع SCHEMA_NAME، نام Schema مربوط به هر جدول استخراج میشود.
این موضوع اهمیت دارد؛ زیرا ممکن است چند جدول با نام یکسان در Schemaهای متفاوت وجود داشته باشند.
ستون TableName نام جدول را نمایش میدهد.
در بخش CASE نیز نوع جدول بررسی میشود. اگر مقدار is_node برابر یک باشد، جدول از نوع Node خواهد بود.
اگر مقدار is_edge برابر یک باشد، نوع جدول Edge نمایش داده میشود.
در نهایت، شرط WHERE باعث میشود فقط جداول Graph در خروجی قرار بگیرند و جداول معمولی دیتابیس نمایش داده نشوند.
نمونه خروجی اسکریپت
فرض کنید دیتابیس شما دارای دو جدول Node و دو جدول Edge باشد.خروجی اسکریپت میتواند به شکل زیر باشد:
SchemaName TableName GraphTableType
dbo Users Node
dbo Products Node
dbo Friendships Edge
dbo ProductRelations Edge
این خروجی صرفاً نمونه است و نام جداول واقعی به ساختار دیتابیس شما بستگی دارد.
با مشاهده ستون GraphTableType میتوان بهسرعت متوجه شد که هر جدول برای ذخیره موجودیتها استفاده میشود یا برای نگهداری ارتباط میان آنها.
اسکریپت نمایش فقط جداول Node
گاهی اوقات هدف ما بررسی تمام جداول Graph نیست و فقط میخواهیم جداولی را پیدا کنیم که بهعنوان Node تعریف شدهاند.در این شرایط، میتوانیم شرط WHERE را محدودتر کنیم:
SELECT
SCHEMA_NAME(schema_id) AS SchemaName,
name AS TableName
FROM sys.tables
WHERE is_node = 1
ORDER BY
SchemaName,
TableName;
این اسکریپت فقط جدولهای Node را نمایش میدهد.
برای مثال، اگر در دیتابیس یک سیستم فروشگاهی جداولی مانند Customers، Products و Orders بهعنوان Node تعریف شده باشند، نام آنها در خروجی ظاهر میشود.
البته صرفاً نام جدول مشخص نمیکند که چه دادههایی در آن وجود دارد؛ برای شناخت دقیقتر باید ساختار ستونها و کاربرد هر جدول نیز بررسی شود.
اسکریپت نمایش فقط جداول Edge
برای شناسایی جدولهایی که روابط میان گرهها را ذخیره میکنند، میتوان از اسکریپت زیر استفاده کرد:SELECT
SCHEMA_NAME(schema_id) AS SchemaName,
name AS TableName
FROM sys.tables
WHERE is_edge = 1
ORDER BY
SchemaName,
TableName;
در این حالت، فقط جداول Edge نمایش داده میشوند.
این گزارش در دیتابیسهایی که ارتباطات متعددی دارند، مفید است. برای نمونه، در یک سامانه سازمانی ممکن است روابط میان کارمندان، واحدهای سازمانی و مدیران در جداول Edge تعریف شده باشند.
با تهیه فهرست این جداول میتوان ساختار ارتباطی دیتابیس را بهتر بررسی کرد.
نمایش تعداد جداول Node و Edge
یکی دیگر از گزارشهای کاربردی، شمارش تعداد جداول Node و Edge در دیتابیس است.این اطلاعات هنگام بررسی اولیه ساختار یک دیتابیس یا تهیه مستندات فنی مفید هستند.
اسکریپت زیر تعداد هر نوع جدول را محاسبه میکند:
SELECT
CASE
WHEN is_node = 1 THEN N'Node'
WHEN is_edge = 1 THEN N'Edge'
END AS GraphTableType,
COUNT(*) AS TableCount
FROM sys.tables
WHERE is_node = 1
OR is_edge = 1
GROUP BY
is_node,
is_edge;
در خروجی، تعداد جداول هر نوع بهصورت جداگانه نمایش داده میشود. اگر دیتابیس فاقد جداول Graph باشد، نتیجهای برای نمایش وجود نخواهد داشت.
چرا تهیه فهرست جداول Graph اهمیت دارد؟
شناسایی جداول Graph در پروژههای بزرگ میتواند زمان بررسی ساختار دیتابیس را کاهش دهد.هنگامی که چندین Schema و تعداد زیادی جدول وجود داشته باشد، پیدا کردن دستی جداول Node و Edge دشوار خواهد شد.
با اجرای اسکریپت، میتوان یک گزارش منظم از این جداول تهیه کرد و از آن در مستندسازی دیتابیس، بررسی وابستگیها و تحلیل معماری نرمافزار بهره برد.
این گزارش همچنین هنگام انتقال پروژه به محیط جدید یا بررسی یک دیتابیس قدیمی کاربرد دارد.
توسعهدهنده میتواند پیش از انجام تغییرات، تصویری اولیه از ساختار Graph به دست آورد و تشخیص دهد کدام جداول در مدلسازی روابط نقش دارند.
البته فهرست جداول بهتنهایی برای بازسازی کامل ساختار Graph کافی نیست؛ زیرا برای درک ارتباطات واقعی باید دادههای جداول Edge و اطلاعات مربوط به گرههای متصل به آنها نیز بررسی شوند.




کاربران ما
شما هم نظرتون با ما دریاره “اسکریپت لیست جداول Graph در یک دیتابیس SQL Server” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید