در این پروژه که وبلاگی مبتنی بر معماری رِست است از سه جدول مختلف استفاده خواهیم کرد که به ترتیب برای ذخیرهسازی «لیستِ کاربران»، «دستهبندیها» و «مقالات» مورد استفاده قرار خواهند گرفت. برای شروع، در محیط PhpMyAdmin دیتابیسی تحت عنوان rest-api-blog
با استفاده از دستور زیر میسازیم:
CREATE DATABASE rest-api-blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
سپس نیاز به ساخت جدولی تحت عنوان users
با اِسکمای زیر داریم:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| first_name | varchar(255) | NO | | NULL | |
| last_name | varchar(255) | NO | | NULL | |
| email | varchar(255) | NO | | NULL | |
| password | varchar(255) | NO | | NULL | |
| salt | int(11) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
برای ساخت چنین جدولی، میتوانیم از کدهای زیر استفاده نماییم:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`salt` int(11) NOT NULL
);
در حال حاضر هیچ گونه دیتایی داخل این جدول نریخته بلکه در ادامهٔ آموزشها این کار را از طریق ایپیآی انجام خواهیم داد. در ادامه، نوبت به ساخت جدولی تحت عنوان categories
به منظور ذخیرهسازی دستهبندی مقالات وبلاگ میرسد به طوری که اِسکمای این جدول به صورت زیر است:
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| category_name | varchar(255) | NO | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
در همین راستا، به سادگی میتوان کدهای اسکیوال زیر را اجرا کرده و این جدول را ساخت:
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`category_name` varchar(255) NOT NULL
);
سپس یک دیتای اولیه با استفاد از دستور زیر وارد این جدول میکنیم:
INSERT INTO `categories` (`id`, `category_name`) VALUES (1, 'Linux'), (2, 'PHP');
برای مقالات نیز نیاز به جدولی با اِسکمای زیر خواهیم داشت:
+-------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | | NULL | |
| category_id | int(11) | NO | | NULL | |
| title | varchar(255) | NO | | NULL | |
| content | text | NO | | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | |
+-------------+--------------+------+-----+-------------------+----------------+
که با استفاده از کدهای اسکیوال زیر میتوان آن را ساخت:
CREATE TABLE IF NOT EXISTS `articles` (
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`category_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`content`text NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
سپس دیتایی اولیه با استفاده از کدهای زیر برای جدول مقالات درج میکنیم:
INSERT INTO `articles` (`user_id`, `category_id`, `title`, `content`) VALUES
(1, 1, 'What Is Linux?', 'Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution.'),
(1, 2, 'What Is PHP?', 'PHP: Hypertext Preprocessor is a general-purpose programming language originally designed for web development. It was originally created by Rasmus Lerdorf in 1994; the PHP reference implementation is now produced by The PHP Group.');
در این مرحله از آموزش به دیتای کافی به منظور اِعمال عملیات CRUD دسترسی داریم و در فصول آتی خواهیم دید که به چه میتوان این کار را انجام داد (جهت آشنایی بیشتر با زبان اسکیوال، میتوانید به دورهٔ آموزش SQL و MySQL در سکان آکادمی مراجعه نمایید.)