• 3.1.9
  • کامل شده
  • منقضی شده
این داکیومنت از طرف توسعه‌دهنده ساپورت نمی‌شود، جدیدترین ورژن داکیومنت بزودی ترجمه خواهد شد.

Database Metadata اطلاعات ساختاری دیتابیس را در اختیار برنامه قرار می‌دهد. از آن برای بررسی وجود جدول یا ستون، دریافت نام فیلدها، نوع داده، طول و سایر ویژگی‌های ساختار استفاده می‌شود.

ساختار و API اصلی

list_tables() نام جدول‌ها را برمی‌گرداند، table_exists() وجود جدول را بررسی می‌کند، list_fields() فهرست ستون‌ها را می‌دهد، field_exists() وجود یک ستون را بررسی می‌کند و field_data() جزئیات ساختاری ستون‌ها را برمی‌گرداند.

نمونه استفاده

 $tables = $this->db->list_tables();
 if ($this->db->table_exists('orders')) {
     $fields = $this->db->field_data('orders');
     foreach ($fields as $field) {
         echo $field->name . ' : ' . $field->type;
     }
 }

نکته مهم

Metadata برای ابزارهای مدیریتی و Migration مفید است، اما در هر درخواست وب همه جدول‌ها را اسکن نکنید. ساختار موردنیاز برنامه را در زمان Deploy بررسی کنید.

مطالعه مرتبط

برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.

متدهای Metadata

متد یا مفهومکاربرد
list_tables()نام جدول‌ها.
table_exists()بررسی وجود جدول.
list_fields()نام ستون‌ها.
field_exists()بررسی وجود ستون.
field_data()نوع، طول و ویژگی ستون.
platform() و version()نام و نسخه Driver.

نکات عملی برای دیتابیس

پیش از استفاده در محیط واقعی، Driver و نسخه موتور دیتابیس را با قابلیت‌های موردنیاز تطبیق دهید. Queryهای دارای ورودی کاربر باید Binding داشته باشند، عملیات چندمرحله‌ای باید در Transaction قرار بگیرند و برای Queryهای پرتکرار، Index و Execution Plan بررسی شود. تعداد Queryها و حجم Result نیز روی حافظه و زمان پاسخ اثر دارد.

برای عیب‌یابی، SQL تولیدشده، تعداد ردیف‌های متاثر و زمان اجرا را در محیط توسعه ثبت کنید. در Production اطلاعات محرمانه را از Log حذف کنید و خطاهای دیتابیس را به کاربر نشان ندهید. اگر ساختار جدول تغییر می‌کند، تغییر را نسخه‌بندی و پیش از اجرا Backup بگیرید.

در بازبینی کد، ترتیب و نتیجه متدهای list_tables()، table_exists()، list_fields()، field_exists() را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

سایر پست های داکیومنت