LEE CHANGJIN (K0604033)   


  Methods of data storing and data processing are crucial to every business. Usually,  companies overlooked the process of deriving the data. As long the data is obtained, how it  is obtained really does not matter anymore.  Some companies are still using papers with  some usage of office related programs like Microsoft Words or Excel to store or process  data. Using papers to process data can be time consuming and inefficient.  This project is to demonstrate the how database system can be used to better manage and  process data using stored procedures and triggers. The strategy adopted to achieve the  objectives includes project management to better monitor and plan for the project progress,  adopting of the database application lifecycle to develop the database system, reference  and review of literatures to improve on completing this project.    MySQL is used as the DBMS for this project. This project provides details on the EAR Model  of the database system. Triggers and stored procedures are written and tested to fulfill the  system objectives and any enterprise constraints.   This project only covers the designing and testing of the database system. To be able to  implement into usable system still need integration to GUI application. Businesses using  database system the right way, should help to automate tedious manual tasks, making  processing data more efficient and with great chance, minimize any human errors in the  manual tasks. Areas such as security issue and distributed system deployment can be looked  into in the future to improve on this project.         



LEE CHANGJIN (K0604033)   


  I would like to take this opportunity to express my deepest gratitude to the following  individuals who have given me tremendous support and help in completing my Final Year  Project.   ‘Thank you, Ms Norishida Selamat.’    It is a pleasure to have Ms Norishida as my project supervisor, a great tutor with patience  and thoughtfulness.  With her worthy advice and invaluable guidance, she has guided me on  this journey to complete my Final Year Project.   I would like to thank Aidan Wee who used to be the business manager of Valibel  Technologies Pte Ltd. He had shared with me the limitation of the amusement center  operation and provided useful information to aid me in my project. Through him, I have  gotten my project title and system objectives.  I would like to thank my business partner for his extended understanding and abundant  patience he has had given me, allowing me to have a balanced commitment between my  Final Year Project and my startup business.  Finally, I must thank my Mom and Dad for their loving care and inestimable morale support  throughout this bumpy year.   ‘Love ya, Mum & Dad!’ 



LEE CHANGJIN (K0604033)   


  This report includes a CD with the following contents.  1) Final Year Report – ICT499_K0604033.doc  2) Gantt Chart – gantt_chart_K0604033.xls or gantt_chart_K0604033.pdf  3) The full schema – full_schema.sql  4) Test script to populate the database – test_script.sql  5) Backup database – k0604033_backup.sql  6) Acrobat Reader 9.0 Installer  7) MySQL Community Server 5.0 Installer  8) MySQL GUI Tools 5.0 Installer   



.....................  LOGICAL DESIGNING...............................  1............................. 32  3....................................................1..............................................1.........................9.................................... 11  METHODOLOGY ADOPTED . 15  LITERATURE REVIEW............................... 35    ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     5 of 81  ...................... 26  CHANGES TO EAR MODEL .........................................................  1......................  1.............................................................. 9  SYSTEM DEFINITION ......  PHYSICAL DESIGNING .......  1...................................................................4............. 8  1...................  1..........................3....LEE CHANGJIN (K0604033)    JAN08/BHICT/03   TABLE OF CONTENTS    ABSTRACT .  1............................  2..... 24  ATTRIBUTE DESCRIPTION ..................................................... 8  PROJECT AIMS ........ 33  4.........2............................. 23  RELATIONSHIP DESCRIPTION....... 10  SYSTEM OBJECTIVES ........................................ 16  PROJECT MANAGEMENT ........ 13  RESOURCES USED .................. 3  CD‐ROM REPORT ................................................................................  2........................................................ 4  TABLE OF CONTENTS ........  2....................4. 21  2................................................................................................5.................................................................................................................................. 21  ENTITY DEFINITION & DESCRIPTION ............................................. 8  CONTEXT BACKGROUND .................................................................................................................................................  RELATIONAL HEADINGS......6.....................................................  2.............................2.............1.................... 33  3........................... 5  1....................................................................................................................................................7.....................................................................................................................................  INTRODUCTION ...................3.  1.....................  1................................................................. 2  ACKNOWLEDGEMENTS ................... 18  CONCEPTUAL DESIGNING..................................................................................................  ER DIAGRAM.................5..............................................  2............................................................................................................................................8......................  PROJECT TITLE ............................................................................

..... 43  REFERENTIAL INTEGRITY TESTING........................  4.......................... 35  TRIGGER STATEMENTS ............................................................................................................................................................................................................................ 36  STORED PROCEDURE STATEMENTS .......  9...................................................................................1...................................  4...........................3...... 38  FUNCTION STATEMENTS .......................................... 77  8......1............................................................................................................3......................... 45  SYSTEM OBJECTIVE CHECKLIST................................. 72  APPENDIX C: GANTT CHART ......................... 75  APPENDIX D: OTHERS ................  5...4.................. 40  VIEW STATEMENTS........ 44  DATA DOMAIN TESTING ............. 58  RECOMMENDATIONS ................................4...  CONCLUSION ....................1......................................................................................................................................  7..........................................  4................................................................................................................... 46  SYSTEM OBJECTIVE TESTING ............................................  7................3.......  4.2............  6.............2.........................5...................................................................................... 45  CARDINALITY TESTING......4...................  5........................3...LEE CHANGJIN (K0604033)    4...................2........................................ 48  6............................ 42  DATABASE TESTING ............................................................................. 60  7.......... 80  GLOSSARY ..........6.................................................  CRITICAL REVIEW & REFLECTIONS............................................  JAN08/BHICT/03 CREATE TABLE STATEMENTS ................................................. 81  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     6 of 81    .................  5............................................. 61  APPENDIX B: SQL TABLE POPULATION ......................... 43  5.................  5...........................5.................. 58  6............  5...............  APPENDIX A: SQL SCHEMA ................................................ 61  7..................1......................................................  7...........    REFERENCES ........................  6................  5.............................................................. 60  CONCLUSION ...  ENTITY TESTING ..............................2..............................................................................  APPENDICES...


    1.  It is interesting to  discover how a database system can store such gigantic amount of data and yet still able to  sort out relevant data within seconds with just a few lines of query scripting. by undergoing this project. Different users might need the  same data for different purposes. the experience and knowledge gained  by doing this project definitely helps me be better in my project management skill in further  projects. This is due to  my interest in data management and I want to learn how I can manage data with a database  to provide useful yet relevant data for a specific need from a user. Setting my criteria and  schedule to develop this project and fulfilling them is a challenging experience for me.   I had chosen ‘Design and Implementation of a Database’ as my project track.   PROJECT AIMS  In general.   INTRODUCTION  PROJECT TITLE  1. by developing a database solution.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 1.  During the process of this project. I am able to identify my weaknesses in the various stages  of project management. it should solve  and enhance the operational limitation faced by the company. Hence. The company should be able  to manage its data more efficiently with the database system. By knowing these weaknesses.2.  A database system is widely used to provide a central control of data where the data is  accessed and used by multiple users for different purposes.1. improvement plans were made and  scheduled by me to improve on my weak areas. it allows me to access my standards in planning and  managing a project and apply what I have had learnt in UniSIM.    ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     8 of 81    .   The project title that I will be working on is as titled: Sales and Inventory System for Chain  Stores (Amusement Center). Thus.

     Arcade cards  Arcard cards are sold in all centers. For example. it  has to be sent back to the inventory first before deploying to the center. Customers are required to buy arcade cards to play the  arcade machines. Arcade cards are available in different total credit value which cost  differently. it will be send back to the former center if  required.3.     The facilities  These amusement centers can provide up to 3 different types of facilities namely. If a facility needs to be relocated to other center.  Incorporate in 1983. Valibel aims to excel in family entertainment and to achieve top  standards in service and products to meet its business goals. For LAN stations and billiard tables. Valibel manages a  chain of 6 amusement centers. The facilities  are either in a center or in the inventory. Each arcade machines will have its game title and  its credit price for one game play. A promotion will give a discount off the total bill either by an amount  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     9 of 81    .   CONTEXT BACKGROUND  Introduction  Valibel Technologies Ptd Ltd is one of the pioneers in the family entertainment business. The promotion can be for a  particular facility or for the entire center. The arcade machines are categories into different  genres such as shooting. a customer pays S$5 for a 6 dollars credit value card. New facility is send to the inventory before deploying to any centers. When a facility requires servicing. customer pays for the  usage by hourly rate. After servicing is done. Currently.    Promotions  A center can only have one promotion at any one time. Arcade  machines. LAN stations and billiard tables. The promotion will have a start date and end date  as promotion period.LEE CHANGJIN (K0604033)      JAN08/BHICT/03 1. it is  send to the inventory.    Inventory  There is an inventory warehouse to hold the facilities. racing and sport.

  SYSTEM DEFINITION  A centralize system    Valibel has plan for a centralize system to quicken its operations. NRIC or passport number). The sales of the  arcade cards are recorded down on a piece of sales report form by the respective counter  staff of each center.  gender.  A sale system that is used to manage the sales records of the arcade cards. Information to be  captured includes member number.    1.    Membership  A customer can become a member by filling up the membership form. the member will earn member points. identity number (i. The sales of the LAN stations and billiard tables are  managed by a Marco32 system where the respective counter staff prints the sales receipt of  each center at the end of the day. The sales system will be able to  facilitate any member rates or promotions.      ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     10 of 81  . date of birth. the customer will enjoy member pricing if any. contact. as well as  sales records of LAN station and billiard table usage. Promotions are strictly not applicable to  member. Member points will be reset back to zero when the member  expiry point date has past.e. Member can use to points to redeem  for gift items and other prizes. A logging feature to log every event in the inventory for tracking purposes. name.    Sales   Sales record is generated when customers buy arcade cards or pay for LAN/billiard usages.4. For every facility a member  has spent on. The forms are collected from each center and send to the main office  for accounting at the end of the day.  The sales records from these forms and receipts are then keyed into Excel sheet for better  management of the sales data and accounting purpose.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 or by a certain percentage with minimum spending.  A member system used to manage the member points and redemption of items. email and occupation. address. If  the customer is a member.  An inventory system that can keep records on which facility has been send back for  servicing and where a particular facility is previously allocated and when is that action  executed. The sales receipts are also collected and send to the main  office for accounting at the end of the day.

The system will be able to generate sales record on   a.  Inventory System (IS)  1. The system will log this event. A promotion basis if the center is having a promotion.LEE CHANGJIN (K0604033)      JAN08/BHICT/03 1. The system will be able to ensure that the promotion privilege will not be applicable if  the sale is from a member.    Member (ME)  1.  c.  4.  2. The system will be able to move facility records from centers that require maintenance  servicing back to the inventory. 1 point will be accumulated.  3. the system  objective of Inventory System point 1 will be represented as ‘IS: Point 1’. If facility is  currently in a center.  4. The system will be able to accumulate the member points for any sales generated by  member where for every S$0. A membership basis if the customer is a member. The system will log this event. The system will be able to change where the facility is to be deployed. The system will be able to ensure that a center can only have one promotion at any one  time. For example.  b. The system will be able to move facility record back to the center it should be deployed  to when the maintenance servicing is done. The system will log this event. The system will  log this event. changing the center will move the facility to the inventory to be  redeployed.  2.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     11 of 81    .5.10 spent. A normal basis when there is no promotion and the customer is not a member.    Sales (SA)  1. The system will be able to add new facility records into the inventory. The system will be able to register one particular promotion to a center.  3.   SYSTEM OBJECTIVES  The system objectives are represented in the brackets as the respective modules alias which  will be use in this report to represent a particular system objective.

   3. A new member point expiry date will be extended by 1 year.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     12 of 81    .LEE CHANGJIN (K0604033)    JAN08/BHICT/03 2. The system will be able to reset the member points back to zero when the member  point expiry date has past. The system will be able to ensure that the member has sufficient member points for  deduction before registering any redemption made by the member.

 I conducted an interview with the business  development manager.   METHODOLOGY ADOPTED  Every project adopts a certain SDLC as it adheres the important phases that are essential for  developers namely planning. and shortlist the critical ones for the interview. design.1 The database development lifecycle for the project. implementation and testing.1  shows a similar to SDLC structure which I am be adopting for my project.6.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     13 of 81    . This is a database  development lifecycle which I referenced from the book ‘Database System’ on page 272. In figure 1. Refer to appendix for the form.  Gathering of User Requirements Database Design Analysis of Requirements Database System Definition Conceptual Design Logical Design Physical Design Database Testing   Figure 1.1  shows my database development lifecycle. In figure 1.  During the requirement gathering phase.LEE CHANGJIN (K0604033)      JAN08/BHICT/03 1. I have obtained 2 forms related to the company operation namely the membership  registration form and the sales tracking form. Through the interview  and some chatting I have a better understand of the company background and operation  flow. I  have tailored the development lifecycle to use it as a guideline for my project. I brainstormed some questions to ask which I have appended in the  Appendix D: OTHERS. analysis.

  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     14 of 81    . a lot of iteration from various stages to precedent stage occurred where changes  were made and fine tuning was done to the database system. I did a whole system  check again to see if there is any loopholes or bugs that I had missed. the relationship between the entities and their  description. small testing is  done to see if the code works. bugs were  found and I had to go back to the concerns area to solve the bugs. Indeed. I had done revision and reference to have a  better idea on how to do the E‐A‐R (Entity‐Attribute‐Relationship) model. I had iterated at this stage a few time due to changes on the E‐A‐R model. which gives excellent  example of creating triggers and stored procedures. This process iterates for a few  times before I move on to the next module. I was lucky to found a good book. I used the same method. Well doing the codes. ‘Pro MySQL’.  As I am not very good with triggers and stored procedures. sales system and so on.  In a way.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 With the requirements then defining the system definition and objectives. I begin on  conceptual designing of the database system. It involved  defining the entities. From there I did research and  referencing on how to write a good report. I jumped into testing the  inventory system and went back to debug if bugs were found.  Logical design stage is where I done the relationship headings and finalizing the details to  begin on designing and creating the schema. Once I done all of them. each entry’s attributes.  for the next two parts of the database system. I did research and referencing on  books to websites. I did not complete all the codes and script before moving to  testing stage. Until all the system objectives  are fulfilled and test. What I did was that after finish the inventory system. that is when I worked on my report.

  Though SIM does provide work station for students to use. I have use the internet to search for relevant information for further  research. I can work on my report even at night.  It provides GUI features for  me to interact with the DBMS with much ease.   As I am using MySQL as my DBMS.  SIM Library has provided a collection of past Capstone Project Reports which I have  referenced for the content structure and how past project students did their report. National  Libraries provide a wider range of books for reference which some which I required cannot  be found in SIM library.  We usually meet up in SIM and grab any available study area or use the open lab session  available.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     15 of 81    . Luckily.LEE CHANGJIN (K0604033)      JAN08/BHICT/03 1. I would  meet up with other students doing the 499 capstone project to share and help each other. I would need to download and install MySQL Community  Server. Some of the  books that I had borrowed were used for literature research.   RESOURCES USED  I have had visited National Libraries and SIM’s library for research and revision. I will prepare my presentation  on my laptop. Our  tutor will book a meeting room in SIM for the monthly meeting. it is definitely more flexible and  easier with one that I own it. Other then it is  free. I have some experience using it since my polytechnic days. Surfing on internet is like a treasure hunt. I have also installed MySQL  GUI Tools to assist me in managing my database for this project. Once in a while. Towards the end of the project. With Google’s powerful search engine. I have had monthly  meeting with my tutor to follow up the project status and enquire for my tutor’s advice. I have chosen MySQL as this DBMS is an open source database and is proclaimed to  be the world’s most popular open source database by the global community. SIM Library does provide other materials which National Libraries do not have.   However.7. while some others were used  to gain more knowledge and revise on my relevant experiences to do this project. Hence.   Meeting room or study area is also one of the resources required.  A computer with the necessary software installed is crucial for this project too. I  have a laptop with Microsoft Office installed. These  reports that I have referenced gave me an insight of the standard of the report and how I  can improvise when doing mine.   Other then libraries. I  am able to find worthy websites for reference.

 Attributes.    Pro MySQL (Book)  During my ICT 315 course in school. it quotes ‘The Expert’s Voice In Open Source’. it guided me on creating my SQL  schema.3.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     16 of 81    . teaches the  creating of stored procedure in a step by step explanation which I followed closely. trigger and stored procedure is taught only on the  surface. derived and keys. All my codes would not be possible without  this book. it gives me great details  on creating triggers. This book provides a lot of information which I used it to guide me in doing the  project. this book is useful for my conceptual design where it help me plan and set my ER  model. we were taught to know the pseudo code for the trigger but not really go in depth  to try it. multi‐valued. section 9. Stored Procedures.8. Indeed. Building Stored Procedure on Page 354. Chapter 9. stored procedure and more. my SDLC is derived from this book. It does not provide much help in trigger and stored procedure which I will need to  get familiarizes to work on my physical design stage of the database system. designing and testing of the system. It is not a  wonder book but it did help me get started.   On the cover.   LITERATURE REVIEW  For more information regarding the materials that I have referenced. refer to ‘Reference’  section at the end of this report. I used its term Database Application Lifecycle instead of SDLC.  In the end. composite. to familiarize with the different type  of attributes namely single. Chapter 9.  However. Entity‐Relationship Modeling to get some guideline to work on  my ER diagram. as I was asking around if there are any good books which  teach trigger and stored procedure on MySQL. trigger and stored procedure is one area I must research on.  I also reference chapter 11. Same for  Chapter 10 on Functions and Chapter 11 on Triggers.2. The Database Application  Lifecycle.  Database Systems (Book)  I found this book in the UniSIM library when looking for database related information for my  project. This book is  introduced to me by my friend. I managed to find it in West Mall National  Library. Particularly on Section 11. Hence. I reference the diagram on page 272 and used it as a guidance to structure my  SDLC. I had tried out their example trigger and stored procedure before working on  mine.  First. The  Database Application Lifecycle is similar to of a SDLC which consist the requirement  gathering.LEE CHANGJIN (K0604033)      JAN08/BHICT/03 1.

0 Reference Manual  This manual is one material I cannot miss out as I want to know more about MySQL.9 Create Table syntax.  Chapter 12 SQL Statement syntax. it is just a  reference manual without good example and explanations. which give a general description.1. not for trying them out.  Though the publication is four years ago. is a section I used to check my  CREATE statement and for explanation in my report. of all the data type used in MySQL. I will  surely recommend this book to him/her.  It is a good source to get to know MySQL and provide some general information to the area I  am looking for. Anyway in my opinion. I also reference other section on  CREATE trigger syntax. the book is good for  theories reading. Some  reference on page 131 to know more about network diagram. Project Scope Management on page 103 to page 118 on the  guidelines to plan my project scope and derive my work breakdown structure (WBS). However.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     17 of 81    . There is where I found the usage of  string data type ENUM will only give a value from a list of values.   Though the book does give good knowledge of project management but it serves more like  guidelines to me. stored procedure and functions on MySQL. people  with specialized need on MySQL will find it very useful.    MySQL 5. it is still a very good book on project management. I was able to move  on to testing the schema. 12. stored procedure and functions. I just need an  internet connection browse it or I can even download it to my computer.    A Guide to the Project Management Body of Knowledge (Book)  I got to know this book from my ICT 317 course. I  will need to source for better materials. It covers  most of the general information about MySQL. This book has given my great  assistance in completing my physical design and SQL schema. As it is available easily online. As this project is a one man show instead of a team.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 If someone is learning how to use trigger. enough for understand  and application.   I referenced chapter 10.   I referenced on the chapter. if I want to know more in depth information on a specific area. It is a book that covers a very specific area. Data Type. From there. It is given to me on the last day of course.

Identify entity and relationship types  4.1.Literature study  4.2.Trigger Statements  4.3.6.   Task  3.1. Final Report   6.View Statements  5.2  ‐  ‐  ‐  ‐  ‐  ‐ Database Testing  5.3.1. PROJECT MANAGEMENT  Work Breakdown Structure  This is the work breakdown structure after the completion of the project without the potion  on the initial report and presentation. Testing of schemas  6.1  ‐  3  ‐  ‐  ‐  ‐  ‐  ‐  4.5.Identify attributes for entity and relationship Literature study  5. Gather Requirements  ‐  3.3.3.Literature study  4.Create Table Statements  4.Function Statements  4. Literature study  3.1. Interview with key personnel  3.Stored Procedures Statements  4.2.1. Literature study  6.1.Determine attribute domains  4.2.LEE CHANGJIN (K0604033)      JAN08/BHICT/03 1.1.2.Requirement Analysis  ‐  ‐  ‐  ‐  4. Conceptual design Doing of final report  Table study  4. Database Design  4. Implementing of tables  5.Determine candidate and primary key attributes  4.1.1. Physical design the relationship Headings  4. 5.Prepare interview questions  3.1 Work Breakdown Structure  Preceding  Activity  2  ‐  3.3. Populate data  5. 6  ‐  ‐  Estimated  Time  9hrs  4hrs  5hrs  4hrs  1hr  104hrs  38hrs  10hrs  4hrs  6hrs  8hrs  4hrs  6hrs  16hrs  6hrs  10hrs  50hrs  10hrs  8hrs  8hrs  8hrs  8hrs  8hrs  80hrs  10hrs  10hrs  10hrs  50hrs  70hrs  10hrs  60hrs    ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     18 of 81    . Logical design  4.Conduct interview  4.5.1    ‐  4.

LEE CHANGJIN (K0604033)    Network Diagram                                      Figure 1. I need to  check all the sub tasks if I do not know where the bug is from.   ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     19 of 81    . when there is a bug. Instead. Completing all the sub tasks in Physical Design then  move on to testing might take me more time to test. Upon completing the sub task of Physical Design. after Task ‘Create Table Statements’ was done. I moved to  test the sub task. For example.  I chose to do it this way because it is more feasible to complete one component and test it  before moving to the next component. I  broke up Task 3 Physical Design and Task 4 Database Testing into smaller specific tasks as  shown in the network diagram.2 The network diagram used during the project  JAN08/BHICT/03 Conceptual  Design  Logical Design Physical Design  Create Table  Statements  Database Testing Test Create  Table &  populate data Triggers  Statements  Test Triggers  Statements  Stored  procedure  Statements Test Stored  procedure  Statements Function  Statements  Test Function  Statements  View  Statements  Test View  Statements  Report  I did not follow the tasks in order as shown in the WBS when doing the tasks. I move to the  Task ‘Test Create Table & Populate Data’. Imagine.

 Partly is due to me not familiar with trigger and stored  procedure.    Critical Path            Figure 1.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 Completing a sub task and then test it gives me the option to trial and error the sub task and  perfect it before moving to the next one. I completed by fulfilling system objective by system objective. Instead of completing task by task listed in the  WBS. The pattern of doing it  can be seen on the Gantt chart. Please refer to Appendix C: Gantt chart. I took much more time to complete the testing from the estimated as I  spent some time debugging my code.                 ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     20 of 81    .3 Critical Path  Physical  Design  Conceptual  Design  Logical Design Database  Testing  Report writing By doing the Physical Design and Database Testing concurrently. this is my critical path. From  the Gantt chart.

  CONCEPTUAL DESIGNING  ER DIAGRAM  2.1 Center centerNo {PK} name 1.N generates Redemption memberNo{PK redeemItemNo{PK} redeemDatetime{PK} 1.N identityNo makes gender dob address email contact occupation memberCardNo joinedDate points pointsExpiry 1..1 Member memberNo {PK} name 1.N LanBilliardSales salesNo{PK} startTime endTime 1.1 ER Diagram    ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     21 of 81    .1 Promotion promotionNo{PK} description rateType rate minSpent promoType   Figure 2....1 RedeemItem redeemItemNo{PK} redeemDesc pointsCost 1.N has 1.1 make ArcadeCardSales 1.1..N invDescription willHave 1.N salesNo{PK} 1.1 1.. InventoryLog facilityNo{PK} invLogDatetime{PK} 1....N appliesTo 1.1 Game gameNo{PK} gameTitle genre 1.N facilityType facilityStatus normalPrice memberPrice 1..N Facility facilityNo{PK} 1... Or} Sales salesNo{PK} salesType salesDatetime amtPayable 1.N belongsTo 1....1 1.1 Arcade facilityNo{PK} {Optional} plays 1..1 creates 1.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 2...1 ArcadeCard arcadeCardNo{PK} normalCardPrice memberCardPrice cardValue {Mandatory..N relatesTo hosts 1..N CenterPromotion centerNo{PK} promotionNo{PK} startdate{PK} enddate{PK} 1.1 Inventory facilityNo{PK} toDeployAt stores 1.....

 1 point is award to the member.  A center can only have one active promotion at any one time.  Member point expiry date is extended for a year upon expiry. Assumption:  1.  If the value of  toDeployAt of  table Inventory is not null. 5. 6.   2. 7. 2. 8. Member rate is used instead of the promotion rate when a member pays in a center  which is having a promotion. 3.  Member points will be reset to ‘0’ when the point expiry date is past.LEE CHANGJIN (K0604033)    Constraints:  1. the value must exist as a value  of CenterNo of table Center.  JAN08/BHICT/03 A facility must be sent back to the inventory first before deploying to other center.    The constraints and assumptions are mostly derived from the system objectives.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     22 of 81    . For every $0.  Redemption is not applicable if the member does not have sufficient points for  deduction.  3.10 spent by a member.  Member points cannot be negative. A new facility must be deployed to the inventory first.    4. A facility not allocated to any center must be in the inventory.

Center (centerNo. a billiard table or an arcade machine. salesType. Inventory (facilityNo. minSpent. gameTitle. salesDateTime. name) Each instance of Center holds the details of an amusement center. invDescription) Each instance of InventoryLog records the logging details of a particular facility in the inventory. Arcade (facilityNo) Each instance of Arcade is a sub-type of instance Facility. facilityStatus. toDeployAt) There is only an instance of Inventory which record the facilities that are under-servicing and newly purchased. rateType. CenterPromotion (centerNo.2. InventoryLog (facilityNo. facilityType. promotionNo. promoDescription. memberNo) Each instance of Sales records the sales details. promoType) Each instance of Promotion holds the details of a promotion. rate.   Entity Facility ENTITY DEFINITION & DESCRIPTION  Definition/Description (facilityNo. invLogDatetime. genre) Each instance of Game holds the details of the game played on an arcade machine. startDate. amtPayable. ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     23 of 81    . Game (gameNo. Promotion (promotionNo. normalPrice. endDate) Each instance of CenterPromotion records an amusement center having a particular promotion. memberPrice) Each instance of Facility holds details of a facility which can be a LAN-station. Sales (salesNo.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 2.

centerNo) Each instance of ArcadeCardSales records the sales details of a particular arcade card. but a Facility must be either in an Inventory or Center. name. startTime. identityNo. contact. arcadeCardNo. endTime. occupation. ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     24 of 81    . normalCardPrice. redeemItemNo. memberCardPrice. Relationship stores willHave A Facility will have InventoryLogs. redeemDateTime) Each Redemption records the details of a redeemable item redeemed by a particular member. points. facilityNo) JAN08/BHICT/03 Each instance of LanBilliardSales records the sales details of a particular facility.LEE CHANGJIN (K0604033)    LanBilliardSales (salesNo. cardValue) Each instance of ArcadeCard holds the details of an arcade card type. Member (memberNo. redeemDesc.1 Entity Definition & Description    2.3. gender.   RELATIONSHIP DESCRIPTION  Description/Justification An Inventory stores Facilities. Table 2. memberCardNo. A Facility has InventoryLogs. pointsExpiry) Each instance of Member holds details of an individual member. dob. RedeemItem (redeemItemNo. address. ArcadeCardSales (salesNo. joinedDate. but an InventoryLog must belong to a Facility. Redemption (memberNo. An Inventory can be empty. ArcadeCard (arcadeCardNo. pointCost) Each RedeemItem holds the details of a redeemable item. email.

generates A Member generates Sales. belongsTo A RedeemItem belongs to each Redemption. but a CenterPromotion must have a Promotion makes A Center makes ArcadeCardSales. hosts A Center hosts a CenterPromotion. but an ArcadeCardSales must have an ArcadeCard. A RedeemItem can belongs to many Redemption. Table 2. makes A Member makes a Redemption. but a CenterPromotion must belong to a Center. but an ArcadeCardSales must be from a Center.2 Relationship Description  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     25 of 81    . creates A Facility creates LanBilliardSales. A Center can makes many ArcadeCardSales. relatesTo An ArcadeCard is related to each ArcadeCardSales.LEE CHANGJIN (K0604033)    has A Center has Facilities. appliesTo A promotion is applied to CenterPromotions. An ArcadeCard can be related to many ArcadeCardSales. A Facility can creates many LanBilliardSales. An Arcade plays one game. A promotion can be applied to many CenterPromotions. A Center can hosts one CenterPromotion at any one time. A Member can generates many Sales. A Member can makes many Redemptions. plays An Arcade plays a game. but a Sales need not be from a Member. but a game can be played on many Arcades. JAN08/BHICT/03 A Center must have at least one Facilities but Facility must be either in an Inventory or Center. but a LanBilliardSales must be from a Facility. but a Redemption must have a RedeemItem. but a Redemption must be applied from a Member.

’1’) No normalPrice Decimal(5. ‘arc’ for Arcade machine Either: ‘0’ for Maintance.2) No memberPrice Decimal(5. E.4.50 Same as above. For arcade machine will be the credit price for one play.4 Attribute Description for Arcade Description Data type Int(10) Null No Game Attribute GameNo Primary key of the game Int(10) No Description Data type Null ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     26 of 81    .g.3 Attribute Descripton for Facility Arcade Attribute facilityNo Primary key of the facility Table 2.g.’arc’) No facilityStatus Enum(‘0’. ‘bill’ for Billiard table.50 Data type Int(10) Null No facilityType Enum(‘lan’. 7. ‘1’ for Operational For LAN station and billiard table will be hourly rate. only the price is of member rate for the facilities.   Facility ATTRIBUTE DESCRIPTION  Attribute facilityNo Description Primary key of each facility Either: ‘lan’ for LAN station.2) Yes Table 2.’bill’. 7.LEE CHANGJIN (K0604033)      JAN08/BHICT/03 2. E.

7 Attribute Description for InventoryLog Center Attribute centerNo Primary key of the center name Int(10) No Description Data type Null Name of the center. Funland Sembawang Text No Table 2. E. 2008-10-01 18:20:00 Description of the action from inventory Int(10) No Description Data type Null invLogDatetime invDescription Datetime Text No No Table 2.6 Attribute Description for Inventory InventoryLog Attribute facilityNo Foreign key of FACILITY Datetime of this action from inventory. Shooting Text JAN08/BHICT/03 No genre Text No Table 2.8 Attribute Description for Center Promotion ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     27 of 81    .g. Int(10) No Description Data type Null toDeployAt Int(10) Yes Table 2.g. E. Time Crisis 4 Arcade machine’s game genre.g. E.LEE CHANGJIN (K0604033)    gameTitle Arcade machine’s game title. E.5 Attribute Description of Game Inventory Attribute facilityNo Foreign key of FACILITY The center number the facility is going to be deployed at.g.

The rate for the discount. rate is ‘5’ and rateType is percentage.10 Attribute Description for CenterPromotion Sales ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     28 of 81    . end date of this promotion for this center Int(10) No Int(10) No Description Data type Null startDate Datetime No endDate Datetime No Table 2. ‘arc’ for Arcade machine Text Int(10) Description Data type JAN08/BHICT/03 Null No No rateType Enum(‘amt’.’all’) No Table 2.9 Attribute Description for Promotion CenterPromotion Attribute centerNo Composite Primary Key promotionNo Composite Primary Key Composite Primary Key.g. start date of this promotion for this center Composite Primary Key.’bill’. E. ‘bill’ for Billiard table.LEE CHANGJIN (K0604033)    Attribute promotionNo Primary key of promotion promoDescription Promotion details Either: ‘amt’ which means amount. ‘per’ which means percentage. Else it will be an S$5 discount.’arc’. Minimum spending of a customer in order to enjoy this promotion Either: ‘lan’ for LAN station.’per’) No rate Int(3) No minSpent Int(2) No promoType Enum(‘lan’. It will be a 5% discount.

39.13 Attribute Description for ArcadeCardSales Description Data type Int(10) Null No ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     29 of 81    .’arc’) No salesDatetime Datetime No amtPayable Decimal(10.70 Int(10) Description Data type JAN08/BHICT/03 Null No salesType Enum(‘lan’. 2008-10-01 18:20:56 Computered attribute.11 Attribute Description for Sales LanBilliardSales Attribute salesNo Primary key of the sales record Start time when customer used the LAN station or Billiard table E. ‘arc’ for Arcade machine Datetime of this sales record E. amount to be paid by customer E.g.’bill’.g. 18:20:56 Int(10) No Description Data type Null startTime Time No endTime Time No Table 2. ‘bill’ for Billiard table.g.2) No Table 2.12 Attribute Description for LanBIlliardSales ArcardCardSales Attribute salesNo Primary key of the sales record Table 2.LEE CHANGJIN (K0604033)    Attribute salesNo Primary key of a sales record Either: ‘lan’ for LAN station.g. 18:20:56 End time when customer used the LAN station or Billiard table E.

00 Member cost price of arcade card E. 5.00 Decimal(5.14 Attribute Description for ArcadeCard Member Attribute memberNo Primary key for member name Name of member identityNo NRIC or passport number Gender.g.LEE CHANGJIN (K0604033)    ArcadeCard Attribute arcadeCardNo Primary key for the arcade card normalCardPrice Description JAN08/BHICT/03 Data type Int(10) Null No Cost price of arcade card E.’F’) No dob Date No address Address email Email address Text No Text No ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     30 of 81    .2) No memberCardPrice Decimal(5.g. 6. Either: ‘M’ for Male.2) No Table 2. 1980-10-01 text No text No Int(10) No Description Data type Null gender Enum(‘M’.2) No cardValue Decimal(5. 4. ‘F’ for Female Date of birth E.g.g.00 The credit value in the card E.

g.g.16 Attribute Description for RedeemItem Redemption Attribute memberNo Composite Primary Key redeemItemNo Composite Primary Key Int(10) No Int(10) No Description Data type Null ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     31 of 81    . points member has for redemption Date of expiry for the points E.g.LEE CHANGJIN (K0604033)    contact Contact number occupation Occupation Member card number allocated to the member Date of customer becomes a member E. 2009-10-01 Text JAN08/BHICT/03 Int(10) No No memberCardNo Int(10) No joinedDate Date No Points pointsExpiry Int(10) No Date No Table 2.15 Attribute Description for Member RedeemItem Attribute redeemItemNo Primary key for redeem item redeemDesc Redeem item description pointsCost Text No Int(10) No Description Data type Null Points required to redeem the item E. 5000 Int(10) No Table 2. 2000-10-01 Computered attribute.

 For example.   CHANGES TO EAR MODEL  All the generalization has been removed as I am not familiar or taught to design the  database with generalization.LEE CHANGJIN (K0604033)    redeemDatetime Composite Primary Key. I have combined the child entity to the parent entity. This will  give me new constraints to take care of.5.17 Attribute Description for Redemption    2.      ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     32 of 81    . Datetime of the redemption JAN08/BHICT/03 Datetime No Table 2.  This change will be reflected from the relational heading onwards. game number is mandatory attribute  for facility that is an Arcade but is not needed for facility that is a LAN station or Billiard  table.

invDescription) Center (centerNo. memberNo. arcadeCardNo. memberPrice. This is done to remove generalization of the entity. gameNo) Changes: Arcade entity is being merged to Facility entity. promotionNo. The supertype will hold the attributes of the subtype. pointsExpiry) ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     33 of 81    . gameTitle. facilityStatus. genre) Inventory (facilityNo. identityNo.promoType) CenterPromotion (centerNo. normalPrice.   LOGICAL DESIGNING   RELATIONAL HEADINGS  3. cardValue) Member (memberNo. amtPayable. facilityType. centerNo) Changes: LanBilliardSales entity and ArcadeCardSales entity are merged to Sales entity.1. facilityNo. endTime. memberCardPrice. rate. salesType.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 3. occupation. gender. endDate) Sales (salesNo. dob. promoDescription. startDate. address. Game (gameNo. email. points. name) Promotion (promotionNo. Facility (facilityNo. memberCardNo. contact. CenterNo. invLogDatetime. normalCardPrice. salesDateTime. name. minSpent. toDeployAt) InventoryLog (facilityNo. ArcadeCard (arcadeCardNo. startTime. rateType. joinedDate.

LEE CHANGJIN (K0604033)    JAN08/BHICT/03 RedeemItem (redeemItemNo. redeemItemNo. redeemDateTime) ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     34 of 81    . pointCost) Redemption (memberNo. redeemDesc.

CREATE TABLE `facility` ( `facilityNo` int(10) unsigned NOT NULL auto_increment. CONSTRAINT `FK_facility_2` FOREIGN KEY (`gameNo`) REFERENCES `game` (`gameNo`) ON DELETE NO ACTION ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8. please refer  to Appendix A: SQL Schema. Usually the data type. AUTO_INCREMENT is used to generate a unique identifier  for new rows.2) NOT NULL default '0.2) default '0. 12. there are a total of 15 entities.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 4.'arc') NOT NULL. 16.'1') NOT NULL default '0'.   PHYSICAL DESIGNING  CREATE TABLE STATEMENTS  4. length of data type if any. KEY `Facility_Index1` USING BTREE (`centerNo`). 17. I have 12 entities. 9.1 CREATE TABLE statement for Facility  The syntax for CREATE TABLE statements can be easily obtained from MySQL documentation  in MySQL homepage. For the full SQL schema for this project. 10. `gameNo` int(10) unsigned default NULL. 5. 3.'bill'.  Line 1 starts the CREATE TABLE statement for creating the table named ‘facility’. Figure 4. 20. CONSTRAINT `FK_facility_1` FOREIGN KEY (`centerNo`) REFERENCES `center` (`centerNo`) ON DELETE NO ACTION ON UPDATE CASCADE. 4. `centerNo` int(10) unsigned default NULL. there are a total of 12 CREATE TABLE  statements in my SQL schema. PRIMARY KEY (`facilityNo`). `MemberPrice` decimal(5. usually used on a primary key column. 11. 2. 14.  1.   ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     35 of 81    . KEY `Facility_Index2` USING BTREE(`gameNo`).   Line 2 to line 8 defines the column name of the table. 19. 6. `facilityType` enum('lan'. `normalPrice` decimal(5. The rest of the CREATE TABLE statements are more or less  having the same format and structure. if it can be NULL or  NOT NULL and if it has a DEFAULT value.00'. ENUM is an enumeration string object  data type by MySQL which can only have one value from a list of values.00'. 18. 7. After combining the generalised child  entity to its parent. Each column name will need to define  the column definitions. I have picked the CREATE TABLE statements for Facility which  has the most complex code. 13. `facilityStatus` enum('0'.   In my ER Diagram. UNSIGNED is used to define a numeric data type  that cannot have negative value. 8.1. 15.    Line 9 defines the PRIMARY KEY of the table. Hence.

  (IS: Point 3)  2. To erase any game number when facility is not an Arcade. is the index type used for indexing. move the facility back to the  center and log this event. To erase any center number when creating facility.   TRIGGER STATEMENTS  The table below defines the triggers used for the system with a brief description of the  trigger usage and its scope.    Line 14 and line 15 defines the referential actions for the foreign key. InnoDB is used as it is the engine that obeys  the referential integrity protocol.     The trigger to be executed after a record is inserted into  facility table. If facility needs maintenance. the respective child rows matching the foreign  key will be updated as well. Do the logging of this event. To check if game number is provide when facility is an  Arcade. a tree data structure. (IS: Point 4)  3. ON DELETE NO  ACTION defines that no action is to be taken when DELETE statement is executed on the  referenced row that exist in the child row.  3. (IS: Point 1)    The trigger to be executed before a record is updated in the  facility table.  Trigger Name  before_facility_insert  Description/Scope of trigger  The trigger to be executed before a record is inserted into  facility table.    4.  1.  1.   Line 12 and line 13 defines the foreign key constraint for the table. ON UPDATE CASCADE defines that when UPDATE  statement is executed on the referenced row. move the facility to  inventory and log this event. If facility needs to redeploy to another center. To set the new facility in the inventory (IS: Point 1)  2.2.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 Line 10 and line 11 defines the KEY that need to be indexed for faster retrieval of row.   Line 20 defines the DBMS engine for the table.  1.  BTREE. If facility is operational. send it back  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     36 of 81    after_facility_insert  before_facility_update  .  2. DEFAULT CHARSET defines the default character set for the  table which uses the UTF8 unicode character set.

INSERT INTO inventory (facilityNo. 18. // 35. 22.@centerNo. END IF. SET @centerNo = NEW.  1. 8. IF @centerNoOld <> @centerNo AND @facilityStatus = '1' THEN 26. 30. VALUES (@facilityNo. CALL LogInventory(@FacilityNo. toDeployAt) 27.1 Triggers description and scope    I have picked the trigger before_facility_update which has the most complex code  to explain. CALL LogInventory(@facilityNo. (IS: Point 2)    The trigger to be executed before a record is inserted in the  sales table. SET @facilityStatus = NEW. END IF.facilityStatus. END IF. SET @facilityNo = NEW. Add the points from the sales to the member.2 Trigger statement for before_facility_update  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     37 of 81    . 33. 29. DELIMITER // 2. SET @centerNoOld = OLD. IF @facilityStatus = 1 AND @facilityStatus != @facilityStatusOld THEN 19. SET @facilityStatusOld = OLD.centerNo = NULL. 21. 14. toDeployAt) 13. CREATE TRIGGER `before_facility_update` BEFORE UPDATE ON facility 3. CALL LogInventory(@facilityNo. 17. VALUES (@facilityNo. 28. 20.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 to the inventory first.centerNo = NULL. 23.facilityStatus = '0'.NEW.facilityStatus. 16. BEGIN 5.3). IF @facilityStatus = 0 THEN 12. DELIMITER.centerNo.centerNo = (SELECT toDeployAt FROM inventory WHERE facilityNo = @facilityNo). 6. @centerNo). @centerNo). SET NEW. The other triggers more or less have the same format and structure.4). 15. (ME: Point  1)    after_sales_insert  Table 4. 25. 32.   1. END 34. 9. Figure 4. FOR EACH ROW 4. 7.centerNo. SET NEW.@centerNo. DELETE FROM inventory WHERE facilityNo = @facilityNo. SET NEW.centerNo.facilityNo. 11. SET NEW.2). 31. INSERT INTO inventory (facilityNo. 24. 10.

 move the facility to inventory and log this event.  Line 10 to line 16 defines the scope of Point 1 mentioned above:  If facility needs  maintenance.    4.  Line 4 defines the start of the trigger.  move the facility back to the center and log this event.  BEFORE UPDATE ON defines that the  trigger is to be executed before update is done to the facility table. send it back to the inventory first.  Line 18 to line 23 defines the scope of Point 2 mentioned above:  If facility is operational.   STORED PROCEDURE STATEMENTS  The table below defines the stored procedure used for the system with a brief description of  the stored procedure usage and its scope.   Add a Sales record for an arcade card  sales  Add Promotion to a Center  Add points to the Member  System Objectives  AddFacility  InvToInventory  InvToCenter  InvChangeCenter  LogInventory  AddSales  AddSalesArcadeCard  AddPromotionToCenter  AddPoints  IS: Point1  IS: Point 3  IS: Point 4  IS: Point 2  IS: Point 1 to 4  SA: Point 3 to 4  SA: Point 3 to 4  SA: Point 1 to 2  ME: Point 1  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     38 of 81    .  Line 5 to line 9 defines the user defined variables used in the trigger.  Line 25 to line 31 defines the scope of Point 3 mentioned above: If facility needs to redeploy  to another center.  Stored procedure Name  Description/Scope of stored  procedure  Add a Facility   Move Facility to Inventory  Move Facility to Center  Change the Center of Facility  Logging of event in the inventory  Add a Sales record for LAN station and  billiard facility type.  Line 33 defines the end of the trigger.  Line 3 defines that the scope of the trigger is executed for each row inserted.3.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 Line 2 starts the create statement for the trigger.

17. SET @memberNo = NULL. 37. 38. 11. startTime TIME.endTime. INSERT INTO sales VALUES (NULL. 35.@facilityType. SET @facilityType = getFacilityType(@facilityNo). END IF. SET @facilityNo = facNo.@price. SELECT 'Facility is in Inventory or invalid. Member does not exist. LEAVE proc. ELSE 33.   1. 5. SET @memberNo = memNo. 6.2 Stored procedure description and scope    I have picked the stored procedure AddSales to explain. IF memNo IS NOT NULL THEN 14. END IF. @facilityNo. IF @centerNo IS NOT NULL THEN 28. 32. END IF. endTime TIME.startTime. SELECT 'Procedure call ends.' AS Error.@facilityType. IF isMember(memNo) IS NOT NULL THEN 15. SET @centerNo = getFacilityCenter(@facilityNo).@centerNo). DELIMITER // 2. Only NULL or valid member number is accepted. 31. #Check IF member number is valid. END proc. 7.LEE CHANGJIN (K0604033)    RedeemItem  MemberPointChecking  Redemption of item by Member   Check for Member point expiry date  JAN08/BHICT/03 ME: Point 2  ME: Point 3  Table 4. IF not valid. 19.@centerNo. SET @price = 0.endTime. ELSE 18. 20. ELSE 22. ) 9. SET @price = getNormalPrice(@facilityNo). SET @amtpayable = calculatePayable(startTime. memNo INTEGER 8. leave procedure. // ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     39 of 81    .' AS Error. 29. 21. 23. 16. which has the most complex  code. IF @facilityType != 'arc' THEN 30. 27. SET @Price = getMemberPrice(@facilityNo).NULL. 24. END IF. facNo INTEGER. proc:BEGIN 10.NOW(). 34. SELECT 'Facility type is Arcade.0. Not Applicable for this procedure call. @memberNo).@amtpayable. 39. 13.@memberNo. ' AS Error. ( 4. 26. ELSE 36. 12. 25. CREATE PROCEDURE `AddSales` 3.

  Line 29 to line34 checks if the facility type is not an Arcade. goes to line  36. then calculate the payable using  function calculatePayable and add the sales record. CREATE FUNCTION `calculatePayable` (startTime TIME. If member number is not valid. facType TEXT.  LEAVE proc statement will exit the block code. then shows an  error that this transaction is not applicable for arcade facility. Most of the functions I have are small function call which  returns a value. DELIMITER . 8. The codes check if the member number is valid.  Line 3 to line 8 defines the parameters needed for the stored procedure. 6. price DECIMAL(10. SET @centerNo = cenNo.2) 4.    4. shows an error that this facility is in inventory. ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     40 of 81    .  Line 36 check if facility is not in a center.  Figure 4.  1.3 Stored procedure statement for Addsales  JAN08/BHICT/03   Line 2 starts the create statement for the stored procedure.  Line 28 gets the facility type of the facility.2). SET @facilityType = facType. then goes to line 28.LEE CHANGJIN (K0604033)    40. I have picked the most complex function to explain.  Line 9 defines the start of the stored procedure with proc as the label for the block code. Only NULL value or valid member number  is accepted. RETURNS DECIMAL(10.4. endTime TIME.  Line 13 to Line 24 will set the price for a member or non member and the member number  if any.  Line 10 and Line 11 initializes some user defined variables. DELIMITER // 2.  Line 27 check if the facility is in a center.   Line 26 is used to get the center number of the facility. SET @memberNo = memNo. code: BEGIN 5. SET @promoType = getPromotionType(@centerNo). memNo INTEGER) 3.  Line 38 defines the end of this stored procedure. 7. If not in a center.   FUNCTION STATEMENTS  Functions more or less works the same like stored procedure but function is used to return  one specific value when called. If it is an Arcade. cenNo INTEGER.

SET @rateType = getPromotionRateType(@centerNo). 16. Figure 4. END code. SET @result = CAST(@amtPayable AS DECIMAL(10. IF @rateType = 'per' THEN SET @amtPayable = @amtPayable .(@amtPayable*@rate/100). SET @amtPayable = TIME_TO_SEC(TIMEDIFF(endTime. 18. 22. 15. 10. 23.  Line 3 defines the return data type for this function  Line 4 defines the start of the function with code as the label for the block of codes.  Line 12 and line 13 gets the promotion rate type and rate respectively. SET @rate = getPromotionRate(@centerNo). SET @minspent = getPromotionMinimumSpent(@centerNo). RETURN @result.  the promotion type is not for an  Arcade.2)).@rate. END IF. The  criteria includes that the payable is not from a member.  Line 10 calculates the normal payable or member payable for the facility usage.  Line 9 calls a function to obtain the minimum expenditure to qualify for the promotion. // DELIMITER. the promotion type matches the facility type and the minimum payable is at least  met. 20. 17. 21. END IF. 14. 11. ELSE SET @amtPayable = @amtPayable .startTime))/3600 * price. 13.4 Function statement for calculatePayable    Line 2 starts the create statement for the function with the parameters needed for the  function. 24.  Line 5 to 7 defines some user defined values required in the function  Line 8 calls a function to obtain the promotion type.  Line 14 to line 18 calculates the discount to be given. 19.   Line 11 does a few checks to validate if the payable quality for the promotion discount.  Line 22 defines the end of the function.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     41 of 81    .LEE CHANGJIN (K0604033)    JAN08/BHICT/03 9.  Line 20 sets the value to be returned  Line 21 returns the value to the caller. IF @memberNo IS NULL AND @promoType != 'arc' AND @promoType = @facilityType AND @amtPayable >= @minspent THEN 12.

  VIEW STATEMENTS  Views are used to simplify complex queries. facilityNo. Only the current promotion for each center is retrieved. name AS centerName. rate AS promoRate. facilityType AS facilityType. endDate AS promoEndDate. From this view. I can  straight away obtain the promotion details if any without the need to know which center the  facility is in or the promotion number. memberPrice AS memberPrice.   I have created functions based on this View. // Figure 4.5 View create statement for facilitycenterpromoview    This View shows the centers which has or does not has a promotion and the details on the  current promotion. gameTitle AS arcadeGameTitle. startDate AS promoStartDate.  CREATE VIEW `facilitycenterpromoview` AS SELECT facilityNo AS facilityNo.  I have created 2 Views.LEE CHANGJIN (K0604033)      JAN08/BHICT/03 4. minspent AS promoMinSpent. description AS promoDesc. normalPrice AS normalPrice. promotionNo AS promotionNo. promoType as promoType FROM facility LEFT JOIN center USING (centerNo) LEFT JOIN centerpromotion USING (centerNo) LEFT JOIN promotion USING (promotionNo) LEFT JOIN game USING (gameNo) WHERE endDate >= CURDATE() OR endDate IS NULL. I  can easily know which facility is in which center or in inventory and what promotion the  center is having for the facility in that center.      ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     42 of 81    . centerNo AS centerNo.5. rateType AS promoRateType. genre AS arcadeGenre. This make it very handy for coding  functions which I shared by experience in the Critical Review and Reflections section of  Chapter 6 Conclusion. With the facility number. What’s more is that normal SELECT statement  can be executed on the complex query if it is in a View.

 I have used auto increment for my primary keys.1.2 Successful insert into table Facility using NULL for primary key. codes are used to define those columns that are primary key.   Figure 5.2).1) or set value to NULL if I did put it in (Figure 5.   DATABASE TESTING  ENTITY TESTING  5.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 5. Hence at inserting.    ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     43 of 81    . The DBMS will capture the error as  shown in Figure 5.   For my tables. This  allows the DBMS to perform entity integrity checking.  When creating the tables.  Both ways are successful when inserting.1 Successful insert into table Facility by omitting the primary key. I either  omit the primary key column (Figure 5.3 if there is a duplicate of primary key in the table when inserting data.    Figure 5.

3 Unsuccessful inserting of data into table Facility. The result of inserting is unsuccessful as  shown in Figure 5. the DBMS will handle the referential integrity checking.  Figure 5. This is possible when the foreign key constraint is defined during  creating of tables.4. I have  attempted to insert an invalid gameNo foreign key.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 Figure 5. To demonstrate.        5.4 Unsuccessful insert into table Facility using invalid foreign key.   REFERENTIAL INTEGRITY TESTING  Likewise.      ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     44 of 81    .2.

 I have attempted to insert a text  value on a decimal data domain. If a Facility is an Arcade.  As MySQL does not support INSTEAD OF  functionality like MSSQL for trigger. value gameNo is an optional value as it can be NULL. it is optional for a Facility to be an Arcade. it must  have a Game.4.  Refer to the  schema for table Facility. it must provide the value for gameNo.LEE CHANGJIN (K0604033)      JAN08/BHICT/03 5.  before_facility_insert.5 Unsuccessful insert into table Facility using wrong data type. Normal insert  query is not able to perform cardinality testing. The outcome shown in Figure 5.  Figure 5.5 demonstrates that the  inserting is unsuccessful.        5. I have used trigger.   CARDINALITY TESTING  In my ER diagram.   CREATE TRIGGER `before_facility_insert` BEFORE INSERT ON facility FOR EACH ROW BEGIN …… ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     45 of 81    . Hence. to capture this constraint and manipulate it into a  referential integrity error to prevent the inserting.   DATA DOMAIN TESTING  Data domain constraint checking can be done by the DBMS when the data type is defined in  the schema when creating the tables.6 when inserting. For demonstration. I have used the following code manipulation in my  trigger for capturing this constraint which give an error shown in figure 5.3. Meaning  when inserting a Facility as an Arcade. I have combined the Facility entity and Arcade entity into one table.

      On the other hand. END IF.6 Unsuccessful insert with referential integrity error for cardinality checking. Please refer to the Appendix A:  SQL Schema for more information on the functions.gameNo = 'gameNo_not_defined'.     Inventory System  System Objective  1.2 demonstrates a successful insert query when insert a non  Arcade facility (LAN Station) with gameNo value as NULL. The system will be able to add new  facility records into the inventory.facilityType = 'arc' AND NEW.   SYSTEM OBJECTIVE CHECKLIST  This checklist is an overview of which triggers and stored procedures are used to fulfill the  system objective. Figure 5.gameNo IS NULL THEN SET NEW. The  system will log this event.    5. If facility is  currently in a center. There are a couple of common functions which are not listed as those  functions are called within the trigger or stored procedures.  Trigger/Stored procedure Used  Store: AddFacility  Trigger: before_facility_insert  Trigger: after_facility_insert  Store: LogInventory    Store: InvChangeCenter  Trigger: before_facility_update  Store: LogInventory  2.5.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 IF NEW. …… Figure 5. changing the  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     46 of 81    . The system will be able to change where  the facility is to be deployed.

  2.1 Codes that fulfill Inventory system objectives  JAN08/BHICT/03 Store: InvToInventory  Trigger: before_facility_update  Store: LogInventory    Store: InvToCenter  Trigger: before_facility_update  Store: LogInventory    Sales  System Objective  1.  Table 5.  Table 5. The system will be able to move facility  records from centers that require  maintenance servicing back to the  inventory. The system will be able to ensure that a  center can only have one promotion at  any one time.  4. A membership basis if the  customer is a member.  b. The system will be able to ensure that  the promotion privilege will not be  applicable if the sale is from a member. The system will be able to register one  particular promotion to a center.  c. The system will log this  event. The system will log this event. The system  will log this event. A promotion basis if the center is  having a promotion. A normal basis when there is no    promotion and the customer is  not a member.LEE CHANGJIN (K0604033)    center will move the facility to the  inventory to be redeployed. The system will be able to generate sales  Store: AddSales   OR  record on   Store: AddSalesArcadeCard  a.  4.  Trigger/ Stored procedure Used  Store: AddPromotionToCenter  Store: AddPromotionToCenter  3. The system will be able to move facility  record back to the center it should be  deployed to when the maintenance  servicing is done.2 Codes that fulfill Sales system objective  Store: AddSales  OR  Store: AddSalesArcadeCard    ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     47 of 81    .   3.

LEE CHANGJIN (K0604033)      Member  System Objective  1.6. The system will log  this event.  2.  Statement for execution:  A. I have combined some of the objectives as they  are linked or is of similar functionality. CALL AddFacility(‘lan’. NULL). SI: Point 1  The system will be able to add new facility records into the inventory. 10 points will be  accumulated.  Result:  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     48 of 81    . 3.3 Codes that fulfill member system objectives  JAN08/BHICT/03 Trigger/ Stored procedure Used  Trigger: after_sales_insert  Store: AddPoints  Store: RedeemItem  Store: AddPoints  Store: MemberPointChecking    5. The system will be able to reset the  member points back to zero when the  member point expiry date has past. I have conducted testing for each of the objectives  to demonstrate that the objectives are met. The system will be able to ensure that  the member has sufficient member  points for deduction before registering  any redemption made by the member.  Inventory System.   SYSTEM OBJECTIVE TESTING  With the checklist in the previous section.    Table 5. The system will be able to accumulate  the member points for any sales  generated by member where for every  S$1 spent.5.   3. A  new member point expiry date will be  given by the system. 2.

  Figure 5.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 As shown in the screen captures below. If facility is currently  in a center.  This demonstrates that the system  fulfills Point 1.  Statement for execution:  A.  B. the facility is successfully inserted and is in the  inventory.7a ‐ Successful executing of statement.2).  Figure 5. Logging of this event is also successfully.  Figure 5.  Figure 5. SI: Point 2  The system will be able to change where the facility is to be deployed. CALL InvChangeCenter (2.7d ‐ This event is logged. The  system will log this event.7b ‐ Facility1 is inserted.  Inventory System. CALL InvChangeCenter (1.7c ‐ Facility1 is in the inventory. changing the center will move the facility to the inventory to be redeployed.    Result:  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     49 of 81    .1).

 This demonstrates that the  system fulfills Point 2.8c ‐ Facility2 is sent back to inventory upon changing center.  Executing the statements demonstrated that the objective is met. Both facilities are allocated a center each.    Figure 5.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 Currently.    Figure 5. Facility2 is moved back to inventory and to be  deployed to Center 2 which is shown in the inventory log as well. Facility1  does not have any Center appointed to it.8d ‐ Facility2 is in the inventory.8b ‐ Facility1 is in inventory with no center allocated yet.    Figure 5.8e ‐ This event is logged.    Figure 5. there are 2 facilities.8a ‐ Facility1 has not allocated a center and Facility2 is in a center. Facility1 is in inventory and Facility2 is in Center 1. Facility1 now is in  inventory and to be deployed to Center1.    ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     50 of 81    .    Figure 5.

 SI: Point 3 & Point 4  JAN08/BHICT/03 3) The system will be able to move facility records from centers that require maintenance  servicing back to the inventory.LEE CHANGJIN (K0604033)    Inventory System.9b ‐ Facility1 is not in the inventory after executing the statement.  Executing the statement shows that Facility1 is sent to  Center1 and this event is logged. The system will log this event. CALL InvToCenter(1).    Figure 5.  4) The system will be able to move facility record back to the center it should be deployed to  when the maintenance servicing is done. Currently both  facilities are in the inventory.  Statement for execution:  A.    Figure 5.    ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     51 of 81    .9a ‐ Facility1 is in Center1 after executing the statement. The system will log this event.    Figure 5.9c ‐ This event is logged. This demonstrates that the system fulfills Point 4 as well as  Point 3.    Result:  I have used Point 4 to do the testing as both serve similar functionality.

    Figure 5. INTERVAL 1  WEEK)). DATE_ADD(CURDATE(). CALL AddPromotionToCenter(1.  Result:  Executing the statement adds Promotion7 to Center1 for 1 week starting from the current  date as shown below.  JAN08/BHICT/03 2) The system will be able to ensure that a center can only have one promotion at any one  time. This demonstrates that the system fulfills  Point 2. CURDATE().    Figure 5.  b) A promotion basis if the center is having a promotion.  Statement for execution:  A.    Sales System. SA: Point 1 & Point 2  1) The system will be able to register one particular promotion to a center. SA: Point 3 & Point 4  3) The system will be able to generate sales record on   a) A normal basis when there is no promotion and the customer is not a member.10b ‐ Center1 cannot have another promotion. This demonstrates that the system fulfills Point 1.10a ‐ Center1 is having a promotion.  The  attempted adding of the promotion is ignored. 7.  Executing the statement.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     52 of 81    .  c) A membership basis if the customer is a member. From the View centerpromoview. adding other promotion to the current center causes an error  message stating that Center1 is currently having a promotion as shown below.LEE CHANGJIN (K0604033)    Sales System. it shows that Center1 is currently  having Promotion7.

 a Billiard Table. 1).  Even though the center is having promotion for  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     53 of 81    . 1). CALL AddSales(1. Center1 is having Promotion7 which states that any LAN station usage of $15 and  more will have a 10% deduction.  Statement for execution:  A. '18:00:00'. CALL AddSales(1.  Executing Statement (B) generates sales record for Facility1.    Result:  Currently.  C. a LAN station.    Figure 5. '11:00:00'. '11:00:00'. CALL AddSales(1.50 per hours cost $17. '18:00:00'. This demonstrate the system fulfill the objective of Point 3(b). NULL).  Executing Statement (D) generates sales record for Facility1. NULL).    Figure 5. CALL AddSales(3.11b ‐ New sales record generated from executing Statement (B) & (C). 4 hours of LAN at  $2. a LAN station.  B. Executing Statement (C) shows a 10% discount otherwise for a 7hours  LAN. '15:00:00'.11a ‐ Sales record generated from executing Statement (A).  E. CALL AddSales(1. This demonstrate the system fulfill the objective of Point 3(a).  This demonstrate the system fulfill the objective of  Point 3(c). '11:00:00'. a LAN station. '11:00:00'. NULL). 4 hours of billiard at $7 per hours cost $28 and the center is having  promotion for LAN station.  Executing Statement (E) generates sales record for Facility1.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 4) The system will be able to ensure that the promotion privilege will not be applicable if the  sale is from a member. Executing Statement (A) generates sales record for  Facility3. '11:00:00'.50 per hours cost $10 for member.50 for member. '15:00:00'. 7 hours of LAN at  $2. '15:00:00'. 4 hours of LAN at  $3 per hours cost $12 but it is not given a 10% discount as the sales did not have a minimum  expenditure of $15.  D.

LEE CHANGJIN (K0604033)    JAN08/BHICT/03 LAN.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     54 of 81    .11c ‐ New sales record generated from executing Statement (D) & (E).    Member System. CALL AddSales(3. a total  of 248 points is added to Member1’s points. the promotion privilege is not applicable for a sales record from a member. '15:00:00'.     Figure 5. 1).  Executing Statement (A) will generate a sales record of $24.  Statement for execution:  A. This  demonstrate the system fulfill the objective of Point 4.80 for Member1.12a ‐ Member1 currently has 2275 points.    Figure 5. 1 point will be accumulated. Hence.    Result:  As shown in the screen capture below.10 spent. '11:00:00'. This demonstrate the system fulfill the  objective of Point 1. Member1 has total points of 2275  adding 248 from the Billiard usage to give 2523. Member1 currently has 2275 points. ME: Point 1  The system will be able to accumulate the member points for any sales generated by  member where for every S$0. Before.

CALL RedeemItem(1.LEE CHANGJIN (K0604033)    JAN08/BHICT/03   Figure 5. After executing Statement  (A).12c shows that Member1 currently has 2523 points.  Statement for execution:  A.12c ‐ Member1 now has 2523 points after paying for the Billiard usage.  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     55 of 81    .80 for Member1. CALL RedeemItem(1. Item14 cost 1000 points and Item15 cost 5000  points.14).    Result:  As shown in the screen capture below.    Member System. 1000 points is deducted from Member1 and the redemption is registered.12b ‐ Generate a sales record of $24.13a ‐ Points cost for Item14 and Item15  In Figure 5.     Figure 5.  B.15). ME: Point 2  The system will be able to ensure that the member has sufficient member points for  deduction before registering any redemption made by the member.    Figure 5.

  Next.13b ‐ Member1 now has 1523 after redeeming Item14.   Statement for execution:  A. ME: Point 3  The system will be able to reset the member points back to zero when the member point  expiry date has past.    Result:  Member3’s points expiry date is expired.    Figure 5. After executing Statement (A).LEE CHANGJIN (K0604033)    JAN08/BHICT/03   Figure 5.     Member System. This demonstrate the system fulfill the objective of  Point 2. This demonstrate the system  fulfill the objective of Point 3. CALL MemberPointChecking().  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     56 of 81    .13d ‐ Member1 does not have enough points to redeem Item15.13c ‐ The redemption is recorded. executing Statement (B) shows that Member1 does not have enough points to redeem  Item15 and the redemption is ignored.    Figure 5. Member3 points is  reset to 0 and the points expiry date is extended by 1 year. A new member point expiry date will be extended by 1 year.

LEE CHANGJIN (K0604033)    JAN08/BHICT/03   Figure 5.14b ‐ Member3 points and expiry date after executing Statement (A).   ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     57 of 81    .     Figure 5.14a ‐ Member3 points and expiry date before executing Statement (A).

 to get the  promotion data of that center. I will to use the center number to calls a function to obtain  the promotion number. Refer  to the View centerpromoview in Appendix A: SQL Schema.    Conducting Interviews  Before going for the interview with the business manager of Valibel Technologies Pte Ltd for  requirement gathering.1. I have created  View centerpromoview which left join center and promotion data.   Creating Functions based on Views  While I was creating the functions for my system.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 6. with it calls another function to obtain data relating to that  promotion. in some logic. I realized that if I need to make any  changes to the table structure. From the example mentioned earlier. However. it really makes code  modification easier. I have planned some interview questions to be asked. Single project management is still manageable for  me. I thought I am  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     58 of 81    . How can I make the coding friendlier in  the long run? That is when Views come into my mind.   I have recoded my functions to query from the Views. Modifying one time than many. How I can improve on this is to learn and  practice risk management. At time when time is a constraint. I will need to tediously modify all the functions which are  based on that table e. I just need to modify the View instead of  all the functions rely on that table.     Project Management Vs. Time Management  Even though I have taken up Project Management course in UniSIM. For example. I still need to improve on my planning and time  management to better control my situation. I am in a situation where I need to manage multiple projects other than my  academic project. Moreover.   CONCLUSION  CRITICAL REVIEW & REFLECTIONS  6.   I was thinking aloud. When there are any changes to the  individual table structure used to create that View. I can do simply SELECT query on  the View to obtain the data I want.  Hence with the  center number. I need to call 2 functions in  order to get the data. a center can have promotion. table name. I can call one function to obtain promotion data if the center has one. hey this is rather not efficient. By making complex query into View. I need to prioritize and jeopardize the  time allocated for my academic project.g. Hence. I still need tremendous  practice and hands on to be good in it.

LEE CHANGJIN (K0604033)    JAN08/BHICT/03 well prepared with the list of questions and I can ask systematically.  Even though I had the questions orderly listed to be asked.      Writing a good report  English language is one of my worst subjects. and the database is just mainly for querying (SELECT. Learning to create triggers and stored procedure in MySQL will be an asset to  me. With the template. For my practice. Hence when doing this report. and improves on  it as I conduct more requirement gathering. Some  limitation is that MySQL does not support CHECK constraints on domain data and the trigger  does not support INSTEAD OF functionality like MSSQL.  Nevertheless.  What is the point of doing the report if the reader gets the wrong meaning? This is one area  I am weak in and need great practices to improve. but I have never really gone in depth for database  programming. However. the tendency of hopping  between questions is still high. How I can improve is the make a template for interview questions. it is better to measure the scope and objectives of the system and to evaluate  before deciding on which DBMS to use for the project. I should have made the questions into a checklist which is better to  manage. language flow and structure still play a major part in the reporting. I usually would program a web application to interact with  the database. users will want improvements and all this common  functionality among the different databases might be in the MySQL development pipeline.    Database coding and syntax  Though I love programming. doing this project in MySQL gave me an insight of the limitation of this DBMS. Even though. I was wrong.  For the DBMS to have referential integrity. Then I got out of hand with the  questions I want to ask. However. I have to use InnoDB storage engine.    Using MySQL as the DBMS  I have chosen MySQL over other DBMS is because I am some prior knowledge in MySQL then  other DBMS.    ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     59 of 81    . I do not have  the confidence to produce a good report. UPDATE and DELETE). I have read up on materials on how  to write a good report. As MySQL is an open source  database and is very widely used. it can be more efficiency in  future interviews. From this project. I have learnt much on database programming using  trigger and stored procedure which will be an asset to me when I take on future web  application projects.  Most of the checking will be done by the web server before interacting with the database to  execute the query. This is due to interviewee sometime talks about information  related to another question instead of the one being asked.

 I will need to conduct research on the related area. figures and tables. I have developed a learning process for myself. I am thinking of a general database system which can  accommodate any general chain stores. I cannot use it for this project. it is  a good experience to explore into database scripting. evaluate what I have hands on  and done. section 1.   CONCLUSION  The database system I have done for this project has met its system objectives. In this way or another way. creating triggers and stored procedures. Trend analysis module with GUI can be an add‐on  project to this database system. practices with hands on. understand  the information I am researching on. then research on area I am weak in or unsure of.    6. A good planning definitely leads to better and efficient work. putting what I have learnt  into practice is the best way to strengthen my areas.   RECOMMENDATIONS  Before the birth of this project idea.  From this project. All this is  possible with triggers and stored procedures call to check on the constraints of the system  objectives. this project is focus on database design.  Showing trend analysis becomes rather inapplicable for this project as trend analysis  requires complex join of normal querying. and I should improve on the process with other  small sub processes that I have learnt. Although I am  familiar with web server scripting like PHP.3. If there does not have a  development lifecycle to serve me as a guideline. not knowing  where to carry on. I shared how I did my project. I would have been in a mess.6 Methodology Adopted.  However.2.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 6.)  ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     60 of 81    . For area where I am new  or need improvement on. The system will be able to give trend analysis.  Other areas which this project can look into include the security issue of using MySQL and  deployment of the database system in a distributed environment. It is a challenge to me as this project is purely on database scripting which I am  not good in it and the ICT315 course which I took is a very general introduction into  database which did not really go in depth on triggers and stored procedures. caption.  In my report. what was planned before effects what I was doing later. Nevertheless. So this learning process iterates  at every stage in the development lifecycle.      (About 7500 words for content without include the header. In my general  view.

`joinedDate` date NOT NULL. `occupation` text NOT NULL. CREATE TABLE `member` ( `memberNo` int(10) unsigned NOT NULL auto_increment. `description` text NOT NULL.'F') NOT NULL. `rate` int(3) unsigned NOT NULL. `email` text NOT NULL.'all') NOT NULL. `contact` int(10) unsigned NOT NULL. `minspent` int(2) NOT NULL default '0'. CREATE TABLE `center` ( `centerNo` int(10) unsigned NOT NULL auto_increment.'arc'. `ratetype` enum('amt'.'per') NOT NULL. PRIMARY KEY (`promotionNo`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8. `promoType` enum('lan'. ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     61 of 81    . `dob` date NOT NULL. Table: promotion  DROP TABLE IF EXISTS `promotion`. PRIMARY KEY (`gameNo`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8. CREATE TABLE `game` ( `gameNo` int(10) unsigned NOT NULL auto_increment. `genre` text NOT NULL. `name` text NOT NULL.1. `memberCardNo` int(10) unsigned NOT NULL.'bill'. `gameTitle` text NOT NULL. `address` text NOT NULL.   APPENDICES  APPENDIX A: SQL SCHEMA  7. Table: member  DROP TABLE IF EXISTS `member`. CREATE TABLE `promotion` ( `promotionNo` int(10) unsigned NOT NULL auto_increment. `identityNo` text NOT NULL. PRIMARY KEY (`centerNo`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8. Table: center  DROP TABLE IF EXISTS `center`. `points` int(10) unsigned NOT NULL. `gender` enum('M'.   CREATE TABLE SCHEMA   Table: game  DROP TABLE IF EXISTS `game`.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 7. `name` text NOT NULL.

KEY `Inventory_Index1` USING BTREE (`facilityNo`).'1') NOT NULL default '0'. PRIMARY KEY (`facilityNo`). `toDeployAt` int(10) unsigned default NULL. CREATE TABLE `arcadecard` ( `arcadeCardNo` int(10) unsigned NOT NULL auto_increment. `pointsCost` int(10) unsigned NOT NULL. `normalPrice` decimal(5. PRIMARY KEY (`facilityNo`). PRIMARY KEY (`memberNo`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8. CONSTRAINT `FK_facility_1` FOREIGN KEY (`centerNo`) REFERENCES `center` (`centerNo`) ON DELETE NO ACTION ON UPDATE CASCADE.2) NOT NULL. `memberCardPrice` decimal(5. `redeemDesc` text NOT NULL.00'.00'.'bill'. CONSTRAINT `FK_inventory_1` FOREIGN KEY (`facilityNo`) REFERENCES `facility` (`facilityNo`) ON DELETE CASCADE ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     62 of 81    . CREATE TABLE `inventory` ( `facilityNo` int(10) unsigned NOT NULL. `MemberPrice` decimal(5. Table: facility  DROP TABLE IF EXISTS `facility`. KEY `Facility_Index2` USING BTREE(`gameNo`). `normalCardPrice` decimal(5. KEY `Facility_Index1` USING BTREE (`centerNo`). `cardValue` decimal(5. JAN08/BHICT/03 Table: arcadecard  DROP TABLE IF EXISTS `arcadecard`.LEE CHANGJIN (K0604033)    `pointsExpiry` date NOT NULL. CREATE TABLE `facility` ( `facilityNo` int(10) unsigned NOT NULL auto_increment.2) default '0. `facilityType` enum('lan'. `facilityStatus` enum('0'. CREATE TABLE `redeemitem` ( `redeemItemNo` int(10) unsigned NOT NULL auto_increment.2) NOT NULL.2) NOT NULL default '0. `centerNo` int(10) unsigned default NULL. CONSTRAINT `FK_facility_2` FOREIGN KEY (`gameNo`) REFERENCES `game` (`gameNo`) ON DELETE NO ACTION ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8.'arc') NOT NULL. PRIMARY KEY (`redeemItemNo`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8. Table: inventory  DROP TABLE IF EXISTS `inventory`. Table: redeemitem  DROP TABLE IF EXISTS `redeemitem`. `gameNo` int(10) unsigned default NULL. PRIMARY KEY (`arcadeCardNo`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8.2) NOT NULL.

'bill'. `memberNo` int(10) unsigned default NULL. CONSTRAINT `FK_inventorylog_1` FOREIGN KEY (`facilityNo`) REFERENCES `facility` (`facilityNo`) ON DELETE NO ACTION ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8. `endTime` time NULL. PRIMARY KEY (`centerNo`. CONSTRAINT `FK_centerpromotion_1` FOREIGN KEY (`centerNo`) REFERENCES `center` (`centerNo`) ON DELETE CASCADE ON UPDATE CASCADE. Table: sales  DROP TABLE IF EXISTS `sales`. PRIMARY KEY (`salesNo`). CREATE TABLE `inventorylog` ( `facilityNo` int(10) unsigned NOT NULL. PRIMARY KEY (`facilityNo`. `salesType` enum('lan'. `startDate` datetime NOT NULL. KEY `InventoryLog_Index1` USING BTREE (`facilityNo`). CREATE TABLE `centerpromotion` ( `centerNo` int(10) unsigned NOT NULL.`startDate`. KEY `Sales_Index2` USING BTREE (`facilityNo`). `invDescription` text NOT NULL.`endDate`). `promotionNo` int(10) unsigned NOT NULL. KEY `CenterPromotion_Index1` USING BTREE (`centerNo`). `amtPayable` decimal(10.`promotionNo`. KEY `Sales_Index4` USING BTREE (`centerNo`).'arc') NOT NULL. CREATE TABLE `sales` ( `salesNo` int(10) unsigned NOT NULL auto_increment. `centerNo` int(10) unsigned default NULL.`invLogDatetime`). Table: centerpromotion  DROP TABLE IF EXISTS `centerpromotion`. KEY `CenterPromotion_Index2` USING BTREE (`promotionNo`). `endDate` datetime NOT NULL. CONSTRAINT `FK_sales_1` FOREIGN KEY (`memberNo`) REFERENCES `member` (`memberNo`) ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     63 of 81    . `facilityNo` int(10) unsigned default NULL. CONSTRAINT `FK_centerpromotion_2` FOREIGN KEY (`promotionNo`) REFERENCES `promotion` (`promotionNo`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8. `startTime` time NULL. `invLogDatetime` datetime NOT NULL. KEY `Sales_Index3` USING BTREE (`arcadeCardNo`). KEY `Sales_Index1` USING BTREE (`memberNo`). `arcadeCardNo` int(10) unsigned NULL.LEE CHANGJIN (K0604033)    ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8. JAN08/BHICT/03 Table: inventorylog  DROP TABLE IF EXISTS `inventorylog`.2) NOT NULL. `salesDatetime` datetime NOT NULL.

KEY `Redemption_Index1` USING BTREE (`redeemItemNo`). CONSTRAINT `FK_sales_4` FOREIGN KEY (`centerNo`) REFERENCES `center` (`centerNo`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8. rate AS promoRate. rateType AS promoRateType. CONSTRAINT `FK_redemption_1` FOREIGN KEY (`memberNo`) REFERENCES `member` (`memberNo`) ON DELETE NO ACTION ON UPDATE CASCADE. CREATE VIEW `centerpromoview` AS SELECT centerNo AS centerNo.LEE CHANGJIN (K0604033)    ON DELETE SET NULL ON UPDATE CASCADE. endDate AS promoEndDate. `memberNo` int(10) unsigned NOT NULL default '0'. CONSTRAINT `FK_redemption_2` FOREIGN KEY (`redeemItemNo`) REFERENCES `redeemitem` (`redeemItemNo`) ON DELETE NO ACTION ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8. minspent AS promoMinSpent. promotionNo AS promotionNo. KEY `Redemption_Index2` USING BTREE (`memberNo`). startDate AS promoStartDate. CONSTRAINT `FK_sales_3` FOREIGN KEY (`arcadeCardNo`) REFERENCES `arcadecard` (`arcadeCardNo`) ON DELETE SET NULL ON UPDATE CASCADE. promoType as promoType ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     64 of 81    . name AS centerName.`redeemItemNo`. JAN08/BHICT/03 Table: redemption  DROP TABLE IF EXISTS `redemption`. PRIMARY KEY (`redeemDatetime`. Only the current promotion for each center is retrieved. CONSTRAINT `FK_sales_2` FOREIGN KEY (`facilityNo`) REFERENCES `facility` (`facilityNo`) ON DELETE SET NULL ON UPDATE CASCADE.`memberNo`). description AS promoDesc. `redeemItemNo` int(10) unsigned NOT NULL. CREATE TABLE `redemption` ( `redeemDatetime` datetime NOT NULL.   CREATE VIEWS SCHEMA   View: centerpromoview  DELIMITER // DROP VIEW IF EXISTS `centerpromoview` // #Showing the centers which has or does not has a promotion and the details on the current promotion.

facilityStatus = '0'. View: facilitycenterpromoview  DELIMITER // DROP VIEW IF EXISTS `facilitycenterpromoview` // #Showing the facility which has or does not has a promotion and the details on the current promotion and the center which the facility is in.facilityType = 'arc' AND NEW. CREATE VIEW `facilitycenterpromoview` AS SELECT facilityNo AS facilityNo. normalPrice AS normalPrice. memberPrice AS memberPrice. SET NEW.facilityType <> 'arc' THEN SET NEW. startDate AS promoStartDate. IF NEW.   CREATE TRIGGER SCHEMA   Trigger: before_facility_insert  DELIMITER // DROP TRIGGER IF EXISTS `before_facility_insert` // CREATE TRIGGER `before_facility_insert` BEFORE INSERT ON facility FOR EACH ROW BEGIN SET @center = NEW.gameNo = 'gameNo_not_defined'.centerNo = NULL. promotionNo AS promotionNo. minspent AS promoMinSpent. gameTitle AS arcadeGameTitle. rate AS promoRate.centerNo. END IF. // DELIMITER . centerNo AS centerNo. ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     65 of 81    . END IF. name AS centerName. IF NEW.gameNo IS NULL THEN SET NEW. facilityType AS facilityType. description AS promoDesc. rateType AS promoRateType. promoType as promoType FROM facility LEFT JOIN center USING (centerNo) LEFT JOIN centerpromotion USING (centerNo) LEFT JOIN promotion USING (promotionNo) LEFT JOIN game USING (gameNo) WHERE endDate >= CURDATE() OR endDate IS NULL. IF NEW.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 FROM center LEFT JOIN centerpromotion USING (centerNo) LEFT JOIN promotion using (promotionNo) WHERE endDate >= CURDATE() OR endDate IS NULL. END IF.facilityStatus <> 0 THEN SET NEW.gameNo = NULL. // DELIMITER . genre AS arcadeGenre. Only the current promotion for each center is retrieved. endDate AS promoEndDate.

facilityStatus. CALL LogInventory(@facilityNo. CALL LogInventory(@facilityNo. JAN08/BHICT/03 Trigger: after_facility_insert  DELIMITER // DROP TRIGGER IF EXISTS `after_facility_insert` // CREATE TRIGGER `after_facility_insert` AFTER INSERT ON facility FOR EACH ROW BEGIN SET @newFacility = NEW.2).centerNo = NULL.4).3). SET NEW.centerNo. END // DELIMITER. SET NEW. @centerNo). CALL LogInventory(@FacilityNo. IF @centerNoOld <> @centerNo AND @facilityStatus = '1' THEN INSERT INTO inventory (facilityNo.facilityStatus. SET NEW.centerNo = NULL. END // DELIMITER. Trigger: after_sales_insert  DELIMITER // DROP TRIGGER IF EXISTS `after_sales_insert` // CREATE TRIGGER `after_sales_insert` AFTER INSERT ON sales ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     66 of 81    .facilityNo. END IF. CALL LogInventory(@newFacility.facilityStatus = '0'.centerNo = (SELECT toDeployAt FROM inventory WHERE facilityNo = @facilityNo).centerNo. SET @facilityStatusOld = OLD.LEE CHANGJIN (K0604033)    END // DELIMITER. SET @facilityNo = NEW.centerNo. END IF. Trigger: before_facility_update  DELIMITER // DROP TRIGGER IF EXISTS `before_facility_update` // CREATE TRIGGER `before_facility_update` BEFORE UPDATE ON facility FOR EACH ROW BEGIN SET @facilityStatus = NEW. SET @centerNo = NEW.@center. DELETE FROM inventory WHERE facilityNo = @facilityNo. IF @facilityStatus = 1 AND @facilityStatus != @facilityStatusOld THEN SET NEW. INSERT INTO inventory (facilityNo. END IF. @centerNo).NEW.@centerNo. SET @centerNoOld = OLD.facilityNo. IF @facilityStatus = 0 THEN INSERT INTO inventory (facilityNo. toDeployAt) VALUES (@facilityNo. toDeployAt) VALUES (@facilityNo.@center).@centerNo.1). toDeployAt) VALUES (@newFacility.

If getFacilityCenter(@facilityNo) IS NOT NULL THEN UPDATE facility SET facilityStatus = '0' WHERE facilityNo = @facilityNo. memberPrice.'arc') THEN SELECT 'Facility Type is invalid. `normalPrice`. Stored procedure: InvToInventory  DELIMITER // DROP PROCEDURE IF EXISTS `InvToInventory` // CREATE PROCEDURE `InvToInventory` ( facNo INTEGER ) BEGIN SET @facilityNo = facNo. normalPrice DECIMAL(5. END// DELIMITER . ELSEIF facilityType = 'arc' AND gameNo IS NULL THEN SELECT 'Please provide game number for the arcade facility.amtpayable*10)). Use \'lan\'. `MemberPrice`. ELSE INSERT INTO `facility` ( `facilityType`.2).' AS Error. ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     67 of 81    . normalPrice. END // DELIMITER.'bill'. END IF.2). END IF.memberNo.FLOOR(NEW.' AS Error. ELSE SELECT 'Facility is already in inventory. `gameNo` ) VALUES (facilityType. \'bill\' or \'arc\'' AS Error. JAN08/BHICT/03   CREATE STORED PROCEDURE SCHEMA   Stored procedure: AddFacility  DELIMITER // DROP PROCEDURE IF EXISTS `AddFacility` // CREATE PROCEDURE `AddFacility` ( facilityType CHAR(4).LEE CHANGJIN (K0604033)    FOR EACH ROW BEGIN CALL AddPoints(NEW. END// DELIMITER . gameNo INTEGER ) BEGIN IF facilityType NOT IN ('lan'. gameNo). memberPrice DECIMAL(5.

' AS Error. Stored procedure: LogInventory  DELIMITER // DROP PROCEDURE IF EXISTS `LogInventory` // CREATE PROCEDURE `LogInventory` ( facilityNo INTEGER. END// DELIMITER . END IF. LEAVE proc. END IF. ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     68 of 81    . ELSE SELECT 'Facility is already in a center. logType INTEGER ) BEGIN DECLARE description TEXT. END proc. END IF. IF logType != '' THEN SET @facilityType = (SELECT getFacilityName(facilityNo)). If getFacilityCenter(@facilityNo) IS NULL THEN UPDATE facility SET facilityStatus = '1' WHERE facilityNo = @facilityNo. // DELIMITER .' AS Error. Stored procedure: InvChangeCenter  DELIMITER // DROP PROCEDURE IF EXISTS `InvChangeCenter` // CREATE PROCEDURE `InvChangeCenter` ( facNo INTEGER. IF getDeployAt(@facilityNo) IS NULL THEN SELECT 'Facility has not set which center to deploy to. ELSE UPDATE facility SET centerNo = @changeCenter WHERE facilityNo = @facilityNo. If getFacilityCenter(@facilityNo) IS NULL THEN UPDATE inventory SET toDeployAt = @changeCenter WHERE facilityNo = @facilityNo. cenNo INTEGER ) BEGIN SET @facilityNo = facNo. centerNo INTEGER. SET @changeCenter = cenNo.LEE CHANGJIN (K0604033)    Stored procedure: InvToCenter  JAN08/BHICT/03 DELIMITER // DROP PROCEDURE IF EXISTS `InvToCenter` // CREATE PROCEDURE `InvToCenter` ( facNo INTEGER ) proc:BEGIN SET @facilityNo = facNo.

' ('. UPDATE member SET points = points + @points WHERE memberNo = @memberNo.' ('.'). IF @pointsRedeemed IS NULL THEN SELECT 'Procedure call ends. @facilityType. END IF. LEAVE proc.'). WHEN 3 THEN SET description = CONCAT('Facility '.facilityNo.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 SET @centerName = (SELECT getCenterName(centerNo)). @facilityType. centerNo. centerNo.').facilityNo. NOW().') is sent to inventory for maintainance. CASE logType WHEN 1 THEN SET description = CONCAT('Facility '. END CASE. Stored procedure: AddPoints  DELIMITER // DROP PROCEDURE IF EXISTS `AddPoints` // CREATE PROCEDURE `AddPoints` ( memNo INTEGER. reItem INTEGER ) proc:BEGIN SET @memberNo = memNo. END IF. Redeem Item does not exist.' ('. #Get the points to redeem the redeem item and check if redeem item is exist. SET @pointsLeft = (SELECT getMemberPoints(@memberNo)). description).@centerName.' ('. Stored procedure: RedeemItem  DELIMITER // DROP PROCEDURE IF EXISTS `RedeemItem` // CREATE PROCEDURE `RedeemItem` ( memNo INTEGER. SET @points = pts. SET @redeemItemNo = reItem.') is sent back to Center '. #Get the points of the member and check if member is exist. WHEN 4 THEN SET description = CONCAT('Facility '.'). ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     69 of 81    . INSERT INTO inventorylog VALUES (facilityNo. @facilityType. // DELIMITER . END // DELIMITER. pts INTEGER ) proc:BEGIN SET @memberNo = memNo. END proc.') is added to inventory.').' ('. SET @pointsRedeemed = (SELECT getRedeemItemPoints(@redeemItemNo)).@centerName. WHEN 2 THEN SET description = CONCAT('Facility '. ' ('. @facilityType.') is sent back to inventory to be sent to Center '.').facilityNo. ' AS Error.facilityNo.

pointsExpiry = DATE_ADD(pointsExpiry. Member does not exist. SET @centerNo = getFacilityCenter(@facilityNo). END IF. Stored procedure: AddSales  DELIMITER // DROP PROCEDURE IF EXISTS `AddSales` // CREATE PROCEDURE `AddSales` ( facNo INTEGER. CALL AddPoints(@memberNo.-@pointsRedeemed). LEAVE proc. // DELIMITER . endTime TIME. END proc. END IF. SET @price = getNormalPrice(@facilityNo). Stored procedure: MemberPointChecking  DELIMITER // DROP PROCEDURE IF EXISTS `MemberPointChecking` // CREATE PROCEDURE `MemberPointChecking` ( ) proc:BEGIN UPDATE member SET points = 0. ' AS Error. SET @facilityNo = facNo. // DELIMITER .INTERVAL 1 YEAR) WHERE pointsExpiry <= CURDATE(). ELSE SELECT 'Procedure call ends.@redeemItemNo. ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     70 of 81    . Member does not exist.@memberNo). END IF. IF memNo IS NOT NULL THEN IF isMember(memNo) IS NOT NULL THEN SET @memberNo = memNo. IF @pointsLeft > @pointsRedeemed THEN INSERT INTO redemption VALUES (NOW().' AS Error. LEAVE proc. SET @Price = getMemberPrice(@facilityNo). startTime TIME. IF not valid. END IF. ELSE SELECT 'Member does not have enough points to redeem the item. #Check IF member number is valid. memNo INTEGER ) proc:BEGIN SET @price = 0.0. ELSE SET @memberNo = NULL. Only NULL or valid member number is accepted. END proc. ' AS Error. leave procedure.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 IF @pointsLeft IS NULL THEN SELECT 'Procedure call ends.

' AS Error. SET @arcadeCardNo = arCardNo. SET @Price = getMemberPriceArcadeCard(@arcadeCardNo). END proc.startTime. IF @facilityType != 'arc' THEN SET @amtpayable = calculatePayable(startTime. LEAVE proc. ' AS Error.NOW(). SET @promoType = getPromotionType(@centerNo).@centerNo).@facilityType. INSERT INTO sales VALUES (NULL.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 IF @centerNo IS NOT NULL THEN SET @facilityType = getFacilityType(@facilityNo). Stored procedure: AddSalesArcadeCard  DELIMITER // DROP PROCEDURE IF EXISTS `AddSalesArcadeCard` // CREATE PROCEDURE `AddSalesArcadeCard` ( cenNo INTEGER. ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     71 of 81    . IF not valid. Not Applicable for this procedure call.@rate. END IF. END IF. arCardNo INTEGER.(@price*@rate/100).@memberNo. ELSE SET @memberNo = NULL. IF (@promoType = 'arc' OR @promoType = 'all') AND @price >= @minspent THEN SET @rateType = getPromotionRateType(@centerNo). ELSE SELECT 'Procedure call ends.NULL.endTime. // DELIMITER . IF memNo IS NOT NULL THEN IF isMember(memNo) IS NOT NULL THEN SET @memberNo = memNo.@amtpayable. ELSE SET @price = @price . END IF.endTime. memNo INTEGER ) proc:BEGIN SET @price = 0. IF @rateType = 'per' THEN SET @price = @price .@price.0. Member does not exist.@centerNo. SET @rate = getPromotionRate(@centerNo). SET @price = getNormalPriceArcadeCard(@arcadeCardNo).@facilityType. ELSE SELECT 'Facility is in Inventory or invalid. leave procedure. ELSE SELECT 'Facility type is Arcade. SET @minspent = getPromotionMinimumSpent(@centerNo).@me mberNo).' AS Error. END IF. Only NULL or valid member number is accepted.@fa cilityNo. SET @centerNo = cenNo. IF isCenterExist(@centerNo) IS NOT NULL THEN #Check IF member number is valid.

LEE CHANGJIN (K0604033)   


END IF; END IF; INSERT INTO sales VALUES (NULL,'arc',NOW(),@price,@memberNo,NULL,NULL,NULL,@arcadeCardNo,@cent erNo); ELSE SELECT 'Arcade Center does not exist.' AS Error; END IF; END proc; // DELIMITER ;

Stored procedure: AddPromotionToCenter 
DELIMITER // DROP PROCEDURE IF EXISTS `AddPromotionToCenter` // CREATE PROCEDURE `AddPromotionToCenter` ( cenNo INTEGER, promoNo INTEGER, startDate DATE, endDate DATE ) proc:BEGIN SET @centerNo = cenNo; SET @promotionNo = promoNo; IF getCenterPromotion(@centerNo) IS NULL THEN INSERT INTO centerpromotion VALUES (@centerNo,@promotionNo,startDate,endDate); ELSE SELECT CONCAT('Center ', @centerNo, ' is currently having promotion.') AS Error; END IF; END proc; // DELIMITER ;




DEFAULT DATA POPULATION  Default Data Population: arcadecard 
INSERT INTO arcadecard (arcadeCardNo, normalCardPrice, memberCardPrice, cardValue) VALUES (1, 2, 2, 2), (2, 5, 4, 5), (3, 10, 8, 10), (4, 15, 10, 15), (5, 25, 18, 25), (6, 50, 30, 50);

Default Data Population: center 


LEE CHANGJIN (K0604033)   
INSERT INTO center (centerNo, name) VALUES (1, 'Funland Bedok'), (2, 'Funland Bishan'), (3, 'Funland East Coast'), (4, 'Funland Educare Centre'), (5, 'Funland Sembawang'), (6, 'Funland Yishun 10'), (7, 'Cyberbyte Bugis'), (8, 'Cyberbyte Snookerium Clementi'), (9, 'Cyberbyte Snookerium Paradiz'), (10, 'Ang Mo Kio Snookerium');


Default Data Population: game 
INSERT INTO game (gameNo, gameTitle, genre) VALUES (1, 'Time Crisis 2', 'Shooting'), (2, 'Time Crisis 3', 'Shooting'), (3, 'Time Crisis 4', 'Shooting'), (4, 'House Of The Dead 3', 'Shooting'), (5, 'House Of The Dead 4', 'Shooting'), (6, 'Initial D 3', 'Racing'), (7, 'Initial D 4', 'Racing'), (8, 'Midnight Tune 3', 'Racing'), (9, 'Pinball Fire', 'Pinball Machine '), (10, 'Raw Thrills', 'Racing'), (11, 'Stacker', 'Prize Merchandiser'), (12, 'Grab A Doll', 'Claw & Skill Crane Machine'), (13, 'Lollipop Lucky', 'Claw & Skill Crane Machine'), (14, 'The Three Kingdoms', 'Platform'), (15, 'Football Championship', 'Sports');

Default Data Population: member 
INSERT INTO member (memberNo, name, identityNo, gender, dob, address, email, contact, occupation, memberCardNo, joinedDate, points, pointsExpiry) VALUES (1, 'Andrew Wee Kim Soo', 'S8020938A', 'M', '1980-05-24', '218 Orchard Road (S)238851', 'andrewee80@hotmail.com', 92373629, 'Banker', 928349495, '2002-01-11', 2000, '2010-08-31'), (2, 'Lim Jingyin', 'S8406273B', 'F', '1984-07-02', '795 Ang Mo Kio Avenue 1 (S)569976', 'ljy88@hotmail.com', 86738293, 'Student', 983920311, '2008-02-15', 2000, '2010-02-15'), (3, 'Gan Kee Sim', 'S8588432J', 'M', '1985-03-07', '248 Choa Chu Kang Avenue 2 (S)680248', 'keesim99@yahoo.com', 81239123, 'Student', 928347771, '2007-07-31', 2000, '2008-07-31'), (4, 'Betty Su Kim Ling', 'S8947384C', 'F', '1989-09-22', '720 Woodlands Avenue 6 (S)730720', 'susubetty@yahoo.com.sg', 97382937, 'Student', 912348372, '2007-12-23', 2000, '2008-12-23'), (5, 'Gary Tan Seng', 'S8321138D', 'M', '1983-06-21', '55 Chua Chun Kang Road (S)345643', 'garygary55@hotmail.com', 94532349, 'Student', 912381239, '2007-01-11', 2000, '2009-08-15');

Default Data Population: promotion 
INSERT INTO promotion (promotionNo, description, ratetype, rate, minspent, promoType) VALUES (1, '5% off for LAN usage', 'per', 5, 0, 'lan'), (2, '5% off for billiard usage', 'per', 5, 0, 'bill'), (3, '5% off for purchase of arcade card', 'per', 5, 0, 'arc'), (4, '5% off spending at this center', 'per', 5, 0, 'all'),

LEE CHANGJIN (K0604033)   


(5, '$2 off LAN usage with a minimum spending of $10', 'amt', 2, 10, 'lan'), (6, '$2 off billiard usage with a minimum spending of $10', 'amt', 2, 10, 'bill'), (7, '10% off LAN usage with minimum spending of $15', 'per', 10, 15, 'lan'), (8, '10% off billiard usage with minimum spending of $15', 'per', 10, 15, 'bill'), (9, '$1 off with $5 and above arcade card purchased', 'amt', 1, 5, 'arc'), (10, '$3 off with $10 and above arcade card purchased', 'amt', 3, 10, 'arc'), (11, '$10 off with $25 and above arcade card purchased', 'amt', 10, 25, 'arc');

Default Data Population: redeemitem 
INSERT INTO redeemitem (redeemItemNo, redeemDesc, pointsCost) VALUES (1, 'Beautiful Sticker', 50), (2, 'Pencil Box', 150), (3, 'Candy Sweets', 150), (4, 'Small Teddy Bear', 150), (5, 'Medium Teddy Bear', 250), (6, 'Big Teddy Bear', 450), (7, 'Gaint Teddy Bear', 1500), (8, 'Stylish Watch', 200), (9, 'Baseball Cap', 120), (10, 'Funland T-shirt', 220), (11, 'Handheld Game', 350), (12, 'Cool Sunglasses', 300), (13, 'Can Drink', 80), (14, 'Mobile Phone', 1000), (15, '32" LCD TV', 5000), (16, 'Mini Home Threatre System', 2000), (17, 'MP3 Player 1GB', 500), (18, 'MP3 Player 2GB', 1100), (19, 'MP3 Player 4GB', 2500), (20, 'Thumb Drive 2GB', 900), (21, 'Basketball', 350), (22, 'Soccerball', 350);

  *Other data can be populate by calling the Stored Procedures.



LEE CHANGJIN (K0604033)     




Starting of the Project till the submission of initial report 

    Second part of the Project from requirement gathering till the submission of this Final  Report.



3. Meeting 07 7.5hrs 2. Meeting 02 2. Meeting 10 8.5hrs 2. Meeting 09 7. Workshop 8.6. Workshop 01 8.4.1. Meeting 04 7. Workshop 06   Day Mon Wed Wed Wed Sat Sat Sat Sat Sat Mon Sat Sat Sat Date 02 Feb 20 Feb 26 Mar 16 Apr 31 May 28 Jun 26 Jul 23 Aug 13 Sep 13 Oct 16 Feb 23 Feb 16 Aug Allocated 25hrs 2. Meeting 03 7.5hrs 2.5hrs 8.5hrs 2. Meeting 08 7.5hrs 3hrs 3hrs JAN08/BHICT/03 Attendants Attended Attended Attended Attended Attended Attended Attended Unavailable Attended Oversea Attended Attended Oversea ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     76 of 81    .5hrs 2.5hrs 2.7.5hrs 2.3. Meeting 01 7.5hrs 2. Meeting 05 7.5hrs 2. Meeting 06 7.LEE CHANGJIN (K0604033)    Schedule Meeting with Tutor  Task 7. Workshop 02 8.1. Meeting With Tutor

4.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 7. Any repeating tasks? e. What user wants to do with the information? b. 7) Anything the user wants to point out? ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     77 of 81    . a.   APPENDIX D: OTHERS  Interview form  User Requirements Interview Questions  Project Title: Sales and Inventory System for Chain Stores (Amusement Center) 1) Company background. How does each center operate in general? 2) Company’s operation workflow a. What is the company sales operation? c. How many centers? b. a. What are the data that need to be store? b. How user wants to see the information? 6) Defining the major user requirements if any. What are the expectations? 5) User to prioritize the information importance. What is the company logistic operation? d. Any exceptional cases? 3) Information that is of importance to the user. Any forms? d. (Content Identification) a. (Prioritization) a. What information user currently uses? c. How is the data currently stored? 4) Open questions. What are the problems the user encounter? b. Is company using any system? b. What the user wants the system to be capable of? d. What concerns the user has on the current system? c.

LEE CHANGJIN (K0604033)    Membership Form  JAN08/BHICT/03   ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     78 of 81    .

LEE CHANGJIN (K0604033)    Sales Tracking Form  JAN08/BHICT/03 ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     79 of 81    .

0131497359 [ 4 ] Peltier. http://dev. Carolyn E.: Project Management Institute. and Pipes. Vol 1.logicalexpressions. Indianapolis: Wiley Publishing. 0764574906 [ 3 ] Lans.edu.html [viewed 16/05/2008] ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     80 of 81    .sg/wrg/ [viewed 14/02/2008] [ 7 ] Connolly.cdtl. pp. Issue 1. 2008 Sun Microsystems. 159059505X [ 10 ] MySQL AB. Thomas M. Upper Saddle River. http://www. Newtown Square. REFERENCES  [ 1 ] Chen. http://pubs. Jay. Berkeley.projectsmart. (2002) Database Systems – A Practical Approach to Design. MySQL 5. http://www.. (2004) A Guide to the Project Management Body of Knowledge (PMBOK Guides).uk/6-steps-to-successful-schedules. 0201708574 [ 8 ] Project Management Institute. 3rd Ed.0 Reference Manual.com/pub0009/LPMArticle. Pa.0/en/index.co.html [viewed 13/02/2008] [ 6 ] Christina. van der. CA : New York : Apress. Low and Daphne.asp?ID=343 [viewed 14/02/2008] [ 5 ] Holohan.nus. and Begg. Inc.9-36 [ 2 ] Powell. 193069945X [ 9 ] Kruckenberg. Third Edition.Toward a Unified View of Data. Implementation. Ron 6 Steps to Successful Schedules. Harlow: Addison-Wesley/Pearson. ACM Transactions on Database Systems. Peter P. Rick F. and Management. (c2006) Beginning database design. Jon Gantt Charts in Microsoft Excel. (c2007) SQL for MySQL Developers: A Comprehensive Tutorial and Reference. (c2005) Pro MySQL.mysql. (1976) The Entity-Relationship Model .LEE CHANGJIN (K0604033)    JAN08/BHICT/03 8.com/doc/refman/5. Gavin. Pan (2007) The Write Right Guide. Michael. NJ : Addison-Wesley.

  SDLC  DBMS  GUI   GLOSSARY  Systems Development Life Cycle relates to models or methodologies that  people use to develop systems  A DataBase Management System is computer software designed for the  purpose of managing databases based on a variety of data models. It offers graphical icons.  and visual indicators as opposed to text‐based interfaces.  Entity – Attribute – Relationship Model used in database design. typed command  labels or text navigation to fully represent the information and actions  available to a user.  A Graphical User Interface is a type of user interface which allows people to  interact with electronic devices such as computers.  WBS  E‐A‐R Model    ICT499 CAPSTONE PROJECT COURSE FINAL REPORT JANUARY 2008     81 of 81    .  Work Breakdown Structure is a tree structure listing of tasks commonly used  in project management.LEE CHANGJIN (K0604033)    JAN08/BHICT/03 9.

Sign up to vote on this title
UsefulNot useful