PDA

View Full Version : حرفه ای: نحوه unique کردن یک ستون در دو جدول جداگانه



shahin_mahvareh
چهارشنبه 01 مهر 1394, 12:13 عصر
سلام .من میخوام یک فیلد رو در دو جدول جداگانه unique کنم.
به فرض مثال ما یک جدول داریم مربوط به اطلاعات کاربر میشه به شکل زیر:


psswd

email

UniqueAddress_Unique

ID_PK










یه جدول دیگه داریم مربوط میشه به اطلاعات صفحه ها به شکل زیر:


Content

Pagetitle

UniqueAddress_Unique

ID_PK










حالا ما یک صفحه طراحی میکنیم که وقتی تو آدرس بار میزینیم www.example.com/uniqueaddress اگر صفحه مربوط به page ها باشه محتویات page رو نشون بده و اگه مربوط به اطلاعات کار بر بود اطلاعات کاربر را نمایش بده.برای این کار نیاز هست که هر دو فیلد مربوط به uniqueaddress در دو جدول مجزا unique باشه. خوب اولین راهی که به نظر میرسه اینکه یه جدول جداگانه بسازیم اسمش رو بگذاریم uniqueadress به شکل زیر:


Page or user

Userid or pageid_ FK

UniqueAddress_unique

ID_PK



P or U

1

UniqueAddress

1




حالا این جدول به صورت کلید خارجی میتونه به یوزر و یا صفحه مورد نظر اشاره کنه اما مشکل اینجاست که رکورد ها در این جدول گاهی مربوط به جدول یوز هستند و گاهی مربوط به جدول page و ما نمیتونیم از یک فیلد به دو فیلد در دو جدول relationship بزنیم.مثلا در این مثلا ما در جدول uniqueAdress ما یک فیلد داریم که در اون شماره آیدی کاربر یا صفحه دخیره میشه و به اون کاربر و یا صفحه مورد نظر اشاره میکنه اما معلوم نیست که اشماره ای که داره شاره میکنه کاربره یا صفحه هست خوب واسه اینکه بفهمیم صفحه هست سا کاربر امیدیم یه فید دیگه اضافه کردیم که توی اون یا مقدار P قرار میگیره یا مقدار U که اگه مقدار U داشت یعنی اون رکورد مربوط میشه به User و اگر مقدار P داشت اون رکورد مربوط میشه به Page.اما با این کار دیگه خبری از relationship زدن و اتصال برقرار کردن به id یوزر , id نیست.

راه دیگه ای که به ذهنم میرسید این بود:


UserID_FK

PageID_FK

UniqueAddress_Unique

ID_PK










در جدول بالا اگر رکورد ثبت شده مربوط به یوز ها باشد id آن در فیلد UserID ذخیره میشود ولی اگر مربوط به جدول page ها باشد id آن در PageID ذخیره می شود و به راحتی می توان فیلد های PageID و UserID را به فیلد ID در جدول page و User به صورت جداگانه اتصال داد(relation زد). ضفف این مورد هم این است که کلی فیلد خالی در جدول ما باقی خواهد ماند و استاندارد نیست.

بهترین راه حل چیست؟آیا میتوان بدون ساخت جدول دیگر و تنها با ساخت یک view که این فیلد ها را با هم merge یا ادقام کرد که در کنار هم یکتا باشند؟اگر میشود چگونه؟ و اگر راه مناسب تر و استانداردی سراغ دارید به بنده معرفی کنید ممنون میشم.با تشکر.