نقل قول نوشته شده توسط c0mmander مشاهده تاپیک
یعنی با این نظرتون اصل و اساس و اصول طراحی پاییگاه داده و مهندسی پاییگاه داده رو زیر سوال بردید!

طراحی اصولی پاییگاه داده مثل تمام بخش های دیگه نرم افزار مثل طراحی ساختمان داده های مورد نیاز (حتی در برنامه های شئ گرا)، طراحی واحد های اجرایی ، طراحی پل های رابط ، و غیر از بنیادی ترین اصول طراحی نرم افزار استاندارده. و بازم هم از اصولی ترین و پاییه ای ترین اصول طراحی پاییگاه داده رابطه ای ایجاد index ها , fk , pk ها صحیح و بجا داشتن جداول رابطه ای متعدد برای جلو گیری از افزونگیه. حالا کاری ندارم که در پروژه های سنگین تریگر کردن و این موارد هم مورد نیاز میشن.

و باز هم در پروژه های استاندارد با طراحی درست پاییگاه داده از مشکلات امنیتی احتمالی و حتی افزونگی داده ها کاملا جلو گیری میشه.

با این دید شما که دیتا بیس حکم گونی داره و فقط باید همین طوری پرش کرد بعدا پردازش کرد به هیچ عنوان نمیتونید برنامه مورد اعتماد درست کنید. برنامه به هر دلیلی ممکنه دچار مشکل بشه باگ داشته بشه یا به n + 1 دلیل دیگه نتونه تمام شرایط ممکن برای جلوگیری از افزونگی رو رعایت کنه بعدش با این تفکر مشتری بی نوا باید مجددا مزاحتون بشه که داده هایی که باعث خرابی شده رو درست کنید که در این شرایط شما یا باید از داده ها صرفه نظر کنید یا تغییراتی بدید. که اگر این تغییرات یکی دوتا باشه خوب شاید بگید مشکلی نیست اما در خیلی از موارد فقط به یکی دو مورد ختم نمیشه!

مورد بعدی هم Unit test هست من از تست واحد زیاد استفاده میکنم از تست های عملکردی برای ارتباط ها با وبسرویس ها تا بررسی ساختارهای mvvm اما ارتباط ش رو unique کردن دیتابیس رابطه ای متوجه نشدم! (البته من از .net mvc استفاده نمیکنم)

در کل توصیه میکنم بجای خراب کردن طراحی پاییگاه داده از مدیریت استثنا درست در برنامه استفاده کنید.
من هم مشکلی با طراحی بانک داده ندارم ولی صرفا در حد همون pk ، fk ، index ، Relation و موضوع افزونگی که شما خیلی روش تاکید دارید(که صد البته موضوع مهمی هست). ساختار بانک داده باید به درستی تعریف بشه وگرنه داستان خشت اول کج گذاشتن هست. ولی نباید بیشتر از این از بانک داده انتظار داشته باشید.
یکی از بدترین چیزهای که میتونه برای یک برنامه وجود داشته باشه وجود تریگر هست. توصیه میکنم شما هم دور تریگر توی دیتابیس رو خط بکشید. چون به شدت کار عیب یابی و رفع خطا رو زیاد میکنه.

در ضمن دوست عزیز. این دیتابیسی شما دارید اینجور سنگش رو به سینه میزنید در حال منسوخ شدن هست. پروژه های بزرگ توی دنیا دارن از مفهومی به نام NoSql استفاده میکنن. چون وجود اینهمه index و relation و .... باعث کند شدن عملیات در داده های بزرگ میشه. به نظر من این دیتابیس هایی که ما داریم استفاده میکنیم بیشتر برای پروژه های خانگی به درد میخوره تا پروژه های بزرگ.

در آخر من باز هم شما رو به تقوا و تغییر دیدگاه در مورد روش برنامه نویسی دعوت میکنم. باشد که رستگار شوید.