soal raje be sql

morTeza_CS

New Member
اگه درست طراحی کرده باشید ، یعنی P.K و F.K رو رعایت کرده باشید از گزینه Diagrams می تونی این کار رو بکنی .
موفق باشی
 

TNZ187

Member
یه سوال .

سلام
می خواستم بدونم با زدن گزینه Diagram دقیقا چه اتفاقی می افته ؟ یعنی در واقع این گزینه کاری هم انجام می ده ؟ یا اصلا مگه ارتباط یک به چند صرف تعریف F.K برقرار نمی شه ؟ یعنی ارتباط های Sql نمود خارجی هم دارند ؟ :sad:
با تشکر .
 

morTeza_CS

New Member
با استفاده از F.K فقط یه ارتباط ساده بوجود می آد که تو بعضی از Query ها (Join) جواب میده(بعضی وقتها هم جواب نمیده)
ولی با استفاده از Relation شما خیلی امکانات دیگه هم بدست می آرید .مثلاً تنظیم می کنید که وقتی فیلد پدر (P.K) در جدول 1 تغییر کرد ، همین فیلد در جدول 2 که F.K هست نیز تغییر کنه .یا وقتی رکوردی در جدول 1 حذف شد تمام رکوردهای مربوط به آن رکورد در جدول 2 نیز پاک شود .با این روش فیلد یتیم بوجود نمی آد .یا یه امکان دیگش Index ها هستند یا گزاشتن محدودیت برای بعضی از فیلدها که مقدار نا معتبر دریافت نکنند یا ...
با استفاده از این امکانات شما بسیاری از خطاهای برنامه رو در سطح دیتا بیس حل می کنید و نیازی به کد نویسی در سطح برنامه نیست .
اگه توضیح کامل تری هم لازمه بگو تا بدم ...
 

TNZ187

Member
شرمنده ....

سلام
خیلی ممنون که از جواب دادن خسته نمی شید.
تا اون جا که من می دونم به هنگام تعریف F.K می شه گفت که به هنگام Update,Delete در مورد فیلد والد چه اتفاقی برای فرزند بیفته . مثل
کد:
ALTER TABLE tbl ADD CONSTRAINT consname FOREIGN KEY tnz (row) REFRENCES dest(row) ON DELETE cascading ON Update

خوب حالا که F.K این امکانات رو به ما می ده ، دیگه Relation چی کار می کنه ؟ ( راستی اصلا Relation مگه همون F.K نیست ؟)
توی SQL برای تعریف Relation از F.k استفاده می کنند . ( البته من این طور فکر می کنم :sad: ) . یعنی توی مفاهیم TSQL ما چیزی به عنوان Relation هم داریم ؟ اگه داریم یه ذره توضیح بدید ( البته لطفا اگه زحمتی نیست :))
 

morTeza_CS

New Member
حق با شماست هنگام ایجاد یک relation ما میتوانید مشخص کنیم که هنگام Update و Delete چه اتفاقی بیفتد. آپشن هایی که در SQL Server 2005 وجود دارد بیشتر از SQL 2000 می باشد.
ما در T-SQL چیزی به نام Relation نداریم همان Reference یا ایجاد FK به منظور ایجاد Relation می باشد. اگر ما فقط با SQL Server کار میکردیم شاید دیگر کلمه Relation هم وجود نداشت. این کلمه از بخش طراحی دیتابیس به RDBMS ها راه پیدا کرده است.
و اما پاسخ سوالت در مورد : دیگه Relation چه کار میکنه؟
یکی از قوانین دیتابیس به Data Integrity معروف است که برای خودش چند مرحله داره. یکی از این مراحل اسمش Referential Integrity است و میگوید در جدوال ما نباید رکورد Orphan (یتیم) داشته باشیم. RDBMS ها ابزار های مختلفی برای پیاده سازی قوانین Data Integrity دارند که برای Referential Integrity در SQL Server دو راه وجود دارد:

1- استفاده از Relation ها یا همون Fk ها
2- استفاده از Trigger جهت جلوگیری از Orphan شدن رکورد ها در جدول فرزند.

که از هر دو شیوه استفاده میشه و هنوز منسوخ نشده است.
 

TNZ187

Member
Set Null

سلام
از جواب کاملتون ممنون . ولی یه سوال دیگه .
با توجه به فرمایشات شما ، گزینه Set Null در مورد On Delete و On Update با Data Integrity مشکل پیدا می کنه ؟
 

جدیدترین ارسال ها

بالا