بهترین فرصت آموزش در جشنواره تخفیف های توسینسو بهترین فرصت آموزش در جشنواره تخفیف های توسینسو
مانده تا پایان تخفیف ها
مشاهده دوره ها
0

استفاده از فیلدهای یک جدول بدون کلید اصلی در SQL Server

سلام دوستان

یه سوال برام پیش اومده تو اسکیول سرور

 من مثلا 3 تا جدول دارم. توی جدول های اول و دوم هرکدام مثلا 10 تا فیلد دارم. توی جدول سوم مثلا میخوام از هرجدول 5 تا فیلد رو وارد کنم یا نمایش بدم. حالا جدول سوم   10  تا فیلد داره که 5تاش مال جدول اول و 5 تاش مال جدول دوم. خوب؟

سوال اینجاست که من مثلا فقط ستون اول جدول های 1 و 2 کلید اصلی هستش ، آیا اون 4 فیلد بعدی رو میشه بدون اینکه کلید اصلی باشن توی جدول سوم نشون بدیم ؟ یا باید حتما هر 5 تا فیلد رو تبدیل به کلید اصلی کنیم؟

پرسیده شده در 1400/05/12 توسط

5 پاسخ

0

ممنون بابت جواب دادنتون

من بطور مثال گفتم ، کلا برام سوال بود ، 

اگه باز میگم مثلا ، من idTable جدول یک رو داشته باشم ، فیلدهای دوم و سوم و چهارم  جدول سوم هم همنام همون فیلدهای جدول شماره 1 باشن، دیگه توی جدول سوم ، بصورت اتومات مقدار دهی میشن؟ البته به شرطی کاربر اون فیلدها رو تو جدول یک پر بکنه؟

پاسخ در 1400/05/12 توسط
1

اول : که بله باید هم همینطور باشه و اصولا جدول فقط یک کلید اصلی داره. چرا باید 5 تا داشته باشه ؟

همین که یه کلیدش تو جدول دیگه بیاد ، می تونه بقیه اون سطر رو نشون بده.


دوم : کلا درست نیست که شما کلی فیلد از یک جدول رو تو یه جدول دیگه بیارید ، این جوری دیتای زیادی نگه می دارید و ضمنا برای نگهداریشم به دردسر می خورید (با هر آپدیت جدول 1 یا 2  باید جدول 3 هم درست بشه). شما تو جدول 3 فقط دو ستون لازم دارید idtable1 و idtable2


سوم : اگه بحث فقط نمایش هست که باید برید سراغ view نه table که فضایی رو اشفال نکنه. این بار می تونید همه 10 تا ستون مد نظرتون رو بیارید تو view و باز هم لازم نیست همه کلید اصلی باشند.

پاسخ در 1400/05/12 توسط
0

پس چجوری پر میشه این فیلدها؟ یعنی کاربر باید هردو جدول رو خودش پر کنه؟


پاسخ در 1400/05/13 توسط
0

بالا که توضیح دادم ، این ساختار غلطه. ولی اگه بخواید بسازیدش ، دوراه دارید :

1-  تو برنامه خودتون مدیریتش کنید، یعنی کاربر که دیتا رو داد خودتون تو هر دو جدول بنویسید ( به کاربر که نمیشه گفت دوبار دیتا بزنه!!)

2- توی sql برای جدول 1 trigger بنویسید که اگه اتفاقی افتاد بره جدول 3 رو به روز کنه.


+++++

ولی کلا این کار به شدت غلطه ! شما باید دیتا رو توسط کلیدی که تو جدول 3 دارید ، برید از جدول 1 و 2 بخونید. نه اینکه کل دیتا رو تو جدول 3 کپی کنید. حالا برای اینکه اینکار خوندن ساده بشه ، برای پرکاربردها میایم و view می سازیم. که میشه مثل جدول روش select زد.


پاسخ در 1400/05/14 توسط
0

نه ، چیز اتوماتی وجود نداره. هم نام بودن فیلدهای دو جدول هیچ ارزشی نداره. حتی برای اون کلیدها شما foreign key دارید و الا اسمشون که مهم نیست.

پاسخ در 1400/05/13 توسط

پاسخ شما