วันพุธที่ 1 สิงหาคม พ.ศ. 2555

DDL ของ Star - Schema


mysql> use bank_imp;
Database changed
mysql> show tables;
+--------------------+
| Tables_in_bank_imp |
+--------------------+
| account            |
| accounttype        |
| bank               |
| bondsman           |
| borrowbond         |
| customer           |
| detail             |
| detailtype         |
| employee           |
| promiseborrow      |
| promotion          |
+--------------------+
11 rows in set (0.00 sec)

mysql> CREATE  TABLE  Time (
    ->  TimeId  CHAR(3)  NOT NULL,
    ->  Year  YEAR(4)  NOT NULL,
    ->  Month  INT(2)  NOT NULL,
    ->  Day  INT(2)  NOT NULL,
    ->           CONSTRAINT Pk_TimeId PRIMARY KEY(TimeId)) comment = "สร้างตารางเวลา" ;
Query OK, 0 rows affected (0.05 sec)

mysql> CREATE TABLE  WarehouseBusI (
    ->  dwBusI_Code INT(3) NOT NULL AUTO_INCREMENT  PRIMARY KEY,
    ->  WIProId  CHAR(3),
    ->  WICusId  CHAR(13),
    ->  WIAccTypeId CHAR(1),
    ->  WIAccId  CHAR(10),
    ->  WITimeId  CHAR(3),
    ->  WIAccUse  VARCHAR(50),
    ->  WIProUse  VARCHAR(50),  
    ->          CONSTRAINT Fk_WIPro  FOREIGN KEY(WIProId)
    ->    REFERENCES Promotion(ProId),
    ->         CONSTRAINT Fk_WICus  FOREIGN KEY(WICusId)
    ->    REFERENCES Customer(CusId),
    ->         CONSTRAINT Fk_WIAccT  FOREIGN KEY(WIAccTypeId)
    ->    REFERENCES AccountType(AccTypeId),
    ->          CONSTRAINT Fk_WIAcc  FOREIGN KEY(WIAccId)
    ->    REFERENCES Account(AccId),
    ->          CONSTRAINT Fk_WITime  FOREIGN KEY(WITimeId)
    ->    REFERENCES Time(TimeId)) comment = "รายงานที่ 1 รายงานประเภทบัญชีและโปรโมชัน";
Query OK, 0 rows affected (0.15 sec)

mysql> CREATE TABLE  WarehouseBusII (
    ->  dwBusII_Code INT(3) NOT NULL AUTO_INCREMENT  PRIMARY KEY,
    ->  WIICusId  CHAR(13),
    ->  WIIAccTypeId CHAR(1),
    ->  WIIAccId  CHAR(10),
    ->  WIITimeId CHAR(3),
    ->  WIIDeTId  CHAR(1),
    ->  WIINumUse VARCHAR(50),
    ->          CONSTRAINT Fk_WIICus  FOREIGN KEY(WIICusId)
    ->    REFERENCES Customer(CusId),
    ->          CONSTRAINT Fk_WIIAccT  FOREIGN KEY(WIIAccTypeId)
    ->    REFERENCES AccountType(AccTypeId),
    ->          CONSTRAINT Fk_WIIAcc  FOREIGN KEY(WIIAccId)
    ->    REFERENCES Account(AccId),
    ->         CONSTRAINT Fk_WIITime  FOREIGN KEY(WIITimeId)
    ->    REFERENCES Time(TimeId),
    ->          CONSTRAINT Fk_WIIDeT  FOREIGN KEY(WIIDeTId)
    ->    REFERENCES DetailType(DeTId))  comment = "รายงานที่ 2 จำนวนการทำรายการต่างๆของแต่ละบัญชี"; 
Query OK, 0 rows affected (0.16 sec)

mysql> CREATE TABLE  WarehouseBusIII (
    ->  dwBusIII_Code INT(3) NOT NULL AUTO_INCREMENT,
    ->  WIIICusId CHAR(13),
    ->  WIIIAccId CHAR(10),
    ->  WIIITimeId CHAR(3),
    ->  WIIIDeTId CHAR(1),
    ->  WIIIBorrowId CHAR(8),
    ->  WIIICusUseBor VARCHAR(50),
    ->  WIIITotalBor VARCHAR(50),
    ->  WIIIReMoney VARCHAR(50),
    ->          CONSTRAINT    Pk_WIII  PRIMARY KEY(dwBusIII_Code),
    ->          CONSTRAINT Fk_WIIICus  FOREIGN KEY(WIIICusId)
    ->    REFERENCES Customer(CusId),
    ->          CONSTRAINT Fk_WIIIAcc  FOREIGN KEY(WIIIAccId)
    ->    REFERENCES Account(AccId),
    ->          CONSTRAINT Fk_WIIITime  FOREIGN KEY(WIIITimeId)
    ->    REFERENCES Time(TimeId),
    ->         CONSTRAINT Fk_WIIIDeT  FOREIGN KEY(WIIIDeTId)
    ->    REFERENCES DetailType(DeTId), 
    ->          CONSTRAINT Fk_WIIIBor  FOREIGN KEY(WIIIBorrowId)
    ->    REFERENCES PromiseBorrow(BorrowId)) comment = "รายงานที่ 3 รายงานเกี่ยวกับการกู้ยืมเงิน";
Query OK, 0 rows affected (0.16 sec)

mysql> show tables;
+--------------------+
| Tables_in_bank_imp |
+--------------------+
| account            |
| accounttype        |
| bank               |
| bondsman           |
| borrowbond         |
| customer           |
| detail             |
| detailtype         |
| employee           |
| promiseborrow      |
| promotion          |
| time               |
| warehousebusi      |
| warehousebusii     |
| warehousebusiii    |
+--------------------+
15 rows in set (0.00 sec)

mysql> notee

วันจันทร์ที่ 2 กรกฎาคม พ.ศ. 2555

ER-Diagram


ER-Diagram



DDL


DDL


DROP  TABLE  BorroWBond;
DROP  TABLE  Detail;
DROP  TABLE  DetailType;
DROP  TABLE  PromiseBorrow;
DROP  TABLE  ACCOUNT;
DROP  TABLE  Employee;
DROP  TABLE  BANK;
DROP  TABLE  Customer;
DROP  TABLE  AccountType;
DROP  TABLE  Promotion;
DROP  TABLE  BondsMan;
--DROP  TABLE  PromiseBorrow;
--DROP  TABLE  BANK;
--DROP  TABLE  ACCOUNT;


--ลบตารางในถังขยะ
purge recyclebin;


--สร้างตาราง bank
CREATE  TABLE  BANK
(BankId NUMBER(3)
CONSTRAINT Nn1_Bank   NOT NULL,
BankBranch VARCHAR2(40),
BankTel VARCHAR2(10),
CONSTRAINT Pk_Bank PRIMARY KEY(BankId));


--สร้างตารางพนักงาน
CREATE  TABLE  Employee
(EmpId NUMBER(5)
CONSTRAINT Nn1_Emp NOT NULL,
EmpTitle VARCHAR2(10),
EmpFName VARCHAR2(20),
EmpLName VARCHAR2(20),
EmpAge NUMBER(3),
EmpTel VARCHAR2(10),
EmpAddr VARCHAR2(40),
EmpBankId NUMBER(3),
CONSTRAINT Pk_Emp PRIMARY KEY(EmpId),
CONSTRAINT Fk_EmpBank FOREIGN KEY(EmpBankId)
REFERENCES Bank(BankId));


--สร้างตารางลูกค้า
CREATE  TABLE  Customer
(CusId CHAR(13)
CONSTRAINT Nn1_Cus NOT NULL,
CusTitle VARCHAR2(10),
CusFName VARCHAR2(20),
CusLName VARCHAR2(20),
CusAge NUMBER(3),
CusTel VARCHAR2(10),
CusAddr VARCHAR2(40),
CONSTRAINT Pk_Cus PRIMARY KEY(CusId));


--สร้างตารางโปรโมชัน
CREATE  TABLE  Promotion
(ProId NUMBER(3)
CONSTRAINT Nn1_pro NOT NULL,
ProName VARCHAR2(30),
ProDetail VARCHAR2(50),
ProUsedFlg CHAR(1),
 CONSTRAINT Pk_Pro PRIMARY KEY(ProId));


--สร้างตารางประเภทบัญชี
CREATE  TABLE  AccountType
(AccTypeId CHAR(1)
CONSTRAINT Nn1_accT NOT NULL,
AccTypeName VARCHAR2(10),
AccTypeProId NUMBER(3),
    CONSTRAINT Pk_AccT PRIMARY KEY(AccTypeId),
    CONSTRAINT Fk_AccTPro FOREIGN KEY(AccTypeProId)
REFERENCES Promotion(ProId));


--สร้างตารางบัญชี
CREATE  TABLE  Account
(AccId NUMBER(10)
CONSTRAINT Nn1_acc NOT NULL,
AccName VARCHAR2(30),
AccAccTId CHAR(1),
AccCusId CHAR(13),
AccBankId NUMBER(3),
AccUsedFlg CHAR(1),
      CONSTRAINT Pk_Acc PRIMARY KEY(AccId),
      CONSTRAINT Fk_AccCus FOREIGN KEY(AccCusId)
REFERENCES Customer(CusId),
      CONSTRAINT Fk_AccBank FOREIGN KEY(AccBankId)
REFERENCES Bank(BankId),
      CONSTRAINT Fk_AccAccT FOREIGN KEY(AccAccTId)
REFERENCES AccountType(AccTypeId));


--สร้างตารางผู้ค้ำประกัน
CREATE  TABLE  BondsMan
(BondId CHAR(13)
CONSTRAINT Nn1_Bond NOT NULL,
BondTitle VARCHAR2(10),
BondFName VARCHAR2(20),
BondLName VARCHAR2(20),
BondAge NUMBER(3),
BondTel VARCHAR2(10),
BondAddr VARCHAR2(40),
CONSTRAINT Pk_Bond PRIMARY KEY(BondId));


--สร้างตารางสัญญาเงินกู้
CREATE  TABLE  PromiseBorrow
(BorrowId NUMBER(8)
CONSTRAINT Nn1_Bor NOT NULL,
BorrowTitle VARCHAR2(10),
BorrowFName VARCHAR2(20),
BorrowLName VARCHAR2(20),
BorrowAccId NUMBER(10),
BorrowDetail VARCHAR2(35),
BorrowDate DATE,
BorrowTotalMoney NUMBER(8,2),
Payment NUMBER(8,2),
TotalDueMoney NUMBER(8,2),
      CONSTRAINT Pk_Bor PRIMARY KEY(BorrowId),
      CONSTRAINT Fk_BorAcc FOREIGN KEY(BorrowAccId)
REFERENCES Account(AccId));


--สร้างตารางประเภทธุรกรรม
CREATE  TABLE  DetailType
(DeTId CHAR(1)
CONSTRAINT Nn1_DeT NOT NULL,
DeTName VARCHAR2(5),
      CONSTRAINT Pk_DeT PRIMARY KEY(DeTId));


--สร้างตารางรายละเอียดบัญชี
CREATE TABLE  Detail
(DeSeg NUMBER(7)
CONSTRAINT Nn1_De NOT NULL,
DeAccId NUMBER(10),
DeDate DATE,
DeDeTId CHAR(1),
DeMoney NUMBER(8,2),
TotalMoney NUMBER(8,2),
      CONSTRAINT Pk_De PRIMARY   KEY(DeSeg,DeAccId),
      CONSTRAINT Fk_DeAcc FOREIGN KEY(DeAccId)
REFERENCES Account(AccId),
      CONSTRAINT Fk_DeDeT FOREIGN KEY(DeDeTId)
REFERENCES DetailType(DeTId));


--สร้างตารางสัญญา+ผู้ค้ำ
CREATE  TABLE  BorroWBond
(BBBorId NUMBER(8)
CONSTRAINT Nn1_BBB  NOT NULL,
BBMId CHAR(13)
CONSTRAINT Nn1_BBM  NOT NULL,
BBMFName VARCHAR2(20),
      CONSTRAINT Fk_BBB FOREIGN KEY(BBBorId)
REFERENCES PromiseBorrow(BorrowId),
      CONSTRAINT Fk_BBM FOREIGN KEY(BBMId)
REFERENCES BondsMan(BondId));

SWOT


SWOT

จุดแข็ง
1.ระบบนี้จะมีการเก็บรายละเอียดบัญชีของลูกค้าแต่ละคนว่ามีเงินเท่าไร ถ้าลูกค้ามีปัญหาหรือทำสมุดบัญชีหายก็สามารถมาขอดูยอดเงินในบัญชีได้ทางธนาคาร ทำให้เป็นจุดแข็งอย่างหนึ่งในระบบนี้

2.ระบบนี้มีการเก็บรายละเอียดการทำงานของบัญชีเช่น การฝาก การถอน แล้วจะเก็บเวลาที่ทำรายการแต่ละรายการ ถ้าเกิดปัญหาหรือเกิดอยากทราบการเคลื่อนไหวของบัญชีว่ามีการฝาก ถอน จำนวนเท่าไรและเวลาไหนก็สามารถมาเช็คได้

3.ระบบนี้มีการเก็บสัญญาเงินกู้ และรายละเอียดสัญญาต่างๆ ทำให้เป็นหลักฐานกับลูกค้า ถ้าเกิดมีการเข้าใจอะไรผิดหรือมีปัญหาอะไรก็สามารถมาขอดูรายละเอียดต่างๆที่ใช้ในการทำสัญญาได้

4.ระบบนี้มีการเก็บรายละเอียดของโปรโมชันของทางธนาคาร มีวันเริ่มต้นและวันสิ้นสุดพร้อมรายละเอียด ถ้าบัญชีได้ทำการเปิดบัญชีและทำโปรโมชันที่หมดอายุไปแล้วก็สามารถมาขอดูรายละเอียดของโปรโมชันนั้นย้อนหลังได้ถ้าเกิดสงสัยอะไรขึ้นมา


จุดอ่อน
การค้นหาข้อมูลบัญชีของลูกค้า อาจจะใช้เวลาในการค้นหานาน เพราะจำนวนข้อมูลในระบบมีเยอะ

Domain


ระบบฝาก-ถอน-กู้เงินในธนาคาร
            ธนาคารแห่งหนึ่งมีการรับฝาก-ถอน-กู้เงินรายละเอียดของธนาคารคือ รหัสสาขาธนาคาร ชื่อสาขา   ที่อยู่ เบอร์โทรศัพท์ โดยการจะใช้บริการนั้น ลูกค้าที่เข้ามาใช้จะต้องเป็นสมาชิกของทางธนาคารก่อน โดยต้องทำการกรอก เลขที่บัตรประชาชน ชื่อ นามสกุล  เพศ ที่อยู่ เบอร์โทรศัพท์ วันเดือนปีเกิด หลังจากทำการสมัครแล้วกรณีที่ลูกค้าจะทำรายการฝากลูกค้าจะได้สมุดบัญชีและเลขที่บัญชีมา ซึ่งรายละเอียดสมุดบัญชีจะประกอบด้วย เลขที่บัญชี ชื่อบัญชี และ ประเภทบัญชี ภายในบัญชีจะประกอบด้วย รหัสสาขาธนาคารที่ทำรายการ วันที่ทำรายการ จำนวนเงินฝาก จำนวนเงินถอน ยอดเงินรวม บัญชีแต่ละบัญชีจะมีแค่ประเภทเดียวและสมาชิกหนึ่งคนสามารถสมัครบัญชีได้หลายบัญชี ลูกค้าที่ทำการสมัครบัญชีกับทางธนาคารแล้วสามารถเลือกได้ว่าจะทำบัตรเครดิตหรือไม่
        ลูกค้าที่จะทำการกู้เงินกับธนาคารลูกค้าจะต้องเป็นสมาชิกกับธนาคารก่อนซึ่งรายละเอียดจะเหมือนๆกับการฝาก ลูกค้าที่จะทำการกู้ต้องทำใบสัญญาการกู้ซึ่งรายละเอียดของใบสัญญาการกู้มีดังนี้ เลขที่ใบสัญญา ชื่อลูกค้า ชื่อผู้ค้ำประกัน รายละเอียดสัญญา จำนวนเงินที่กู้ จำนวนดอกเบี้ย ส่วนรายละเอียดของผู้ค้ำประกันก็มีดังนี้คือ เลขบัตรประชาชน ชื่อ ที่อยู่ เบอร์โทรศัพท์ อาชีพ เงินเดือน ความเกี่ยวข้อง ซึ่งในใบสัญญาหนึ่งใบต้องมีผู้ค้ำประกันอย่างน้อย 1 คน
        ทางธนาคารจะมีพนักงานคอยดูแล รายละเอียดของพนักงานมีดังนี้ รหัสพนักงาน เลขที่บัตรประชาชน ชื่อ นามสกุล เพศ ที่อยู่ เบอร์โทรศัพท์ ตำแหน่ง เงินเดือน ซึ่งจำนวนของเงินเดือนจะขึ้นอยู่กับตำแหน่งที่พนักงานทำ ซึ่งพนักงานหนึ่งคนสามารถทำงานได้เพียงตำแหน่งเดียวภายในธนาคารนั้น
        ธนาคารจะมีโปรโมชั่นเงินฝากต่างๆให้ลูกค้าได้เลือก โปรโมชั่นจะมีรายละเอียดดังนี้คือ รหัสโปรโมชั่น ชื่อโปรโมชั่น รายละเอียดโปรโมชั่น เงื่อนไขการใช้โปรโมชั่น วันหมดอายุของโปรโมชั่น ซึ่งโปรโมชั่นต่างๆสามารถเปลี่ยนแปลงได้ตลอดเวลา และบัญชีหนึ่งสามารถเลือกใช้โปรโมชั่นได้เพียงโปรโมชั่นเดียว และสามารถเปลี่ยนการใช้โปรโมชั่นได้ซึ่งขึ้นอยู่กับเงื่อนไขของโปรโมชั่นนั้นๆ