پایگاه داده
طراحی و مدل‌سازی > بحث اجرایی و تخصصی

در زمینه ساخت بانک اطلاعاتی برخی کدنویسان غیرمتخصص هستند که در آغاز زندگی حرفه‌ای خود بدون آشنایی ساختاری با پایه‌های سرور بانک اطلاعاتی اقدام به ساخت جداول یا حتی ایجاد ارتباطات بین جدولی می‌کنند (relations یا RDBMS). در طراحی بانک اطلاعاتی چند بحث ثابت همیشه مطرح است از جمله نرمال‌سازی (اجتناب از تکرار برای صرفه‌جویی در حجم)، نانرمال‌سازی (تلاش برای تکرار برای افزایش سرعت)، آشنایی با indexing یا مرتب‌سازی هدفمند بر اساس حروف شامل کلاسترد ایندکس (تقریباً همان PKs) و ایندکس‌های دوم با مبحث لوک‌آپ دوم (برای مثال ایندکس نام پس از یافتن به کلاستردایندکس ردیف خودش که معمولاً PK است مراجعه می‌کند تا ردیف را استخراج کند) و بحث‌هایی مانند B-tree که برخی به اشتباه آن را با درخت باینری اشتباه می‌گیرند اما در واقع درخت خود-متعادل‌شونده است بدان معنی که خود سرور بر اساس تعداد ردیف‌های جدول اطلاعاتی تصمیم می‌گیرد که تا چند مرحله ایندکس‌ها را دسته دسته کند تا بتواند با مقایسه مقدار مورد جستجو در سریع‌ترین زمان ممکن به داده‌های ردیف مورد نظر برسد. سطوح مختلف این دسته‌بندی‌ها به سه گونه گره ریشه یا روت (تنها دسته‌بندی آغازین)، گره‌های شاخه با برنچ (میانی) و گره‌های برگ یا لیفز که به لیف پیجز شناخته‌می‌شوند (پایانی) وجود دارند. از جمله مباحث مهم افزایش کارایی بانک اطلاعاتی ایجاد ایندکس‌های ترکیبی یا کامپوزیت متناسب با نوع جستجو است که در زمان ایجاد ارتباطات بین جداول از اهمیت مهمی برخوردار است. در بین تمام این مباحث در برخی سرورها مانند مای‌اس‌کیوال اینکه از چه نوع موتور اطلاعاتی MyISAM یا InnoDB استفاده شود از اولین سوالات است زیرا اولی نماینده سرعت در ثبت اطلاعات است (معمولاً بایگانی) و دومی نماینده تعادل در سرعت هم ثبت و هم خواندن به این دلیل در اولی در زمان ثبت داده کل جدول را قفل می‌کند و با عنوان غیر تراکنشی یا غیر ترزاکشن شناخته می‌شود در حالی که دومی برعکس است و ردیف‌ها را قفل می‌کند.
معمولاً فرایند طراحی بانک اطلاعاتی پس از مرحله طوفان فکر یا مغز آغاز می‌شود که مرحله طراحی مدل نیز ممکن است در همان محیطی انجام شود که برای طوفان فکر استفاده شده مانند MS Visio اما معمولاً پس از قطعی شدن تصمیمات دربارهٔ ساختار پروژه، مرحله مدل‌کشی و طراحی پایگاه داده مستقیم در استودیوهای طراحی بانک اطلاعاتی مانند MySQL Workbench یا SQL server management studio انجام می‌شود از این رو چه پروژه تحت RUP یا اجیل اجرا شود تغییرات می‌تواند بلافاصله در مدل اصلی اعمال شود.
طراحی پایگاه باید به گونه‌ای باشد که از پیش با نحوه عملکرد لایه میانی مدل بانک اطلاعاتی روی برنامه استفاده‌کننده هماهنگ باشد (گاهی برعکس برنامه بر اساس بانک اطلاعاتی موجود ساخته می‌شود اما نه زمانی پایگاه داده مختص پروژه در حال طراحی است) برای مثال بسته به میزان وسعت پروژه و تعداد کاربران ممکن است از لایه الگوی نقشه‌کشی داده (Datamapper) با سرعت بالاتر برای پروژه‌های عظیم‌تر نسبت به الگوی ثبت کنشور (AR) که از سرعت‌پایین‌تری برخوردار است استفاده شود حتی در مواردی ممکن است امکان استفاده از هیچ‌گونه لایه ORM وجود نداشته باشد برای مثال به خاطر مسائل امنیتی هر گونه تراکنش بانک اطلاعاتی بواسطه procedureها و روتین‌های از پیش‌نوشته شده ایمن انجام شود و اجازه افزودن یا ویرایش روی سرور بانک اطلاعاتی برای کاربران سرور وجود نداشته باشد. اکثراً توصیه شده است که از AR برای پروژه‌هایی که کاربران بسیار دارند استفاده نشود در عوض دیتامپر گزینه بهتر است. در مبحث بانک‌های اطلاعاتی از عبارت دومین یا دامنه برای امور کاملاً متفاوتی استفاده می‌شود یکی از آن‌ها لایه دومین در تضاد با لایه بیزینس[مشکوک ] در دیتامپر است که یکی لایه کنترل‌کننده ثبت و ویرایش و بررسی ریلیشن داده‌هاست و دیگری لایه مدل‌سازی در برنامه که از لایه اول استفاده می‌کند.