اسکیما (Schema) توصیف ساختار و قواعد داده است. در دیتابیس رابطهای، تعریف جدولها، ستونها، نوع داده، Primary Key، Foreign Key و Constraint بخشهای اسکیما هستند. اسکیما به SQL محدود نیست. JSON اسکیما قرارداد داده ورودی API را توصیف میکند و GraphQL اسکیما انواع و عملیات مجاز API را مشخص میکند.
مثال اسکیما در MySQL
CREATE TABLE orders (
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
customer_id BIGINT UNSIGNED NOT NULL,
total DECIMAL(12,2) NOT NULL,
status VARCHAR(32) NOT NULL,
created_at TIMESTAMP NULL,
INDEX idx_customer (customer_id)
);
تغییر اسکیما با مایگریشن لاراول
Schema::table('orders', function (Blueprint $table) {
$table->string('tracking_code', 60)->nullable();
});
نمونه JSON اسکیما
{
"type": "object",
"required": ["product_id", "quantity"],
"properties": {
"product_id": {"type": "integer"},
"quantity": {"type": "integer", "minimum": 1}
}
}
اسکیما در GraphQL
type Product {
id: ID!
name: String!
price: Int!
}
type Query { product(id: ID!): Product }
در تغییر اسکیما باید سازگاری نسخههای قبلی برنامه و داده موجود بررسی شود. ستون جدید با NOT NULL بدون مقدار پیشفرض ممکن است روی رکوردهای قدیمی خطا ایجاد کند.
ادامه مطالعه: مایگریشن، دیتابیس، زبان پرسوجوی گرافکیوال و نرمالسازی دیتابیس.