PDA

View Full Version : Relation



rastinrastini
سه شنبه 17 آذر 1388, 14:32 عصر
به نام خدا
سلام به همه
می خواهم فیلدی به نام aa در جدول Table_1 کاری کنم که فقط مقادیری قبول کنه که در فیلدی به نام bb در جدول Table_2 هست چکار کنم؟
چه قیدی بکار ببرم به چه شکلی؟
من مبتدی هستم لطفا در صورت امکان کمی هم توضیح دهید.
موفق باشید.
خدانگهدار.

محمد سلیم آبادی
چهارشنبه 18 آذر 1388, 00:59 صبح
سلام دوست عزیز،
شما نیاز به قید کلید خارجی (foreign key constraint) دارین.
کد زیر را اجرا کنین


alter table Table_1
add constraint FK_aa
Foreign key (aa)
References Table_2 (bb)

rastinrastini
چهارشنبه 18 آذر 1388, 06:28 صبح
به نام خدا
سلام به همه
فیلد a در جدول Table_1 و b در جدول Table_2 کلید اصلی هستند.
موفق باشید.
خدانگهدار.

rastinrastini
پنج شنبه 19 آذر 1388, 16:31 عصر
به نام خدا
سلام به همه
این پیغام رو میده چیکار کنم؟
از SQL Server 2005 Developer استفاده می کنم.

Msg 1776, Level 16, State 0, Line 1

There are no primary or candidate keys in the referenced table 'Table_2' that match the

referencing column list in the foreign key 'FK_aa'.

Msg 1750, Level 16, State 0, Line 1

Could not create constraint. See previous errors.

موفق باشید.
خدانگهدار.

محمد سلیم آبادی
پنج شنبه 19 آذر 1388, 21:19 عصر
دوست عزیز،
این پیغام خطا به این معناست که ستون مرجع، کلید اصلی یا یکتا نیست. شما باید ستون جدول table_1 را به یک کلید اصلی از جدول table_2 مرتبط کنین.

rastinrastini
پنج شنبه 19 آذر 1388, 22:30 عصر
به نام خدا
سلام به همه
حالا به نظر شما با این شرایط که هیچکدوم از فیلدهای aa و bb کلید اصلی نیستند ولی فیلدهای a و b کلید اصلی هستند چکاری می تونم انجام بدم؟
موفق باشید.
خدانگهدار.

محمد سلیم آبادی
پنج شنبه 19 آذر 1388, 23:48 عصر
از نظر منطقی باید ستون aa به یک ستون unique مرتبط بشه. امکان داره بگید دقیقا چه مشکلی را می خواهین حل کنین.
با trigger هم میشه این نتیجه را بدست آورد ولی بازم منطقی نیست.

rastinrastini
جمعه 20 آذر 1388, 08:10 صبح
به نام خدا
سلام به همه
تشکر بابت کمکتون.
می گم من مبتدی هستم.
یعنی با unique میشه؟
خوب چطوری این کار رو بکنم و از unique استفاده کنم؟
می خوام در ستون bb مثلا اسم تیم های لیگ برتر وارد بشه و در aa اسم یک تیم لیگ برتری وارد بشه و چک کنه که در bb هست یا نه و اگر نبود قبول نکنه.
موفق باشید.
خدانگهدار.

محمد سلیم آبادی
جمعه 20 آذر 1388, 11:50 صبح
بهتر است در ستون aa کد تیم های لیگ برتر ذخیره بشه تا نام آن. اگر نام تیم ها منحصر بفرد است که می توانین یک قید unique روی این ستون بزارین ولی اگر ممکنه دو تیم دارای یک نام باشن این کار امکان پذیر نیست. مثلا استقلال (اهواز) و استقلال (تهران).
برای اینکه ستون bb منحصر بفرد باشد کد زیر را اجرا کنین.


alter table table_2
add constraint UQ_bb
unique (bb)


بعد از این به راحتی می توانین از کدی که در اولین پستم قرار دادم استفاده کنین.

rastinrastini
جمعه 20 آذر 1388, 12:51 عصر
به نام خدا
سلام به همه
واقعا تشکر بابت کمکتون.
خیلی کمکم کرد و مشکلم رو بسیار حل کرد.
موفق باشید.
خدانگهدار.

rastinrastini
جمعه 20 آذر 1388, 21:21 عصر
به نام خدا
سلام به همه
اسم فیلدهای جدول یک پایگاه داده رو فارسی نوشتم.مشکلی ایجاد نمی کنه؟
کجا ها رو اگر فارسی بنویسیم مشکل ایجاد می کنه؟
مثلا اسم کلید ها و جدولها و فیلدها اگر فارسی بنویسیم مشکلی ایجاد نمی کنه؟
موفق باشید.
خدانگهدار.