SlideShare a Scribd company logo
Konsep Baru Pemodelan Database dengan Anchor Modeling Bowo Prasetyo Contoh Kasus  Perubahan Struktur dan Konten Database 10 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).
Online Resources Official site http://www.anchormodeling.com/   Online tutorial http://www.anchormodeling.com/?page_id=186   Online anchor modeler http://www.anchormodeling.com/modeler/
Perubahan Database 2 Perubahan Struktur dan Konten Mencatat Masukan Salam
Peringatan Contoh aplikasi HelloEnterprise ini memiliki beberapa aspek yang tidak baik, antara lain: Menggunakan database MySQL yang tidak mendukung fitur “ table elimination ”. Seharusnya menggunakan database yang mendukung fitur ini, mis. PostgreSQL. Mengakses database langsung dari halaman JSP yang seharusnya hanya untuk tampilan. Seharusnya mengakses database dari komponen domain atau model pada pola MVC (model-view-controller) atau PM (presentation-model).
Mencatat Masukan Salam Aplikasi HelloEnterprise *)  dimodifikasi untuk: menerima masukan sebuah salam dari user,
mencatatnya di database,
dan menampilkan tiga salam terakhir. *) Lihat tutorial “Konsep Baru Pemodelan Database dengan Anchor Modeling – Teknik Pemodelan Database Agile untuk Struktur dan Konten yang Berubah Seiring Waktu”
Penambahan Entitas Diperlukan tambahan entitas baru: Greeting : salam yang diucapkan  user .
Berarti ada  anchor  baru yang sesuai, dengan satu  attribute  teks salam.
Dan  tie  baru yang menghubungkannya dengan  anchor   US_User . Greeting was said by user . Untuk melacak salam apa yang diucapkan user pada waktu tertentu, maka untuk  tie  di atas  perlu dibuatkan sejarah.
Anchor Model Tambah satu  anchor :   GE_Greeting
Tambah satu  attribute :  GE_TXT_Greeting_Text
Tambah satu  tie  bersejarah:   GE_wasSaid_US_by
Entity Relationship Model Tiga tabel baru dalam 6NF: GE_Greeting ,  GE_TXT_Greeting_Text  dan  GE_wasSaid_US_by
Table Creation SQL CREATE TABLE ge_greeting ( GE_ID int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (GE_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; CREATE TABLE ge_txt_greeting_text ( GE_ID int(11) NOT NULL, GE_TXT_Greeting_Text varchar(64) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (GE_ID), UNIQUE KEY GE_TXT_Greeting_Text (GE_TXT_Greeting_Text) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Table Creation SQL CREATE TABLE ge_wassaid_us_by ( US_ID varchar(64) COLLATE utf8_unicode_ci NOT NULL, GE_ID int(11) NOT NULL, GE_wasSaid_US_by_ChangedAta datetime NOT NULL, PRIMARY KEY (US_ID,GE_ID,GE_wasSaid_US_by_ChangedAta), KEY GE_ID (GE_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; ALTER TABLE `ge_txt_greeting_text` ADD CONSTRAINT ge_txt_greeting_text_ibfk_1 FOREIGN KEY (GE_ID) REFERENCES ge_greeting (GE_ID); ALTER TABLE `ge_wassaid_us_by` ADD CONSTRAINT ge_wassaid_us_by_ibfk_2 FOREIGN KEY (GE_ID) REFERENCES ge_greeting (GE_ID), ADD CONSTRAINT ge_wassaid_us_by_ibfk_1 FOREIGN KEY (US_ID) REFERENCES us_user (US_ID);
Masukan Salam Menggunakan tag <form> di file  /jdbc/index.jsp <form method=&quot;POST&quot; action=&quot;greeting.jsp&quot;> <ul> <li>Masukkan salam anda: <input type=&quot;text&quot; name=&quot;greeting&quot; /></li> </ul> <input type=&quot;submit&quot; value=&quot;Kirim&quot; /> </form>
Menampilkan Salam Yang perlu diambil dari database adalah: Teks salam (di tabel  attribute   ge_txt_greeting_text )
Waktu pengucapan salam (di table  tie   ge_wassaid_us_by ) From clause  utama terdiri dari tabel-tabel  anchor  terkait yang di join  tanpa syarat : us_user us JOIN ge_greeting ge Dilanjutkan  join  dengan tabel-tabel  attribute  terkait: JOIN ge_txt_greeting_text ge_txt ON ge_txt.GE_ID = ge.GE_ID
Menampilkan Salam Dilanjutkan  join  dengan tabel-tabel  tie  terkait: JOIN ge_wassaid_us_by ge_us ON ge_us.GE_ID = ge.GE_ID AND ge_us.US_ID = us.US_ID Where clause  dilakukan terhadap  anchor : WHERE us.US_ID = '<%= username %>' Diakhiri dengan  order  dan  limit : ORDER BY ge_us.GE_wasSaid_US_by_ChangedAt DESC LIMIT 3
Menampilkan Salam Menggunakan <sql:query> untuk meng ambil salam dari  database. <sql:query var=&quot;result&quot; dataSource=&quot;jdbc/security&quot;> SELECT ge_txt.GE_TXT_Greeting_Text, ge_us.GE_wasSaid_US_by_ChangedAt FROM us_user us JOIN ge_greeting ge JOIN ge_txt_greeting_text ge_txt ON ge_txt.GE_ID = ge.GE_ID JOIN ge_wassaid_us_by ge_us ON ge_us.GE_ID = ge.GE_ID AND ge_us.US_ID = us.US_ID WHERE us.US_ID =  '<%= username %>' ORDER BY ge_us.GE_wasSaid_US_by_ChangedAt DESC LIMIT 3 </sql:query>
Menampilkan Salam Dan <c:forEach> untuk me loop  semua hasil. <table border=&quot;1&quot;> <!-- column headers --> <tr> <c:forEach var=&quot;columnName&quot; items=&quot;${result.columnNames}&quot;> <th><c:out value=&quot;${columnName}&quot;/></th> </c:forEach> </tr>
Menampilkan Salam <!-- column data --> <c:forEach var=&quot;row&quot; items=&quot;${result.rowsByIndex}&quot;> <tr> <c:forEach var=&quot;column&quot; items=&quot;${row}&quot;> <td><c:out value=&quot;${column}&quot;/></td> </c:forEach> </tr> </c:forEach> </table>
File Lengkap  /jdbc/index.jsp <%@taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot;%> <%@taglib prefix=&quot;sql&quot; uri=&quot;http://java.sun.com/jsp/jstl/sql&quot;%> <%@page contentType=&quot;text/html&quot; pageEncoding=&quot;UTF-8&quot;%> <% String username = ((HttpServletRequest) pageContext.getRequest()).getUserPrincipal().getName(); %> <!DOCTYPE html> <html> <head> <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;>
File Lengkap  /jdbc/index.jsp <title>Otentikasi Berbasis Form dengan Realm JDBC untuk JSP</title> </head> <body> <sql:query var=&quot;sex&quot; dataSource=&quot;jdbc/security&quot;> SELECT SEX_ID FROM us_sex_user_sex WHERE US_ID = '<%= username%>' </sql:query> <c:choose> <c:when test='${sex.rows[0].SEX_ID == &quot;M&quot;}'> <c:set var=&quot;title&quot; value=&quot;Bapak&quot; scope=&quot;page&quot; /> </c:when>
File Lengkap  /jdbc/index.jsp <c:otherwise> <c:set var=&quot;title&quot; value=&quot;Ibu&quot; scope=&quot;page&quot; /> </c:otherwise> </c:choose> <sql:query var=&quot;name&quot; dataSource=&quot;jdbc/security&quot;> SELECT US_NAM_User_Name FROM us_nam_user_name WHERE US_ID = '<%= username%>' </sql:query> <h1>Hello <c:out value=&quot;${title}&quot; /> <c:out value=&quot;${name.rows[0].US_NAM_User_Name}&quot; />!</h1> <form method=&quot;POST&quot; action=&quot;greeting.jsp&quot;> <ul>
File Lengkap  /jdbc/index.jsp <li>Masukkan salam anda: <input type=&quot;text&quot; name=&quot;greeting&quot; /></li> </ul> <input type=&quot;submit&quot; value=&quot;Kirim&quot; /> </form> <p> <sql:query var=&quot;result&quot; dataSource=&quot;jdbc/security&quot;> SELECT ge_txt.GE_TXT_Greeting_Text, ge_us.GE_wasSaid_US_by_ChangedAt FROM us_user us JOIN ge_greeting ge JOIN ge_txt_greeting_text ge_txt ON ge_txt.GE_ID = ge.GE_ID JOIN ge_wassaid_us_by ge_us ON ge_us.GE_ID = ge.GE_ID AND ge_us.US_ID = us.US_ID WHERE us.US_ID =  '<%= username %>' ORDER BY ge_us.GE_wasSaid_US_by_ChangedAt DESC LIMIT 3 </sql:query>
File Lengkap  /jdbc/index.jsp <table border=&quot;1&quot;> <!-- column headers --> <tr> <c:forEach var=&quot;columnName&quot; items=&quot;${result.columnNames}&quot;> <th><c:out value=&quot;${columnName}&quot;/></th> </c:forEach> </tr> <!-- column data --> <c:forEach var=&quot;row&quot; items=&quot;${result.rowsByIndex}&quot;>
File Lengkap  /jdbc/index.jsp <tr> <c:forEach var=&quot;column&quot; items=&quot;${row}&quot;> <td><c:out value=&quot;${column}&quot;/></td> </c:forEach> </tr> </c:forEach> </table> </p> <a href=&quot;../logout.jsp&quot;>Logout</a> </body> </html>
Meng insert  Salam Dilakukan di file  /jdbc/greeting.jsp
Pertama buka transaksi database.
Lalu cek salam di tabel  attribute . Salam masukan user bisa didapat dari variabel JSTL  ${param.greeting} . Kalau tidak ada, insert salam di tabel  anchor  dan  attribute .
Insert salam dan waktunya di tabel  tie .
Terakhir tutup transaksi database.

More Related Content

ODP
Konsep Baru Pemodelan Database dengan Anchor Modeling
PDF
The state of global banking in search of a sustainable model
PPT
Безопасный код
PDF
Productos msa
PPTX
3. trimiterea datelor la vederi
PPT
J query aula01
PDF
Fuse introduction & case study
PDF
Zend Framework: abordagem prática
Konsep Baru Pemodelan Database dengan Anchor Modeling
The state of global banking in search of a sustainable model
Безопасный код
Productos msa
3. trimiterea datelor la vederi
J query aula01
Fuse introduction & case study
Zend Framework: abordagem prática

Viewers also liked (6)

ODP
Mengamankan Aplikasi Java EE 6
ODP
e-Voting Application using Internal Vtoken
ODP
Konsep Baru Pemodelan Database dengan Anchor Modeling
ODP
Mengamankan Aplikasi Java EE 6
PPT
Overview of Data Mining
ODP
Nutch dan Solr
Mengamankan Aplikasi Java EE 6
e-Voting Application using Internal Vtoken
Konsep Baru Pemodelan Database dengan Anchor Modeling
Mengamankan Aplikasi Java EE 6
Overview of Data Mining
Nutch dan Solr
Ad

Konsep Baru Pemodelan Database dengan Anchor Modeling

  • 1. Konsep Baru Pemodelan Database dengan Anchor Modeling Bowo Prasetyo Contoh Kasus Perubahan Struktur dan Konten Database 10 Desember 2011 http://www.scribd.com/prazjp http://www.slideshare.net/bowoprasetyo
  • 2. Anchor Modeling Teknik pemodelan database agile yang cocok untuk informasi yang berubah seiring waktu baik struktur maupun konten-nya.
  • 3. Berbasis pada empat konstruksi permodelan: anchor , attribute , tie dan knot .
  • 4. Hasilnya dapat diterjemahkan ke desain relational database, di mana hampir semua tabelnya akan berada pada bentuk sixth normal form (6NF).
  • 5. Online Resources Official site http://www.anchormodeling.com/ Online tutorial http://www.anchormodeling.com/?page_id=186 Online anchor modeler http://www.anchormodeling.com/modeler/
  • 6. Perubahan Database 2 Perubahan Struktur dan Konten Mencatat Masukan Salam
  • 7. Peringatan Contoh aplikasi HelloEnterprise ini memiliki beberapa aspek yang tidak baik, antara lain: Menggunakan database MySQL yang tidak mendukung fitur “ table elimination ”. Seharusnya menggunakan database yang mendukung fitur ini, mis. PostgreSQL. Mengakses database langsung dari halaman JSP yang seharusnya hanya untuk tampilan. Seharusnya mengakses database dari komponen domain atau model pada pola MVC (model-view-controller) atau PM (presentation-model).
  • 8. Mencatat Masukan Salam Aplikasi HelloEnterprise *) dimodifikasi untuk: menerima masukan sebuah salam dari user,
  • 10. dan menampilkan tiga salam terakhir. *) Lihat tutorial “Konsep Baru Pemodelan Database dengan Anchor Modeling – Teknik Pemodelan Database Agile untuk Struktur dan Konten yang Berubah Seiring Waktu”
  • 11. Penambahan Entitas Diperlukan tambahan entitas baru: Greeting : salam yang diucapkan user .
  • 12. Berarti ada anchor baru yang sesuai, dengan satu attribute teks salam.
  • 13. Dan tie baru yang menghubungkannya dengan anchor US_User . Greeting was said by user . Untuk melacak salam apa yang diucapkan user pada waktu tertentu, maka untuk tie di atas perlu dibuatkan sejarah.
  • 14. Anchor Model Tambah satu anchor : GE_Greeting
  • 15. Tambah satu attribute : GE_TXT_Greeting_Text
  • 16. Tambah satu tie bersejarah: GE_wasSaid_US_by
  • 17. Entity Relationship Model Tiga tabel baru dalam 6NF: GE_Greeting , GE_TXT_Greeting_Text dan GE_wasSaid_US_by
  • 18. Table Creation SQL CREATE TABLE ge_greeting ( GE_ID int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (GE_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; CREATE TABLE ge_txt_greeting_text ( GE_ID int(11) NOT NULL, GE_TXT_Greeting_Text varchar(64) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (GE_ID), UNIQUE KEY GE_TXT_Greeting_Text (GE_TXT_Greeting_Text) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  • 19. Table Creation SQL CREATE TABLE ge_wassaid_us_by ( US_ID varchar(64) COLLATE utf8_unicode_ci NOT NULL, GE_ID int(11) NOT NULL, GE_wasSaid_US_by_ChangedAta datetime NOT NULL, PRIMARY KEY (US_ID,GE_ID,GE_wasSaid_US_by_ChangedAta), KEY GE_ID (GE_ID) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; ALTER TABLE `ge_txt_greeting_text` ADD CONSTRAINT ge_txt_greeting_text_ibfk_1 FOREIGN KEY (GE_ID) REFERENCES ge_greeting (GE_ID); ALTER TABLE `ge_wassaid_us_by` ADD CONSTRAINT ge_wassaid_us_by_ibfk_2 FOREIGN KEY (GE_ID) REFERENCES ge_greeting (GE_ID), ADD CONSTRAINT ge_wassaid_us_by_ibfk_1 FOREIGN KEY (US_ID) REFERENCES us_user (US_ID);
  • 20. Masukan Salam Menggunakan tag <form> di file /jdbc/index.jsp <form method=&quot;POST&quot; action=&quot;greeting.jsp&quot;> <ul> <li>Masukkan salam anda: <input type=&quot;text&quot; name=&quot;greeting&quot; /></li> </ul> <input type=&quot;submit&quot; value=&quot;Kirim&quot; /> </form>
  • 21. Menampilkan Salam Yang perlu diambil dari database adalah: Teks salam (di tabel attribute ge_txt_greeting_text )
  • 22. Waktu pengucapan salam (di table tie ge_wassaid_us_by ) From clause utama terdiri dari tabel-tabel anchor terkait yang di join tanpa syarat : us_user us JOIN ge_greeting ge Dilanjutkan join dengan tabel-tabel attribute terkait: JOIN ge_txt_greeting_text ge_txt ON ge_txt.GE_ID = ge.GE_ID
  • 23. Menampilkan Salam Dilanjutkan join dengan tabel-tabel tie terkait: JOIN ge_wassaid_us_by ge_us ON ge_us.GE_ID = ge.GE_ID AND ge_us.US_ID = us.US_ID Where clause dilakukan terhadap anchor : WHERE us.US_ID = '<%= username %>' Diakhiri dengan order dan limit : ORDER BY ge_us.GE_wasSaid_US_by_ChangedAt DESC LIMIT 3
  • 24. Menampilkan Salam Menggunakan <sql:query> untuk meng ambil salam dari database. <sql:query var=&quot;result&quot; dataSource=&quot;jdbc/security&quot;> SELECT ge_txt.GE_TXT_Greeting_Text, ge_us.GE_wasSaid_US_by_ChangedAt FROM us_user us JOIN ge_greeting ge JOIN ge_txt_greeting_text ge_txt ON ge_txt.GE_ID = ge.GE_ID JOIN ge_wassaid_us_by ge_us ON ge_us.GE_ID = ge.GE_ID AND ge_us.US_ID = us.US_ID WHERE us.US_ID = '<%= username %>' ORDER BY ge_us.GE_wasSaid_US_by_ChangedAt DESC LIMIT 3 </sql:query>
  • 25. Menampilkan Salam Dan <c:forEach> untuk me loop semua hasil. <table border=&quot;1&quot;> <!-- column headers --> <tr> <c:forEach var=&quot;columnName&quot; items=&quot;${result.columnNames}&quot;> <th><c:out value=&quot;${columnName}&quot;/></th> </c:forEach> </tr>
  • 26. Menampilkan Salam <!-- column data --> <c:forEach var=&quot;row&quot; items=&quot;${result.rowsByIndex}&quot;> <tr> <c:forEach var=&quot;column&quot; items=&quot;${row}&quot;> <td><c:out value=&quot;${column}&quot;/></td> </c:forEach> </tr> </c:forEach> </table>
  • 27. File Lengkap /jdbc/index.jsp <%@taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot;%> <%@taglib prefix=&quot;sql&quot; uri=&quot;http://java.sun.com/jsp/jstl/sql&quot;%> <%@page contentType=&quot;text/html&quot; pageEncoding=&quot;UTF-8&quot;%> <% String username = ((HttpServletRequest) pageContext.getRequest()).getUserPrincipal().getName(); %> <!DOCTYPE html> <html> <head> <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;>
  • 28. File Lengkap /jdbc/index.jsp <title>Otentikasi Berbasis Form dengan Realm JDBC untuk JSP</title> </head> <body> <sql:query var=&quot;sex&quot; dataSource=&quot;jdbc/security&quot;> SELECT SEX_ID FROM us_sex_user_sex WHERE US_ID = '<%= username%>' </sql:query> <c:choose> <c:when test='${sex.rows[0].SEX_ID == &quot;M&quot;}'> <c:set var=&quot;title&quot; value=&quot;Bapak&quot; scope=&quot;page&quot; /> </c:when>
  • 29. File Lengkap /jdbc/index.jsp <c:otherwise> <c:set var=&quot;title&quot; value=&quot;Ibu&quot; scope=&quot;page&quot; /> </c:otherwise> </c:choose> <sql:query var=&quot;name&quot; dataSource=&quot;jdbc/security&quot;> SELECT US_NAM_User_Name FROM us_nam_user_name WHERE US_ID = '<%= username%>' </sql:query> <h1>Hello <c:out value=&quot;${title}&quot; /> <c:out value=&quot;${name.rows[0].US_NAM_User_Name}&quot; />!</h1> <form method=&quot;POST&quot; action=&quot;greeting.jsp&quot;> <ul>
  • 30. File Lengkap /jdbc/index.jsp <li>Masukkan salam anda: <input type=&quot;text&quot; name=&quot;greeting&quot; /></li> </ul> <input type=&quot;submit&quot; value=&quot;Kirim&quot; /> </form> <p> <sql:query var=&quot;result&quot; dataSource=&quot;jdbc/security&quot;> SELECT ge_txt.GE_TXT_Greeting_Text, ge_us.GE_wasSaid_US_by_ChangedAt FROM us_user us JOIN ge_greeting ge JOIN ge_txt_greeting_text ge_txt ON ge_txt.GE_ID = ge.GE_ID JOIN ge_wassaid_us_by ge_us ON ge_us.GE_ID = ge.GE_ID AND ge_us.US_ID = us.US_ID WHERE us.US_ID = '<%= username %>' ORDER BY ge_us.GE_wasSaid_US_by_ChangedAt DESC LIMIT 3 </sql:query>
  • 31. File Lengkap /jdbc/index.jsp <table border=&quot;1&quot;> <!-- column headers --> <tr> <c:forEach var=&quot;columnName&quot; items=&quot;${result.columnNames}&quot;> <th><c:out value=&quot;${columnName}&quot;/></th> </c:forEach> </tr> <!-- column data --> <c:forEach var=&quot;row&quot; items=&quot;${result.rowsByIndex}&quot;>
  • 32. File Lengkap /jdbc/index.jsp <tr> <c:forEach var=&quot;column&quot; items=&quot;${row}&quot;> <td><c:out value=&quot;${column}&quot;/></td> </c:forEach> </tr> </c:forEach> </table> </p> <a href=&quot;../logout.jsp&quot;>Logout</a> </body> </html>
  • 33. Meng insert Salam Dilakukan di file /jdbc/greeting.jsp
  • 35. Lalu cek salam di tabel attribute . Salam masukan user bisa didapat dari variabel JSTL ${param.greeting} . Kalau tidak ada, insert salam di tabel anchor dan attribute .
  • 36. Insert salam dan waktunya di tabel tie .
  • 38. Mengecek Salam di Tabel Attribute <sql:transaction dataSource=&quot;jdbc/security&quot;> <sql:query var=&quot;geId&quot;> SELECT GE_ID FROM ge_txt_greeting_text WHERE GE_TXT_Greeting_Text = '${param.greeting}' </sql:query>
  • 39. Meng insert Salam di Tabel Anchor <sql:update var=&quot;inserted&quot;> INSERT INTO ge_greeting (GE_ID) VALUES (NULL) </sql:update>
  • 40. Meng insert Salam di Tabel Attribute <sql:query var=&quot;geId&quot;> SELECT LAST_INSERT_ID() GE_ID </sql:query> <sql:update var=&quot;inserted&quot;> INSERT INTO ge_txt_greeting_text (GE_ID, GE_TXT_Greeting_Text) VALUES (${geId.rows[0].GE_ID}, '${param.greeting}') </sql:update>
  • 41. Meng insert Salam dan Waktunya di Tabel Tie <sql:update var=&quot;inserted&quot;> INSERT INTO ge_wassaid_us_by (US_ID, GE_ID, GE_wasSaid_US_by_ChangedAt) VALUES ('<%= username%>', ${geId.rows[0].GE_ID}, NOW()) </sql:update> </sql:transaction>
  • 42. File Lengkap /jdbc/greeting.jsp <%@taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot;%> <%@taglib prefix=&quot;sql&quot; uri=&quot;http://java.sun.com/jsp/jstl/sql&quot;%> <%@page contentType=&quot;text/html&quot; pageEncoding=&quot;UTF-8&quot;%> <% String username = ((HttpServletRequest) pageContext.getRequest()).getUserPrincipal().getName(); %> <!DOCTYPE html> <html> <head> <meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;>
  • 43. File Lengkap /jdbc/greeting.jsp <title>Inserting Greeting Page</title> </head> <body> <sql:transaction dataSource=&quot;jdbc/security&quot;> <!-- check if greeting exists in attribute table --> <sql:query var=&quot;geId&quot;> SELECT GE_ID FROM ge_txt_greeting_text WHERE GE_TXT_Greeting_Text = '${param.greeting}' </sql:query> <!-- insert greeting if not exists in attribute table --> <c:if test=&quot;${empty geId.rows[0].GE_ID}&quot;> <!-- first inserts the primary key in anchor table -->
  • 44. File Lengkap /jdbc/greeting.jsp <sql:update var=&quot;inserted&quot;> INSERT INTO ge_greeting (GE_ID) VALUES (NULL) </sql:update> <!-- then inserts text into attribute table if succeeded --> <c:if test=&quot;${inserted > 0}&quot;> <sql:query var=&quot;geId&quot;> SELECT LAST_INSERT_ID() GE_ID </sql:query> <sql:update var=&quot;inserted&quot;>
  • 45. File Lengkap /jdbc/greeting.jsp INSERT INTO ge_txt_greeting_text (GE_ID, GE_TXT_Greeting_Text) VALUES (${geId.rows[0].GE_ID}, '${param.greeting}') </sql:update> <h4>New greeting <c:out value=&quot;${param.greeting}&quot; /> was inserted!</h4> </c:if> </c:if> <!-- insert greeting times into tie otherwise --> <sql:update var=&quot;inserted&quot;>
  • 46. File Lengkap /jdbc/greeting.jsp INSERT INTO ge_wassaid_us_by (US_ID, GE_ID, GE_wasSaid_US_by_ChangedAt) VALUES ('<%= username%>', ${geId.rows[0].GE_ID}, NOW()) </sql:update> </sql:transaction> <h4>Time of <c:out value=&quot;${param.greeting}&quot; /> was recorded!</h4> <a href=&quot;./index.jsp&quot;>Index</a> </body> </html>
  • 47. Masukan Salam Setelah login user akan diminta masukan salam.
  • 48. Meng insert Salam Salam baru di insert dan dicatat waktunya. Salam yang sudah ada hanya dicatat waktunya.
  • 49. Tiga Salam Terakhir Menampilkan tiga salam terakhir.
  • 50. Referensi Tutorial “Konsep Baru Pemodelan Database dengan Anchor Modeling – Teknik Pemodelan Database Agile untuk Struktur dan Konten yang Berubah Seiring Waktu”
  • 51. Anchor Modeling – Wikipedia, http://en.wikipedia.org/wiki/Anchor_Modeling
  • 52. Online Anchor Modeler, http://www.anchormodeling.com/modeler/
  • 53. Anchor Modeling: Naming Convention, http://www.anchormodeling.com/wp-content/uploads/2010/09/AM-Naming.pdf
  • 54. The NetBeans E-commerce Tutorial - Connecting the Application to the Database, http://netbeans.org/kb/docs/javaee/ecommerce/connect-db.html