วันอาทิตย์ที่ 2 พฤศจิกายน พ.ศ. 2557

Java Programming Bookstore Appication (Series 1): Data Model for the Bookstore Application

ตอนนี้จะเป็นบทความที่พูดถึงเรื่องข้อมูลของระบบการจัดการหนังสือ (Bookstore Application) ซึ่งระบบนี้จะประกอบไปด้วย 3 ตาราง 

  • CATEGORY - ตารางสำหรับเก็บประเภทของหนังสือ; เช่น Java, Scala
  • BOOK - ตารางสำหรับเก็บรายละเอียดหนังสือ เช่น ชื่อเรื่อง 
  • AUTHOR - ตารางสำหรับเก็บรายละเอียดผู้เขียน
จากรูปที่ 1 ประเภทหนังสือ (CATEGORY) แต่ละประเภทนั้นสามารถจัดหนังสือเข้าประเภทได้มากกว่า 1 เล่ม หรือไม่มีหนังสือใดๆจัดเข้าประเภทนั้นๆเลยก็ได้ เช่น หนังสือประเภท Java อาจจะมีอยู่สามเล่ม หรือไม่มีเลยก็ได้ อาจกล่าวได้อีกอย่างว่า ระหว่าง ประเภทหนังสือ (CATEGORY) และ หนังสือ (BOOK) นั้นมีความสัมพันธ์กันแบบ one-to-many เช่นเดียวกับความสัมพันธ์ระหว่าง หนังสือ (BOOK) กับผู้เขียน (AUTHOR) ซึ่งตามรูปที่ 1 เราจะเรียกว่า ER Diagram (The entity-relationship diagram)

รูปที่ 1

ซึ่งในบทความนี้จะใช้ฐานข้อมูลแบบ DBMS (Data Base Management System) นั่นคือ MySQL เป็นตัวอย่างเนื่องจากฟรี และเป็นที่แพร่หลาย ก่อนใช้งานต้องมีการติดตั้ง MySQL กันก่อนนะครับ

เมื่อติดตั้งสำเร็จเรามาเริ่มสร้างฐานข้อมูล (database) กันเลย ใช้คำสั่งนี้ครับ

create database books;

เมื่อสร้าง database แล้วให้เราเรียกใช้ด้วยคำสั่ง

use books;

หลังจากนี้เราสามารถสร้างตาราง (Table) ได้แล้วตามตัวอย่างที่ 1

ตัวอย่างที่ 1 สร้าง Table สำหรับ database Bookstore

CREATE TABLE CATEGORY (
     ID INT NOT NULL AUTO_INCREMENT ,
     CATEGORY_DESCRIPTION VARCHAR(20) NOT NULL ,
     PRIMARY KEY (ID)
);

CREATE TABLE BOOK (
     ID INT NOT NULL AUTO_INCREMENT,
     CATEGORY_ID INT NOT NULL ,
     BOOK_TITLE VARCHAR(60) NOT NULL,
     PUBLISHER VARCHAR(60) NOT NULL ,
     PRIMARY KEY (ID) ,
     CONSTRAINT FK_BOOK_1 FOREIGN KEY (CATEGORY_ID) REFERENCES CATEGORY(ID)
);

CREATE TABLE AUTHOR (
     ID INT NOT NULL AUTO_INCREMENT ,
     BOOK_ID INT NOT NULL ,
     FIRST_NAME VARCHAR(20) NOT NULL ,
     LAST_NAME VARCHAR(20) NOT NULL ,
     PRIMARY KEY (ID) ,
     CONSTRAINT FK_AUTHOR_1 FOREIGN KEY (BOOK_ID) REFERENCES BOOK (ID)
);

เราสามารถตรวจสอบการสร้าง Table โดยใช้คำสั่ง

show tables;

จะได้ผลลัพธ์ตามรูปที่ 2

รูปที่ 2

เราสามารถดูโครงสร้าง Table ได้โดยการใช้คำสั่ง

describe <table-name> 
หรือ 
desc <table-name>

จะได้ผลลัพธ์ตามรูปที่ 3

รูปที่ 3

เรามาลองเพิ่มข้อมูลลง Table กันไว้สำหรับใช้พัฒนากันใน series ต่อไป

insert into category (category_description) values ('Clojure');
insert into category (category_description) values ('Groovy');
insert into category (category_description) values ('Java');
insert into category (category_description) values ('Scala');

insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (1, 'Practical Clojure', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (2, 'Beginning Groovy, Grails and Griffon', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (2, 'Definitive Guide to Grails 2', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (2, 'Groovy and Grails Recipes', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (3, 'Modern Java Web Development', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (3, 'Java 7 Recipes', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (3, 'Java EE 7 Recipes', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (3, 'Beginning Java 7 ', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (3, 'Pro Java 7 NIO.2', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (3, 'Java 7 for Absolute Beginners', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (3, 'Oracle Certified Java Enterprise Architect Java EE7', 'Apress');
insert into Book (CATEGORY_ID, BOOK_TITLE, PUBLISHER) values (4, 'Beginning Scala', 'Apress');

insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (1, 'Luke', 'VanderHart');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (2, 'Vishal', 'Layka');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (3, 'Jeff', 'Brown');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (4, 'Bashar', 'Jawad');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (5, 'Vishal', 'Layka');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (6, 'Josh', 'Juneau');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (7, 'Josh', 'Juneau');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (8, 'Jeff', 'Friesen');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (9, 'Anghel', 'Leonard');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (10, 'Jay', 'Bryant');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (11, 'B V', 'Kumar');
insert into Author (BOOK_ID, FIRST_NAME, LAST_NAME) values (12, 'David', 'Pollak');

เราสามารถเรียกดูข้อมูลที่ได้ทำการเพิ่มลง Table ได้ตามตัวอย่างในรูปที่ 4

รูปที่ 4


ตอนต่อไปติดตามได้ที่








อ้างอิง

ผู้เขียน: procodeblog

ไม่มีความคิดเห็น:

แสดงความคิดเห็น