PDA

View Full Version : ذخیره عملیاتهای مختلف در یک جدول با تعیین نوع عملیات یا در چند جدول برای هر عملیات



tnlink
دوشنبه 24 شهریور 1393, 14:53 عصر
با سلام

من طراحی های زیادی انجام داده ام ولی راستش برای سوال زیر هنوز جواب درست درمانی نیافته ام
چند نوع عملیات مثلا مانند دریافت و پرداخت یا ورود و خروج و ... که در هر کدام یکی دو فیلد نسبت به دیگری تفاوت دارند را به کدامیک از روشهای زیر طراحی کنم
1- یک جدول کلی در نظر بگیریم با یک فیلد نوع عمل و داشتن کاملترین حالت فیلدها که در بعضی موارد بعضی فیلدهای آن پر می شود و در حالتهای دیگر فیلدهای دیگر
2- برای هر عملیات یک جدول در نظر بگیرم با فیلدهای خاص آن عملیات
من اکنون به صورت ساده و شسته رفته از روش دوم استفاده می کنم می خواهم بدانم کارم درست است و طراحی درست کدام است
ناگفته نماند اطلاعات برای این عملیاتها خیلی زیاد است

mohammad reza beizavi
دوشنبه 24 شهریور 1393, 15:37 عصر
درود بر شما
با توجه دانش بانک اطلاعاتی که دارید حتما می دونید که بهتره normalized database بهترین الگویی است که ترجیحا باید رعایت بشه، اما با توجه به تجربه هایی که به دست میاد و بازگشت به همون دانش بانک اطلاعاتی همیشه نمیشه بانک اطلاعاتی رو نرمال سازی کرد، یعنی اینکار در حین سرویس دهی بانک اطلاعاتی باعث کاهش سرعت و بهینگی در استفاده از منابع سخت افزاری مانند RAM و CPU خواهد شد. بر همین اساس ایده های unnormal database مطرح و پیاده سازی میشند.
یعنی با اینکه موجودیت های جداگانه ای وجود دارند که اطلاعات آنها در جداول خودشون ثبت میشه اما ترجیح بر این هست که به جای JOIN زدن این جداول (مخصوصا برای دیتابیس های با حجم بالای داده) Id و یا هر اطلاعات دیگه ای رو که لازمه به جدولی که می خوایم ازش کوئری بگیریم منتقل می کنیم. به اصطلاح با این کار افزونگی اطلاعات به وجود میاد و بانک اطلاعاتی Unnormal میشه.
اما بهینه سازی و سرعت کار بر برخی از مفاهیم غلبه می کنه و مفاهیم و قوانین جدیدی رو به وجود میاره.
حالا مسئله شما مسئله تمام طراحان بانک اطلاعاتیه، اینجور هم نیست که بشه با استناد به قوانین و استانداردها بشه گفت که طراحی شما درست هست یا نه.
پس بهتره با اینکار به شناخت و تجربه کار خودتون در کار با بانک اطلاعاتی مورد بحث رجوع کنید و خودتون رو درگیر مفاهیمی که اجرای استاندارد اونها باعث کاهش کاراریی سیستمتون میشه، نکنید.
پیروز باشید

tnlink
دوشنبه 24 شهریور 1393, 20:45 عصر
ممنون محمد جان
پس نظرت راجع به این موضوع چیه که با داده های تصادفی مثلا یک میلیون رکورد توی هر جدول قرار دهیم بعد با زدن join های مورد نیاز سیستم هر دو حالت را از نظر کارایی ارزیابی کنم

mahan.2002
سه شنبه 01 مهر 1393, 13:13 عصر
ممنون محمد جان
پس نظرت راجع به این موضوع چیه که با داده های تصادفی مثلا یک میلیون رکورد توی هر جدول قرار دهیم بعد با زدن join های مورد نیاز سیستم هر دو حالت را از نظر کارایی ارزیابی کنم

با سلام
دوست عزیز این بسته به نوع تراکنش هایی داره که شما میخواهید بر روی بانکتون اجرا کنید.. شما باید تجزیه تحلیل کنید چه نوع تراکنش هایی بیشتر برا روی بانکتون اجرا میشه و به این ترتیب ببینید ..
جدایی اطلاعاتون میتونه بیشتر بر روی کارایی برانامتون تاثیرر بزاره یا اینکه جمع داده هاتون .. در یک جدول ..

mohammad reza beizavi صحبت هایی ایشون هم درست است نباید به استاندارد هایی نرمال سازی بسنده کرد ... و بگویم چون نرمال هست .. پس حتما برنامه ما کاراست .. و بهینه..
بشتر بحث نرمال سازی به بحث افزونگی داده ها و همچنین صحت و درستی داده ها بحث داره ... ولی کارائی و بهینگی بحث جدایی داره که همون طور که ایشون گفت نباید به استناد به استاندارد بودن با قوانین نرمال سازی بهینگی بانک رو فدا و قربانی نرمال بودن بانک کرد ..
موفق باشید.