نمایش relationship جداول در sql
سلام به همه اساتید گرامی
دوستان من یه برنامه دارم وقتی دیتابیس پر میشه خطای پرشدن دیتابیس میده یه برنامه نوشتم که کار تخلیه دیتابیس رو انجام میده یعنی در واقع برای این کار از دستور truncate استفاده کرده ام ولی چون دو جدولی که رکوردهاش تخلیه میشه باهم ارتباط دارند با خطا مواجه میشه من قبل هرچیز میخام رابطه های جدول رو بیبینم بعد میخام رابطه بین جداول بعد از حذف رکوردها حفظ بشه ممنون میشم کامل منو راهنمایی کنید ، اول از همه لطف کنید راهنمایی کنید که چطور رابطه بین جداول رو ببینم ؟ بعد این که چطوری میشه این روابط رو به query تبدیل کرد که بعدا این query رو اجرا کنیم تا رابطه بین جداول حفظ بشه ، ممنون میشم راهنمایی کنید
2 پاسخ
اگر از ابزارهای دیگه ای مثل dbForge و.. استفاده نکنید بهترین راه برا دیدن ارتباطات جداول استفاده از Database Diagram خود sql هستش. بعدش هم که میتونید از روی دیاگرام تولید Create Table متناظرش رو انجام بدید.
سلام به شما دوست عزیز.
برای این که بتونید لیست ارتباطات رو به دست بیارید باید بتونید لیست کلید های خارجی و همچنین جداولی که این کلید خارجی رو دارند به دست بیارید. برای این کار باید کوئری زیر رو اجرا کنید.
SELECT
fk.name 'FK Name',
tp.name 'Parent table',
cp.name, cp.column_id,
tr.name 'Refrenced table',
cr.name, cr.column_id
FROM
sys.foreign_keys fk
INNER JOIN
sys.tables tp ON fk.parent_object_id = tp.object_id
INNER JOIN
sys.tables tr ON fk.referenced_object_id = tr.object_id
INNER JOIN
sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN
sys.columns cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id
INNER JOIN
sys.columns cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id
ORDER BY
tp.name, cp.column_id