اسکریپت لیست جداول با بیشترین ارتباطات (Relationship)
اسکریپت SQL Server برای شناسایی جداول با بیشترین ارتباطات ورودی و خروجی، بررسی وابستگیها و تحلیل ساختار دیتابیس.
19 مهر 1405
لینک کوتاه
اسکریپت لیست جداول با بیشترین ارتباطات (Relationship) در SQL Server
در طراحی پایگاه داده، ارتباط بین جداول یکی از مهمترین بخشهای ساختار اطلاعات است.در SQL Server، این ارتباطات معمولاً با استفاده از کلیدهای خارجی (Foreign Key) تعریف میشوند و مشخص میکنند که اطلاعات یک جدول چگونه به اطلاعات جدول دیگر وابسته است.
در پایگاههای داده بزرگ، بعضی جداول با تعداد زیادی جدول دیگر ارتباط دارند.
شناسایی این جداول به مدیران پایگاه داده و توسعهدهندگان کمک میکند ساختار دیتابیس را بهتر بشناسند، وابستگیهای اطلاعاتی را بررسی کنند و هنگام بهینهسازی یا تغییر ساختار جداول، تصمیمهای دقیقتری بگیرند.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
چرا شناسایی جداول با بیشترین ارتباطات مهم است؟
جدولی که ارتباطات زیادی با سایر جداول دارد، ممکن است نقش مهمی در ساختار پایگاه داده ایفا کند.برای مثال، جدول مشتریان در یک سیستم فروشگاهی میتواند با جدول سفارشها، پرداختها، آدرسها و اطلاعات تماس ارتباط داشته باشد.
شناسایی چنین جدولهایی کاربردهای مختلفی دارد:
-
تحلیل ساختار دیتابیس
درک بهتر ارتباطات و وابستگیهای بین جداول. -
برنامهریزی برای تغییرات
بررسی تأثیر تغییر ساختار یک جدول بر سایر بخشها. -
بررسی وابستگیها
شناسایی جدولهایی که حذف یا تغییر آنها ممکن است مشکلاتی ایجاد کند. -
مستندسازی پایگاه داده
تهیه گزارشی از جدولهای مهم و ارتباطات آنها. -
بررسی معماری سیستم
شناخت جدولهایی که در بخشهای مختلف برنامه مورد استفاده قرار میگیرند.
اسکریپت لیست جداول با بیشترین ارتباطات
اسکریپت زیر از اطلاعات سیستمی SQL Server استفاده میکند و تعداد ارتباطات کلید خارجی هر جدول را محاسبه میکند.در این گزارش، ارتباطات ورودی و خروجی بهصورت جداگانه نمایش داده میشوند.
SELECT
SCHEMA_NAME(t.schema_id) AS SchemaName,
t.name AS TableName,
COUNT(DISTINCT
CASE
WHEN fk.referenced_object_id = t.object_id
THEN fk.object_id
END
) AS IncomingRelationships,
COUNT(DISTINCT
CASE
WHEN fk.parent_object_id = t.object_id
THEN fk.object_id
END
) AS OutgoingRelationships,
COUNT(DISTINCT fk.object_id) AS TotalRelationships
FROM sys.tables AS t
LEFT JOIN sys.foreign_keys AS fk
ON fk.parent_object_id = t.object_id
OR fk.referenced_object_id = t.object_id
GROUP BY
t.object_id,
t.schema_id,
t.name
ORDER BY
TotalRelationships DESC,
SchemaName,
TableName;
بررسی بخشهای اسکریپت لیست جداول با بیشترین ارتباطات
1. استفاده از sys.tables
نمای sys.tables اطلاعات جدولهای موجود در دیتابیس فعلی را در اختیار ما قرار میدهد.با استفاده از این نما میتوان نام جدولها و شناسه آنها را دریافت کرد.
2. استفاده از sys.foreign_keys
نمای سیستمی sys.foreign_keys اطلاعات مربوط به محدودیتهای کلید خارجی را نگهداری میکند.این اطلاعات مشخص میکنند هر کلید خارجی از کدام جدول شروع شده و به کدام جدول ارجاع میدهد.
3. محاسبه ارتباطات ورودی
ستون IncomingRelationships تعداد کلیدهای خارجیای را نشان میدهد که به جدول موردنظر ارجاع میدهند.برای مثال، اگر جدول Customers توسط جدولهای Orders و Addresses ارجاع داده شود، تعداد ارتباطات ورودی آن میتواند برابر با ۲ باشد.
4. محاسبه ارتباطات خروجی
ستون OutgoingRelationships تعداد کلیدهای خارجی تعریفشده در جدول موردنظر را محاسبه میکند؛ یعنی ارتباطاتی که این جدول از طریق کلید خارجی با جدولهای دیگر برقرار کرده است.برای نمونه، اگر جدول Orders دارای کلید خارجی به جدولهای Customers و PaymentMethods باشد، دو ارتباط خروجی خواهد داشت.
5. محاسبه مجموع ارتباطات
ستون TotalRelationships مجموع تعداد ارتباطات ورودی و خروجی را نمایش میدهد.استفاده از COUNT(DISTINCT ...) کمک میکند هر محدودیت کلید خارجی فقط یک بار در شمارش لحاظ شود.
در پایان، نتایج براساس تعداد کل ارتباطات بهصورت نزولی مرتب میشوند تا جدولهای دارای بیشترین ارتباط در ابتدای گزارش قرار بگیرند.
نکته مهم درباره تفسیر نتایج
این اسکریپت ارتباطات تعریفشده با کلید خارجی را بررسی میکند.اگر در برنامه ارتباطی بین دو جدول وجود داشته باشد اما این ارتباط با FOREIGN KEY در دیتابیس تعریف نشده باشد، اسکریپت آن را شناسایی نمیکند.
همچنین، این گزارش تعداد محدودیتهای کلید خارجی را میشمارد، نه تعداد تمام مسیرهای ممکن بین جدولها. برای تحلیل دقیقتر، بهتر است نتایج را در کنار ساختار دیتابیس و منطق برنامه بررسی کنید.
جمعبندی
شناسایی جداول با بیشترین ارتباطات در SQL Server راهی کاربردی برای شناخت ساختار پایگاه داده و بررسی وابستگیهای میان جدولها است. اسکریپت ارائهشده با استفاده از نماهای سیستمی، ارتباطات ورودی و خروجی هر جدول را محاسبه میکند و جدولها را براساس مجموع ارتباطات مرتب میسازد.این گزارش میتواند هنگام مستندسازی دیتابیس، بررسی وابستگیها، برنامهریزی برای تغییرات ساختاری و تحلیل معماری سیستم مفید باشد. بااینحال، تعداد ارتباطات باید در کنار نقش جدول، نوع روابط و نیازهای واقعی برنامه ارزیابی شود.




کاربران ما
شما هم نظرتون با ما دریاره “اسکریپت لیست جداول با بیشترین ارتباطات (Relationship)” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید