Bowo Prasetyo Teknik Pemodelan Database Agile untuk Struktur dan Konten yang Berubah Seiring Waktu
8 Desember 2011 http://www.scribd.com/prazjp http://www.slideshare.net/bowoprasetyo
Anchor Modeling
Teknik pemodelan database agile yang cocok untuk informasi yang berubah seiring waktu baik struktur maupun konten-nya. Berbasis pada empat konstruksi permodelan: anchor, attribute, tie dan knot. Hasilnya dapat diterjemahkan ke desain relational database, di mana hampir semua tabelnya akan berada pada bentuk sixth normal form (6NF).
Model berevolusi secara non-destructive. Menghindari nilai null. Informasi bebas dari redundancy. Isu performa akibat join berlebih.
Anchor
Anchor adalah model untuk entitas dan event. Dilambangkan dengan bujur sangkar penuh. Konvensi penamaan: AD_AnchorDescription
AD: mnemonic dengan dua huruf besar. AnchorDescription: deskripsi dengan huruf
Attribute
Attribute adalah model untuk properti dari anchor. Dilambangkan dengan lingkaran kosong. Perubahan informasi atribut dapat dibuatkan sejarah, dilambangkan dengan outline ganda. Konvensi penamaan:
AD_ATD_AnchorDescription_AttributeDescripti on
ATD: mnemonic dengan tiga huruf besar. AttributeDescription: deskripsi dengan huruf
Tie
Tie adalah model untuk hubungan antar anchor. Dilambangkan dengan belah ketupat penuh. Perubahan informasi tie dapat dibuatkan sejarah, dilambangkan dengan outline ganda. Konvensi penamaan: A1_role1_A2_role2
A1/2: mnemonic anchor 1/2 role1/2: peran anchor 1/2, kata pertama adalah
Knot
Knot adalah model untuk properti bersama, mis. gender, state. Dilambangkan dengan bujur sangkar kosong. Konvensi penamaan: KND_KnotDescription
KND: mnemonic dengan tiga huruf besar. KnotDescription: deskripsi dengan huruf besar
Online Resources
http://www.anchormodeling.com/?page_id=186
Contoh
Peringatan
Contoh aplikasi HelloEnterprise ini memiliki beberapa aspek yang tidak baik, antara lain:
Mengakses database langsung dari halaman JSP yang seharusnya hanya untuk tampilan.
Seharusnya mengakses database dari komponen domain atau model pada pola MVC (modelview-controller) atau PM (presentationmodel).
Database Pengguna
Password
Anchor Model
Dua anchor: US_User, GR_Group Satu attribute: US_PWD_User_Password Satu tie: US_belongs_GR_to
Realm JDBC GlassFish mensyaratkan database pengguna memiliki struktur seperti berikut*) .
*) Lihat tutorial Mengamankan Aplikasi Java EE 6 Mengamankan Komponen Web dengan Realm Keamanan JDBC dan Otentikasi Berbasis Form
Penyesuaian Database
Usertable US_User
Grouptable US_belongs_GR_to
CREATE TABLE gr_group ( GR_ID varchar(64) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (GR_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `us_belongs_gr_to` ADD CONSTRAINT us_belongs_gr_to_ibfk_2 FOREIGN KEY (GR_ID) REFERENCES gr_group (GR_ID), ADD CONSTRAINT us_belongs_gr_to_ibfk_1 FOREIGN KEY (US_ID) REFERENCES us_user (US_ID);
Hello user!
Perubahan Database 1
Perubahan Struktur
HelloEnterprise akan dimodifikasi untuk menampilkan nama lengkap dan jenis kelamin user, seperti berikut: Hello Bapak/Ibu Nama Lengkap
Bapak: kalau jenis kelamin lelaki Ibu: kalau jenis kelamin perempuan
Penambahan Properti
Name dan sex. Berarti anchor US_User mendapat dua attribute baru yang sesuai. Male dan female. Berarti untuk attribute terkait sex dapat dibuatkan knot.
Anchor Model
US_NAM_User_Name, US_SEX_User_Sex
dan SEX_Sex
Mengakses Database
Mengakses database dari JSP dapat menggunakan JSTL (JSP Standard Tag Library), dengan cara:
Membuat referensi ke JDBC resource di deployment descriptor standar (web.xml). Mengakses database dengan taglib JSTL <sql:query>. Menampilkan hasilnya dengan taglib JSTL <c:out>.
Referensi JDBC
Jalankan Netbeans, buka modul web HelloEnterprise-war*). Di Projects Explorer, buka node Web Pages WEB-INF. Buka file web.xml, klik tab References. Buka node Resource References, klik Add... Isi field seperti halaman berikut, klik OK.
*) Lihat tutorial Mengamankan Aplikasi Java EE 6 Mengamankan Komponen Web dengan Realm Keamanan JDBC dan Otentikasi Berbasis Form
Resource Name: jdbc/security*) Resource Type: javax.sql.DataSource Authentication: Container Sharing Scope: Shareable Description: Connects to hello database
Mengimport taglib JSTL prefix SQL yang diperlukan untuk mengakses database. Mengakses database dengan taglib <sql:query>.
<%@taglib prefix="sql" uri=" http://java.sun.com/jsp/jstl/sql"%> <sql:query var="sex" dataSource="jdbc/security"> SELECT US_NAM_User_Name FROM us_nam_user_name WHERE US_ID = '<%= username%>' </sql:query>
Mengimport taglib JSTL prefix C yang diperlukan untuk menampilkan data. Menampilkan hasil dengan <c:out>.
Referensi
Tutorial Mengamankan Aplikasi Java EE 6 Mengamankan Komponen Web dengan Realm Keamanan JDBC dan Otentikasi Berbasis Form Anchor Modeling Wikipedia, http://en.wikipedia.org/wiki/Anchor_Modeling Online Anchor Modeler, http://www.anchormodeling.com/modeler/
Anchor Modeling: Naming Convention, http://www.anchormodeling.com/wp-content/uploads/2010/09/AM-Nam The NetBeans E-commerce Tutorial - Connecting the Application to the Database, http://netbeans.org/kb/docs/javaee/ecommerce/connect-db.html