Membuat Database

Banyak aplikasi Web menggunakan database untuk memelihara datanya. Sistem blog kita tidak terkecuali. Dalam bagian ini, kami akan menjelaskan bagaimana untuk menulis halaman kendali-database untuk sistem blog kita. Kita akan menggunakan teknik termasuk database access object (DAO) dan Rekaman Aktif.

Untuk keperluan tutorial, kita menyederhanakan kebutuhan sistem blog kita agar hanya perlu berhadapan dengan pengguna dan data tulisan. Selanjutnya kita membuat dua tabel database, users dan posts, seperti diperlihatkan dalam duagram hubungan entitas atau entity-relationship (ER) di bawah ini.

Kita menggunakan SQLite 3 database untuk menyimpan data kita. Pertama kita ubah diagram ER ke dalam pernyataan SQL berikut dan menyimpannya dalam file protected/schema.sql.

/* buat tabel pengguna */ CREATE TABLE users ( username VARCHAR(128) NOT NULL PRIMARY KEY, email VARCHAR(128) NOT NULL, password VARCHAR(128) NOT NULL, /* dalam teks biasa */ role INTEGER NOT NULL, /* 0: pengguna normal, 1: administrator */ first_name VARCHAR(128), last_name VARCHAR(128) ); /* buat tabel tulisan */ CREATE TABLE posts ( post_id INTEGER NOT NULL PRIMARY KEY, author_id VARCHAR(128) NOT NULL CONSTRAINT fk_author REFERENCES users(username), create_time INTEGER NOT NULL, /* cap waktu UNIX */ title VARCHAR(256) NOT NULL, /* judul tulisan */ content TEXT, /* badan tulisan */ status INTEGER NOT NULL /* 0: diterbitkan; 1: draft; 2: ditunda; 2: ditolak */ ); /* sisipkan beberapa rekaman data awal untuk pengujian */ INSERT INTO users VALUES ('admin', 'admin@example.com', 'demo', 1, 'Qiang', 'Xue'); INSERT INTO users VALUES ('demo', 'demo@example.com', 'demo', 0, 'Wei', 'Zhuo'); INSERT INTO posts VALUES (NULL, 'admin', 1175708482, 'first post', 'this is my first post', 0); Batasan fk_author diabaikan oleh SQLite karena tidak mendukung batasan kunci asing. Meskipun demikian, kita masih memelihara batasan di sana untuk kemampuan pemindahan sistem blog kita ke DBMS yang berbeda. Juga, dalam contoh di atas kita mengeksploitasi bukti bahwa field posts.post_id adalah auto-incremental jika kita menempatkan NULL untuk nilainya.

Kemudian kita menggunakan piranti baris perintah SQLite untuk membuat SQLite database. Kita membuat sebuah direktori protected/data untuk menampung file database SQLite. Sekarang kita menjalankan perintah berikut di bawah direktori protected/data:

sqlite3 blog.db < ../schema.sql

Database sudah dibuat sebagai protected/data/blog.db dan kita akan melihat direktori dan file berikut:

SQLite memerlukan direktori protected/data dan file database protected/data/blog.db keduanya disetel agar bisa ditulisi oleh proses server Web.