- سهشنبه 28 مهر 1405 ساعت 00:00
- 3.1.9
- کامل شده
- منقضی شده
Database Forge مجموعه متدهایی برای ساخت و تغییر ساختار دیتابیس فراهم میکند. از آن میتوان برای ایجاد جدول، افزودن یا تغییر ستون، تعریف کلید اصلی و خارجی و حذف یا تغییر نام جدول استفاده کرد. این کلاس برای Migrationهای ساده یا ابزارهای نصب کاربرد دارد.
ساختار و API اصلی
create_database() و drop_database() دیتابیس را ایجاد یا حذف میکنند. add_field() ستون تعریف میکند، add_key() کلید میسازد، create_table() جدول را ایجاد میکند، drop_table() حذف میکند و modify_column() ساختار ستون را تغییر میدهد.
نمونه استفاده
$this->load->dbforge();
$fields = array(
'id' => array('type' => 'INT', 'constraint' => 11, 'auto_increment' => TRUE),
'name' => array('type' => 'VARCHAR', 'constraint' => 120)
);
$this->dbforge->add_field($fields);
$this->dbforge->add_key('id', TRUE);
$this->dbforge->create_table('brands', TRUE);نکته مهم
تغییر Schema در Production باید نسخهبندی و قابل بازگشت باشد. پیش از حذف یا تغییر ستون، Backup بگیرید و وابستگیهای برنامه را بررسی کنید.
مطالعه مرتبط
برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.
متدهای Database Forge
| متد یا مفهوم | کاربرد |
|---|---|
add_field() | تعریف ستونها. |
add_key() | تعریف Primary یا Index Key. |
create_table() | ساخت جدول. |
drop_table() | حذف جدول. |
modify_column() | تغییر تعریف ستون. |
rename_table() | تغییر نام جدول. |
create_database() و drop_database() | ایجاد یا حذف دیتابیس. |
نکات عملی برای دیتابیس
پیش از استفاده در محیط واقعی، Driver و نسخه موتور دیتابیس را با قابلیتهای موردنیاز تطبیق دهید. Queryهای دارای ورودی کاربر باید Binding داشته باشند، عملیات چندمرحلهای باید در Transaction قرار بگیرند و برای Queryهای پرتکرار، Index و Execution Plan بررسی شود. تعداد Queryها و حجم Result نیز روی حافظه و زمان پاسخ اثر دارد.
برای عیبیابی، SQL تولیدشده، تعداد ردیفهای متاثر و زمان اجرا را در محیط توسعه ثبت کنید. در Production اطلاعات محرمانه را از Log حذف کنید و خطاهای دیتابیس را به کاربر نشان ندهید. اگر ساختار جدول تغییر میکند، تغییر را نسخهبندی و پیش از اجرا Backup بگیرید.
در بازبینی کد، ترتیب و نتیجه متدهای add_field()، add_key()، create_table()، drop_table() را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.