- یکشنبه 26 مهر 1405 ساعت 08:00
- 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() را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.