summaryrefslogtreecommitdiff
path: root/demos/blog-tutorial/protected/pages/Day2/id/CreateDB.page
diff options
context:
space:
mode:
Diffstat (limited to 'demos/blog-tutorial/protected/pages/Day2/id/CreateDB.page')
-rw-r--r--demos/blog-tutorial/protected/pages/Day2/id/CreateDB.page69
1 files changed, 69 insertions, 0 deletions
diff --git a/demos/blog-tutorial/protected/pages/Day2/id/CreateDB.page b/demos/blog-tutorial/protected/pages/Day2/id/CreateDB.page
new file mode 100644
index 00000000..30868268
--- /dev/null
+++ b/demos/blog-tutorial/protected/pages/Day2/id/CreateDB.page
@@ -0,0 +1,69 @@
+<com:TContent ID="Main">
+
+<h1>Membuat Database</h1>
+
+<p>
+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 <a href="http://www.pradosoft.com/demos/quickstart/?page=Database.DAO">database access object (DAO)</a> dan <a href="http://www.pradosoft.com/demos/quickstart/?page=Database.ActiveRecord">Rekaman Aktif</a>.
+</p>
+
+<p>
+Untuk keperluan tutorial, kita menyederhanakan kebutuhan sistem blog kita agar hanya perlu berhadapan dengan pengguna dan data tulisan. Selanjutnya kita membuat dua tabel database, <tt>users</tt> dan <tt>posts</tt>, seperti diperlihatkan dalam duagram hubungan entitas atau entity-relationship (ER) di bawah ini.
+</p>
+
+<img src="<%~ ER.gif %>" class="output" />
+
+<p>
+Kita menggunakan SQLite 3 database untuk menyimpan data kita. Pertama kita ubah diagram ER ke dalam pernyataan SQL berikut dan menyimpannya dalam file <tt>protected/schema.sql</tt>.
+</p>
+
+<com:TTextHighlighter CssClass="source" Language="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);
+</com:TTextHighlighter>
+
+<com:NoteBox>
+Batasan <tt>fk_author</tt> diabaikan oleh SQLite karena tidak mendukung <a href="http://www.sqlite.org/omitted.html">batasan kunci asing</a>. 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 <tt>posts.post_id</tt> adalah <a href="http://www.sqlite.org/autoinc.html">auto-incremental</a> jika kita menempatkan NULL untuk nilainya.
+</com:NoteBox>
+
+<p>
+Kemudian kita menggunakan <a href="http://www.sqlite.org/download.html">piranti baris perintah SQLite</a> untuk membuat SQLite database. Kita membuat sebuah direktori <tt>protected/data</tt> untuk menampung file database SQLite. Sekarang kita menjalankan perintah berikut di bawah direktori <tt>protected/data</tt>:
+</p>
+
+<com:TTextHighlighter CssClass="source cli">
+sqlite3 blog.db < ../schema.sql
+</com:TTextHighlighter>
+
+<p>
+Database sudah dibuat sebagai <tt>protected/data/blog.db</tt> dan kita akan melihat direktori dan file berikut:
+</p>
+
+<img src="<%~ directories.gif %>" class="output" />
+
+<com:NoteBox>
+SQLite memerlukan direktori <tt>protected/data</tt> dan file database <tt>protected/data/blog.db</tt> keduanya disetel agar bisa ditulisi oleh proses server Web.
+</com:NoteBox>
+
+</com:TContent> \ No newline at end of file