عملگر تقسیم - نسخهی قابل چاپ |
عملگر تقسیم - zr2358 - 25 دى ۱۳۸۹ ۰۹:۴۳ ق.ظ
سلام میشه یکی لطف کنه و این دستورات رو که برای r/s هست رو دیکد کنه؟ خیلی پیچیده اس. اگه کسی بلده یه توضیحی روی این کد بده کد: (select A,B from r) |
عملگر تقسیم - bijibuji - 25 دى ۱۳۸۹ ۱۱:۱۳ ب.ظ
ببینید یکم پیچیده است آره، اما به ترجمه فارسی اش دقت کنید راحت می شه: A تقسیم بر B یعنی: تمامی رکوردهای جدول A رو درنظر بگیر و از اونها یه سری رکورد رو حذف کن کدوم رکوردها رو؟ اونهایی که با تک تک رکوردهای Bمتناظر نیستن. حالا چطوری این کارو می کنه؟ فرض کنید جدول A دو فیلد R و S داره و جدول B فقط یک فیلد S
A [R,S] / B [S] = A [R] - {(A [R] x B [S]) - A [R,S]} [R]
قسمت به قسمت، فرمول بالا رو می خوام بگم: ۱- A [R,S] / B [S]
صورت مسأله۲- A [R]
فیلد غیر مشترک ® بین دو جدول، حاوی همه رکوردهای موجود در جدول A۳- (A [R] x B [S])
تمامی حالات ممکن از ترکیب فیلد غیر مشترک در جدول A با فیلد مشترک در جدول B۴- A [R,S]
در این مرحله، کل رکوردهای (سطرهای) جدول A رو از مقدار محاسبه شده در مرحله قبل کم می کنیم. حاصل اش، یه سری رکورد هست که هر حالت ترکیب ممکن بین دو جدول است که در جدول A موجود نیستن. اینها رکوردهایی هستن که در در اونها R به ازای همه Sها ظاهر نشده۵- در مرحله آخر کافیه، این مقدار رو از کل رکوردهای جدول A کم کنیم و روی ستون غیر مشترک تصویر اش کنیم |
عملگر تقسیم - zr2358 - 26 دى ۱۳۸۹ ۱۲:۰۵ ق.ظ
خیلی ممنون بابت پاسختون مگه در تفریق نباید دو جدول سازگار باشند؟ A [R] - {(A [R] x B [S]) - A [R,S]} اینجا A[R] یک ستون R داره ولی جواب داخل آکولاد دو ستون R و S چرا؟ دوم اینکه قسمت * در کدهای بالا که نوشتم کجاست؟ |
عملگر تقسیم - bijibuji - 26 دى ۱۳۸۹ ۱۲:۴۱ ق.ظ
خواهش می کنم بله همینطوره و در اینجا هم این قاعده نقض نشده دقت کنید که بعد از اون ضرب و تفریق اش با a کل این جدول روی ستون R اش تصویر شده بعد از ستون R در جدول A کم شده ------------------ در پاسخ اولین سوال تون که این withها چه می کنند، باید گفت که اینها برای تخصیص نام جدید به حاصل پرس و جو هستند. ------------------ اون قسمتی هم که ستاره زدید یعنی: with r2 (A,B,C,D) as select * from r1,s برابر با این قسمته: ([A [R] x B [S]) |