قوانین نامگذاری در دیتابیس ها

امیرحسین بیگدلو 1 سال قبل

نحوه نامگذاری جداول و ستون های یک پایگاه داده عملیاتی حساس و مهم است و باید با دقت انجام شود. برای اینکه طراحان در انتخاب نام مناسب دچار اشتباه نشوند باید از قوانین نامگذاری (naming convention) استفاده کنند. قوانین نامگذاری مجموعه ای از قوانین نانوشته است که اگر می خواهید خوانایی کل مدل داده را افزایش دهید باید از آنها استفاده کنید. امروز، من سعی خواهم کرد توضیح دهم که چگونه باید قوانین نامگذاری خود را فرموله کنید و، شاید مهمتر از آن، چرا باید این کار را انجام دهید و به طور کلی استفاده از آن چه فایده ای دارد.

 شما این قوانین را هنگام نامگذاری هر چیزی در پایگاه داده اعمال خواهید کرد - جداول، ستون ها، کلیدهای اصلی و خارجی، توابع و غیره. البته، می توانید تصمیم بگیرید که فقط قوانین نامگذاری را برای جداول و نام ستون ها تنظیم کنید. این بخش کاملا بستگی به شما دارد. همچنین استفاده از قوانین نامگذاری اجباری نیست و میتوانید از آنها استفاده نکنید.

ما از مدل داده پایین در این مقاله استفاده خواهیم کرد:

قوانین نامگذاری در پایگاه داده

در این مقاله در مورد خود داده ها صحبت نمی کنیم، بلکه در مورد اشیاء پایگاه داده و نحوه نامگذاری آنها صحبت خواهیم کرد.

دوره پیشنهادی: دوره آموزش طراحی دیتابیس

# چرا باید از قوانین نامگذاری استفاده کنیم؟

شاید مهمترین دلیل استفاده از آن ساده کردن زندگی برای خودتان باشد. پایگاه های داده به ندرت دارای تعداد کمی جدول هستند. معمولاً صدها جدول خواهید داشت و اگر نمی‌خواهید آشفتگی کامل داشته باشید، باید از برخی قوانین سازمانی پیروی کنید. یکی از این قوانین، اعمال یک قرارداد نامگذاری است. خوانایی کلی مدل را افزایش می دهد و زمان کمتری را برای یافتن آنچه نیاز دارید صرف خواهید کرد. همچنین، پرس و جو از پایگاه داده INFORMATION_SCHEMA در جستجوی الگوهای خاص بسیار ساده تر خواهد بود - به عنوان مثال، بررسی اینکه آیا همه جداول دارای ویژگی کلید اصلی به نام "id" هستند یا خیر. آیا رویه ذخیره شده ای داریم که برای هر جدول یک درج و غیره انجام می دهد؟

اگر این دلایل کافی نبودند، یک دلیل خوب دیگر نیز وجود دارد. پایگاه داده باید برای مدت طولانی زنده بماند. از تغییرات در سطح پایگاه داده معمولاً اجتناب می شود و فقط در صورت لزوم انجام می شود. دلیل اصلی این است که اگر نام شی پایگاه داده را تغییر دهید، می تواند بر بسیاری از مکان های کد شما تأثیر بگذارد. از سوی دیگر، کد می تواند در طول زمان تغییر کند، شاید حتی زبان مورد استفاده برای نوشتن کد را تغییر دهید اما پایگاه داده، کم و بیش، بسیار شبیه به نسخه اولیه خود باقی بماند. اگر از ابتدا بهترین شیوه ها را اعمال کنید و در هنگام اضافه کردن اشیاء جدید به استفاده از آنها ادامه دهید، ساختار پایگاه داده منسجمی خواهید داشت که کار کردن با آن راحت است.

یک دلیل دیگر برای استفاده از قوانین نامگذاری این است که احتمالا شما تنها کسی نخواهید بود که با پایگاه داده کار می کند. اگر خوانا باشد، هرکسی که وارد پروژه می شود به راحتی میتواند بفهمد که داده ها کجا هستند و چگونه با یکدیگر کار میکنند. این امر به ویژه اگر از رایج ترین قوانین نامگذاری استفاده می کنید، بیشتر خواهد بود. اگر چیزی خاص برای پایگاه داده خود دارید، می توانید تمام موارد استثنا را در یک سند کوتاه فهرست کنید.

دوره پیشنهادی: دوره آموزش دیتابیس پستگرس

# نامگذاری جداول

نکته: هنگام نامگذاری اشیاء پایگاه داده از حروف کوچک (lower letters) استفاده کنید. برای جدا کردن کلمات در نام شی پایگاه داده، از خط زیر (underscore ـ) استفاده کنید.

هنگام نامگذاری جداول، دو گزینه دارید - استفاده از حالت مفرد (singular) برای نام جدول یا استفاده از جمع (plural). پیشنهاد من این است که همیشه نام ها را به صورت مفرد انتخاب کنید.

اگر در حال نام گذاری موجودیت‌هایی هستید که نشان دهنده حقایق دنیای واقعی هستند، باید از اسم ها استفاده کنید. مثلا جداولی مانند employee و customer و city و country هستند. در صورت امکان، از یک کلمه استفاده کنید که دقیقاً آنچه در جدول است را توصیف کند. در مثال های ما، کاملا واضح است که چه داده هایی را می توان در این جداول یافت.

نکته: برای نام جدول از مفرد استفاده کنید (مثلا user یا role) و نه جمع (مثلا users و roles). جمع ممکن است بعداً به نام‌های جدول عجیب و غریب منجر شود مثلا به جای user_has_role ممکن است users_have_roles داشته باشید.

اگر برای توصیف آنچه در جدول وجود دارد نیاز به استفاده از بیش از 1 کلمه دارید، این کار را انجام دهید. در پایگاه داده ما، یکی از این نمونه ها جدول call_outcome است. ما نمی‌توانیم فقط از call برای نام جدول استفاده کنیم، زیرا از قبل جدولی با این نام را در پایگاه داده داریم. از سوی دیگر، استفاده از کلمه outcome به وضوح آنچه در جدول است را توصیف نمی کند، بنابراین استفاده از call_outcome به عنوان نام جدول انتخاب خوبی به نظر می رسد.

برای روابط بین دو جدول، خوب است از نام این دو جدول استفاده کنید و شاید یک فعل بین این نام‌ها اضافه کنید تا مشخص کنید نوع رابطه چیست.

تصور کنید که ما جدول های کاربر و نقش را داریم. می‌خواهیم یک رابطه چند به چند اضافه کنیم که به ما می‌گوید یک کاربر نقش خاصی دارد. می‌توانیم از نام‌های user_has_role یا اگر می‌خواهیم کوتاه‌تر باشد از user_role استفاده کنیم.

اگر نیاز باشد همیشه می‌توانیم استثنا قائل شویم. مثلا اگر جداول محصول و فاکتور داشته باشیم و بخواهیم مشخص کنیم که کدام محصولات در کدام فاکتور بوده است، می توانیم آن جدول را invoice_product یا invoice_contains_product نامگذاری کنیم. با این حال، استفاده از نام invoice_item بسیار به دنیای واقعی نزدیک‌تر است. با این حال، این تصمیم کاملا به شما بستگی دارد.

 

# نامگذاری ستون ها

من قوانین نامگذاری برای ستون ها را در چند دسته جدا می کنم:

1. کلیدهای اصلی: شما معمولا باید تنها یک ستون داشته باشید که به عنوان کلید اصلی (primary key) کار می کند. بهترین کار این است که به سادگی نام این ستون را id بگذارید.

2. کلیدهای خارجی: از آنجایی که کلیدهای خارجی (Foreign key) مقادیری را از کلید اصلی جدول ارجاع شده ذخیره می کنند، باید از نام جدول و "id" استفاده کنید، به عنوان مثال. customer_id یا id_customer یا employee_id یا id_employee. این نحوه نامگذاری به ما می گوید که این یک ستون کلید خارجی است و همچنین به جدول مرجع اشاره می کند.

3. ستون های معمولی: اینها ستون هایی هستند که داده های دنیای واقعی را ذخیره می کنند. قوانین مشابهی که هنگام نامگذاری جداول استفاده می شود را می توان اعمال کرد. شما باید از حداقل کلمات ممکن برای توصیف آنچه در آن ستون ذخیره شده است استفاده کنید، به عنوان مثال، country_name، country_code، customer_name.

4. تاریخ ها: برای تاریخ ها، خوب است توضیح دهید که تاریخ چه چیزی را نشان می دهد. نام هایی مانند start_date و end_date بسیار توصیفی هستند. اگر بخواهید، می‌توانید با استفاده از نام‌هایی مانند call_start_date و call_end_date، آنها را دقیق‌تر توصیف کنید.

5. پرچم ها: اگر میخواهید بررسی کنید که اقدامی انجام شده یا نه میتوانید از پرچم ها (flags) استفاده کنید. مثلا  می توانیم از نام هایی مانند is_active یا is_deleted استفاده کنیم.

 

# نتیجه گیری

استفاده از قوانین نامگذاری الزامی نیست، اما بسیار توصیه میشود. اعمال قوانینی که برای طراحی پایگاه داده تعیین کرده اید نه تنها به شما بلکه به سایر افرادی که با پایگاه داده کار می کنند نیز کمک خواهد کرد. بنابراین، من پیشنهاد می کنم که از آن استفاده کنید و پایگاه داده را تا جایی که می توانید سازماندهی کنید.

مطالب مشابه



مونگارد