PDA

View Full Version : چند موجودیت مختلف و یوزنیم و پسورد آنها



hercules_3d
پنج شنبه 25 بهمن 1386, 21:12 عصر
سلام
فرض کنید من تو دیتابیسم چند تا شخص مختلف دارم که فیلدهای مربوط به هر کدومشون خیلی با هم تفاوت دارن و نمیشه همه رو یه موجودیت گرفت. تنهافیلد مشترک بینشون یوزرنیم و پسورده. حلا برای وارد شدن این کاربرا یا باید فیلد یوزر نیم و پسور تو هر جدولی وجود داشته باشه و یوزرنیم این افراد از لحاظ ساختار با هم تقاوت داشته باشه که هر ساختاری مشخص کننده ی نوع موجودیته که بعد تعیین اون بایستی برای صحیح بودن یوزرنیم و پسورد داخل جدول مربوط به اون موجودیت رو سرچ کرد. مثلا برای یه کارمند ساختار یوزنیمش اینجوری باشه e11111 که از e میشه فهمید طرف کارمنده نه مدیر. یا اینکه تمام یوزر نیم پسور دا توی جدول جدا به همراه یه فیلد جهت تعین هویتشون نگهداری شه که در این صورت نیاز به تعین یه ساختار خاص برای یوزر نیم افراد نیستیم مثلا یوزنیم همون کاربر باشه 11111 که بعد سرچ تو جدوله یوزرنیما میشه فهمید که طرف کارمنده. بعد یه رابطه یک به یکم بین این جدول یوزرنیم و جداول اشخاص مختلف برقرا باشه.
به نظرتون کدوم بهتره؟
مثلا موجودیتامم مدیر؛ کارمندساده؛ حسابدار و ....

reza_rad
دوشنبه 29 بهمن 1386, 13:17 عصر
دوست عزیز به جای این همه پیچیده کردن قضیه. یک جدول یوزر بگیرید که اطلاعات عمومی که برای تمام یوزر ها هست در اون ذخیره بشه. اعم از User name و password و ...
بسته به نوع یوزر شما یعنی مدیر - کارمند ساده و ... می تونید دو ساختار متفاوت داشته باشید:
اگه این ساختارها استاتیک هستند یعنی در آینده نوع کاربر جدید اضافه نمیشه یا تغییر نمی کنه برای هر نوع کاربر یک جدول بسازید که مشخصات خاص اون نوع رو داشته باشه و در عین حال یک فیلد هم داشته باشه که به جدول اصلی یوزر ها مرتبط باشه.
ولی اگه این ساختارها داینامیک هستند کلا ساختار باید تغییر کنه.

hercules_3d
شنبه 04 اسفند 1386, 20:40 عصر
خوب حالا فرض کنیم که همه ی یوزر نیم پسوردا رو یهجا نگه می داریم
می خوام یه همچین ساختاری پیاده سازی کنم ولی نمی دونم چه طور!
دیتابیس طوری باشه که اول رکوردای مربوط به کارمند و دیگر اعضا توی جداوله مربوطشان وارد شه بعد یوزرنیم و پسوردشون توی جدول یوزرنیم و پسورد وارد شه. یعنی یه جورایی جدولی که توش یوزرنیم پسورد نگه داشته میشه چند تا جدوله parent داشته باشه!اوه
یعنی اگه یوزرنیم و پسورد کارمند x قراره توی جدوله یوزرنیم و پسورد وارد شه رکورد مربوط به مشخصات اون کارمند توی جدول مربوط به کارمند قبلا وارد شده باشه. همچنین یه شرایطی مثل این برای موجودیت های دیگه ای مثل کارمند
اصلا میشه یه همچین چیزی؟
من قبلا می خواستم جدوله یوزرنیم و پسورد رو بکنم parent و primary key اونو به عنوان foreign key بزرام تو تیبله کارمندا و رییس و .... . با اینکار انگاری یه رابطه ی یک به یک با صفر بین جدوله یوزرنیم و پسورد و جدولای دیگه ایجاد میشه. خوب با این کار مجبورم اول یوزرنیم پسورد رو توی جدوله parent وارد کنم بعد مشخصات رو توی جدولای دیگه. خوب این حالت یه جوری میشه نه؟ برای همین می خوام این رابطه رو برعکس کنم مثل همونی که بالا توضیح دادم.
اما نمی دونم چه طوری؟

reza_rad
سه شنبه 07 اسفند 1386, 07:46 صبح
من قبلا می خواستم جدوله یوزرنیم و پسورد رو بکنم parent و primary key اونو به عنوان foreign key بزرام تو تیبله کارمندا و رییس و .... . با اینکار انگاری یه رابطه ی یک به یک با صفر بین جدوله یوزرنیم و پسورد و جدولای دیگه ایجاد میشه. خوب با این کار مجبورم اول یوزرنیم پسورد رو توی جدوله parent وارد کنم بعد مشخصات رو توی جدولای دیگه. خوب این حالت یه جوری میشه نه؟
اتفاقا همین کار درست هست!
شما باید یوزر نیم و پسورد رو در یک جدول بگذاری اول. مسلما هر کسی که مشخصاتش ثبت میشه یک شماره پرسنلی هم داره حالا چه کارمند چه مدیر و ... اون هم توی همین جدول باشه. تمام مواردی که برای همه یکسان هست توی این جدول باشه و حالا کلید اصلی این جدول در جدولهای دیگه وارد بشه.