• 沒有找到結果。

休閒度假村住房暨設施使用

N/A
N/A
Protected

Academic year: 2021

Share "休閒度假村住房暨設施使用"

Copied!
37
0
0

加載中.... (立即查看全文)

全文

(1)

報告題名:休閒度假村住房暨設施使用

Resort check-in and use of facilities

作者:林淮蒽、李筱萱、張欣平、謝奕箴、簡暄穎

系級:資訊三丙

學號:D0683364、D0610960、D0611027、D0683453、D0683484

開課老師:林明言 教授

課程名稱:資料庫系統

開課系所:資訊工程學系

開課學年:108 學年度 第一學期

(2)

中文摘要

休閒度假村住房暨設施使用是一個資料庫系統的實作,度假村的員工可以透過網

站,並依所屬部門進行工作上的管控、準備顧客所需的服務;顧客可以依自己的

娛樂需求,預約使用娛樂設施及餐飲服務,並於網站中瀏覽當次消費紀錄。我們

以 XAMPP 來實現三層式架構,使用 HTML 建立的網站介面供使用者操作並以 CSS

美化,再經由 PHP 以 SQL 送出指令給 MySQL 資料庫,來進行資料存取,如此便

可以達到資料的一致性和正確性。

進入度假村網站,櫃台可以對現場或線上訂房的顧客進行房間指派,對即將被入

住的房間進行登記,也可將房間清潔需求通知房務部,而餐廳和設施皆可以特定

條件來搜尋使用紀錄,增加管理的便利性,例如:搜尋 10 點到 12 點這個時段使

用設施的顧客資訊或搜尋顧客來餐廳用餐的費用;顧客輸入身分證可查詢當次住

房的相關訊息,例如:每一筆設施及餐廳的使用狀況及花費總金額,還可留下對

飯店的評語供營運方參考,在顧客退房後,所有相關住房訊息將會被刪除,顧客

隱私可以得到保障。

關鍵字:三層式架構、後端語言、資料庫系統、網頁設計

(3)

Abstract

Resort check-in and use of facilities is an implementation of a database

system. Employees based on their departments at the resort can use the

website to handle their work and prepare services required by customers.

Customers can not only reserve facilities and restaurants as required,

but also check consumption record on the website. We use XAMPP to implement

a three-tiered architecture, use a web interface created by HTML for user

operation and beautify it with CSS, and then PHP send commands via

Structured Query Language (SQL) to MySQL for data access.

Enter the resort website, the counter can make room assignments for

customers who book on-site or online, record the rooms checked in, or

notify the housekeeping department of room cleaning requirements. To

increase the convenience of management, the usage records of restaurants

and facilities can be searched under specific conditions. For example:

employee can search the information of customers using facilities during

the period from 10:00 to 12:00 or the cost of dining in restaurants.

Customers can enter the identity card number to query the relevant

information of the current check-in, such as each facility and restaurant

usage history and total amount. If customers have any suggestions, they

can also leave their comments on the website for the operator's reference.

After the customers check out, all relevant check-in information will be

deleted, and customers’ privacy can be guaranteed.

Keyword:Back-end language、Database System(DBS)、Three-tier

application architecture、Web design

(4)

目 次

中文摘要 ... 1

Abstract ... 2

第1章 主題 ... 4

第2章 目的 ... 4

第3章 系統使用者 ... 4

第4章 使用者需求功能 ... 4

第5章 輸入資料、輸出資料(顯示資料) ... 5

I.

輸入資料 ... 5

II.

輸出資料 ... 5

第6章 EER-diagram ... 6

第7章 Database schema ... 7

第8章 Normalization ... 8

第9章 Database tables ... 9

第10章 Database SQL ... 21

I.

僅使用到單一表格的查詢 ... 21

II.

使用到兩個表格的查詢 ... 21

III.

使用到三個表格的查詢 ... 22

IV.

複合查詢-I ... 22

V.

複合查詢-II ... 23

VI.

變更表格的操作 ... 23

VII.

增加或刪除或修改資料的操作 ... 24

第11章 Three-tier application function ... 25

I.

Home page ... 25

II.

For customers ... 25

III.

For employees ... 28

第12章 辛酸血淚史 ... 32

(5)

第1章 主題

休閒度假村住房暨設施使用資料庫

第2章 目的

建立一套住宿房客基本資料,及其使用度假村內設施的紀錄。房客可以

依自己的娛樂需求,預約使用娛樂設施及餐飲服務,並於退房前預覽所需支

付金額。而營運方可透過此系統準備房客所需的服務,管理各項設施情況、

安排使用時段來避免人流壅塞及設備的缺失,使顧客在本渡假村能享受到最

高品質的服務。

第3章 系統使用者

• 休閒度假村

• 房客

第4章 使用者需求功能

房客:新增、刪除、查詢訂房狀態、預約餐飲及設施服務、新增評價。

休閒度假村:

• 櫃檯接待:查詢訂房資訊;新增房客訂房資料;修改房間清潔需求、

入住狀態;查詢可入住房間。

• 管理部:娛樂設施(游泳池、水療桑拿、健身房、兒童休憩區、娛樂間…

等)即時管理,包括查詢設施預約情況;修改或刪除房客預約登記資

料;新增設施種類、房客使用資訊;修改設施維護需求。

• 餐飲部:餐飲服務(各式餐廳、酒吧)即時管理,包括查詢房客預約內

容;修改或刪除房客預約登記資料;新增餐廳種類、房客使用資訊。

• 房務部:查詢、修改房間清潔情況。

(6)

第5章 輸入資料、輸出資料(顯示資料)

/*渡假村內基本建築架構不在修改 ,包括房間數、設施種類、餐廳種類*/

/*本次實作資料庫不含預約功能(斜體部分)*/

I. 輸入資料

• 房客:訂房資料(姓名、身分證字號、電話、入住人數、入住日期、退房日

期、房型)、房間清潔需求、評價、餐飲與娛樂設施預約(項目名稱、日期、

時段、人數)

• 休閒度假村:

• 櫃檯接待:訂房資料(姓名、身分證字號、電話、入住人數、入住日期、

退房日期、房型) 、房間資訊(房間清潔需求、房間是否已入住)

• 管理部:設施基本資訊(名稱、時段、單次使用價錢、維護需求、使用

人數上限)、房客使用資訊 (項目名稱、日期、時段、人數)

• 餐飲部:餐廳基本資訊(名稱、時段、使用人數上限)、房客使用資訊 (項

目名稱、日期、時段、人數、金額)

• 房務部:房間資訊

II. 輸出資料

• 房客:住房資料(姓名、身分證字號、電話、入住人數、入住日期、退房日

期、每筆消費金額、評價)、預定服務之排程

• 休閒度假村:

• 櫃檯接待:房客住房資料、房間資訊(包括房型、剩餘間數)

• 管理部:設施基本資訊、房客預約使用資訊

• 餐飲部:餐廳基本資訊、房客預約使用資訊

• 房務部:房間清潔需求

(7)

第6章 EER-diagram

/*多次修改後的版本*/

(8)
(9)

第8章 Normalization

/*檢查符合 3NF*/ /*符合 1NF*/

(10)

第9章 Database tables

/*BOOLEAN = TINYINT(4);部分 tuple 省略(太多筆放不下)*/

customer (名字, 姓氏, 身分證, 入住日期, 退房日期, 房間編號,

評論, 入住人數, 喜好房型)

FOREIGN KEY (R_no) REFERENCES room(No)

ON DELETE CASCADE ON UPDATE CASCADE ; DOMAIN (S_date,E_date) : S_date < E_date

Datetype (R_type) : ENUM(‘1’, ‘2’, ‘4’, ‘6’, ‘8’)

TRIGGER (AFTER INSERT & UPDATE & DELETE) : change room.Available vaule TRIGGER (BEFORE INSERT & UPDATE) : ckeck R_type = room.Pnum

Fname Lname Ssn S_date E_date Comment Pnum R_no R_type

Petit Gallo 1283791642 2019/12/09 2019/12/28 Normal 6 9026 6 Martin David 1293747578 2019/12/20 2019/12/29 Normal 8 6029 8 Robert Jackson 1749389067 2019/12/12 2019/12/30 Great 2 5007 2 Rossi Jonsson 2367768990 2019/12/28 2020/01/03 Great 3 2018 4 Smith Roux 2817457547 2019/12/10 2020/01/01 Great 2 2009 2 Leroy Olsen 2938104891 2019/12/07 2020/12/29 Normal 3 8019 4 Vera Clarke 3892182046 2019/12/25 2020/01/01 Normal 5 3025 6 Nagy Ruiz 4345244361 2019/12/11 2019/12/28 NULL 1 6002 1 Weber Nowak 4547589654 2019/12/15 2019/12/29 Great 4 3019 4 Vincent Haugen 4643533333 2019/12/02 2019/12/30 Great 3 7023 4

Jerry Lin 5498520032 2019-12-31 2020-01-02 3 2

Halsey Frangipane 5899964521 2019-12-23 2019-12-27 5 6 Becker Mazur 6868898069 2019/12/29 2020/1/7 Normal 1 2005 1 Alex Harris 7493716054 2019/12/23 2020/1/9 Great 1 8003 1 Eva Green 8904732891 2019/12/22 2019/12/28 Normal 3 6019 4

(11)

customer_phone (身分證, 電話號碼)

FOREIGN KEY (C_ssn) REFERENCES customer(Ssn) ON DELETE CASCADE ON UPDATE CASCADE ;

C_ssn Phone 1283791642 0955215486 1293747578 +886 965541258 1749389067 0945612376 2367768990 0955047859 2817457547 0956999856 2938104891 +886 988563410 3892182046 (+886) 979964880 4345244361 0956454129 4547589654 0964582223 5498520032 0955268426 5899964521 0911158412 5899964521 +886 5214154864

→ 12 tuples

(12)

department (編號, 名稱, 屬於櫃台, 屬於餐飲部, 屬於房務部,

屬於管理部)

No Name Counter FB_dept H_dept M_dept

0 Headquarters 0 0 0 0 1 Counter 1 0 0 0 2 Food&Beverage Department 0 1 0 0 3 Housekeeping Department 0 0 1 0 4 Manage Department 0 0 0 1

→ 5 tuples

(13)

employee (編號, 名字, 姓氏, 部門編號, 上司編號)

FOREIGN KEY (Super_no) REFERENCES employee(No) ON DELETE CASCADE ON UPDATE CASCADE ; FOREIGN KEY (D_no) REFERENCES department(No) ON DELETE CASCADE ON UPDATE SET NULL ;

No Fname Lname D_no Super_no

0001 Lydia Lee 0 NULL

0002 Yuna Lin 1 0001 0003 Mimi Chang 2 0001 0004 Alessandra Chien 3 0001 0005 Angela Xie 4 0001 0006 Maris Jones 1 0002 0007 Peter Wilson 1 0002 0008 Amy Hall 2 0003 0009 Michael Patel 3 0004 0010 Chaeles White 4 0005 0011 Martin Pall 2 0003 0012 Stephen Adams 4 0005 0013 Ellen Maguire 2 0003 0014 Charles Dong 4 0005 0015 Brown Wilson 3 0004 0016 Doherty Smyth 3 0004 0017 Quinn Young 3 0004 0018 Martin MacDonald 3 0004 0019 Murray Jones 3 0004 0020 Reid Williams 3 0004 0021 Ross Evans 3 0004 0022 Watson Roberts 3 0004

→ 22 tuples

(14)

facility (編號, 名稱, 最大容納人數, 使否損壞,

每時段每人使用單價)

No Name Max_num Is_broken Price

1 Children's playground 20 0 0 2 Entertainment 60 0 0 3 Gym 30 0 200 4 Spa 10 0 500 5 Swimming pool 100 0 200

→ 5 tuples

facility_manage (設施編號,管理員工編號)

FOREIGN KEY (E_no) REFERENCES employee(No) ON DELETE CASCADE ON UPDATE CASCADE ; FOREIGN KEY (FA_no) REFERENCES facility(No) ON DELETE CASCADE ON UPDATE CASCADE ; DOMAIN (E_no) : This employee must work for M_dept

FA_no E_no 1 0005 2 0010 3 0010 4 0012 5 0012

→ 5 tuples

(15)

facility_use (設施編號, 使用者身分證)

FOREIGN KEY (C_ssn) REFERENCES customer(Ssn ON DELETE CASCADE ON UPDATE CASCADE ; FOREIGN KEY (FA_no) REFERENCES facility(No) ON DELETE CASCADE ON UPDATE CASCADE ;

TRIGGER (BEFORE INSERT & UPDATE) : check facility.Is_broken IS FALSE

FA_no C_ssn 1 1283791642 1 1293747578 1 1749389067 2 2367768990 2 2817457547 2 2938104891 3 3892182046 3 4345244361 3 4547589654 4 4673238942 4 4748932678 5 5657644234 5 6445521789

→ 13 tuples

(16)

facility_use_data (設施編號, 使用者身分證, 日期, 時段, 人數)

FOREIGN KEY (C_ssn) REFERENCES customer(Ssn) ON DELETE CASCADE ON UPDATE CASCADE ; FOREIGN KEY (FA_no) REFERENCES facility(No) ON DELETE CASCADE ON UPDATE CASCADE ; Datetype (Session) :

ENUM('10:00 - 12:00', '12:00 - 14:00', '14:00 - 16:00', '16:00 - 18:00', '18:00 - 20:00', '20:00 - 22:00')

DOMAIN (Pnum) : Pnum > 0 AND Pnum <= customer.Pnum

DOMAIN (Date) : Date >= customer.S_date AND Date <=customer.E_date TRIGGER (BEFORE INSERT & UPDATE) : check facility.Is_broken IS FALSE

FA_no C_ssn Date Session Pnum

1 1283791642 2019-12-13 12:00 - 14:00 1 1 1293747578 2019-12-22 14:00 - 16:00 1 1 1749389067 2019-12-24 14:00 – 16:00 1 2 2367768990 2020-01-02 18:00 - 20:00 1 2 2817457547 2020-01-01 20:00 - 22:00 1 2 2938104891 2019-12-25 16:00 – 18:00 2 3 3892182046 2019-12-26 18:00 – 20:00 5 3 4345244361 2019-12-19 10:00 – 12:00 1 3 4547589654 2019-12-16 12:00 – 14:00 3 4 4673238942 2019-12-26 20:00 – 22:00 3 4 4748932678 2019-12-17 16:00 – 18:00 1 5 5657644234 2019-12-08 14:00 – 16:00 2 5 6445521789 2019-12-19 10:00 - 12:00 6

→ 13 tuples

(17)

restaurant (編號, 名稱, 最大容納人數)

No Name Max_num 1 Afteroon tea 50 2 Bar 80 3 Chinese meal 200 4 Japanese meal 200 5 Westerm meal 200

→ 5 tuples

restaurant_manage (餐廳編號,管理員工編號)

FOREIGN KEY (E_no) REFERENCES employee(No) ON DELETE CASCADE ON UPDATE CASCADE ; FOREIGN KEY (RE_no) REFERENCES restaurant(No) ON DELETE CASCADE ON UPDATE CASCADE ; DOMAIN (E_no) : This employee must work for FB_dept

RE_no E_no 1 0003 2 0008 3 0008 4 0011 5 0013

→ 5 tuples

(18)

restaurant_use (餐廳編號, 使用者身分證)

FOREIGN KEY (C_ssn) REFERENCES customer(Ssn) ON DELETE CASCADE ON UPDATE CASCADE ; FOREIGN KEY (RE_no) REFERENCES restaurant(No) ON DELETE CASCADE ON UPDATE CASCADE ;

RE_no C_ssn 1 1749389067 1 3892182046 1 4673238942 2 1283791642 2 1749389067 3 4345244361 3 7493716054 4 4547589654 4 5657644234 5 2817457547 5 2938104891

→ 11 tuples

(19)

restaurant_use_data (餐廳編號, 使用者身分證, 日期,

時段, 人數)

FOREIGN KEY (C_ssn) REFERENCES customer(Ssn) ON DELETE CASCADE ON UPDATE CASCADE ; FOREIGN KEY (RE_no) REFERENCES restaurant(No) ON DELETE CASCADE ON UPDATE CASCADE ; Datetype (Session) :

ENUM('07:00 - 08:30', '08:30 - 10:00', '11:00 - 12:30', '12:30 - 14:00', '14:00 - 15:30', '15:30 - 17:00', '17:00 - 18:30', '18:30 - 20:00', '20:00 - 21:30', '21:30 - 23:00', '23:00 - 00:30', '00:30 - 2:00')

DOMAIN (Pnum) : Pnum > 0 AND Pnum <= customer.Pnum

DOMAIN (Date) : Date >= customer.S_date AND Date <= customer.E_date

RE_no C_ssn Date Session Cost Pnum

1 1749389067 2019-12-12 14:00 - 15:30 800 2 1 3892182046 2019-12-26 17:00 – 18:30 2000 5 1 4673238942 2019-12-30 14:00 – 15:30 1200 3 2 1283791642 2019-12-26 00:30 – 02:00 1500 3 2 1749389067 2019-12-22 12:30 – 14:00 1000 2 3 4345244361 2019-12-12 12:30 – 14:00 0 1 3 7493716054 2019-12-25 12:30 – 14:00 0 1 3 7493716054 2019-12-25 20:00 – 21:30 0 1 4 4547589654 2019-12-25 17:00 – 18:30 0 3 4 5657644234 2019-12-01 14:00 – 15:30 0 2 5 2817457547 2020-01-01 07:00 – 08:30 0 1 5 2938104891 2019-12-07 17:00 – 18:30 0 3

→ 12 tuples

(20)

room (編號, 是否可入住, 是否需要清潔)

DOMAIN (No) : { (2000 , 2030] , (3000 , 3030] , (5000 , 5030] , (6000 , 6030] , (7000 , 7030] , (8000 , 8030] , (9000 , 9030] }

DOMAIN (Pnum) :

1 : 2001-3030 , 2 : 5001-6030 , 4 : 7001-8030 , 6 : 2001-3030 , 8 : 2001-3030 Datetype (Pnum) : ENUM('1', '2', '4', '6', '8')

*所有房間號都已建好,只列出部分

No Pnum Available Need_clean

2005 1 0 0 2006 1 1 0 2007 2 1 0 2020 4 1 1 2021 4 1 0 3026 6 1 0 3027 6 1 1 3028 8 1 0 3029 8 1 0

→ 210 tuples

(21)

room_manage (房間編號,管理員工編號)

FOREIGN KEY (E_no) REFERENCES employee(No) ON DELETE CASCADE ON UPDATE CASCADE ; FOREIGN KEY (R_no) REFERENCES room(No)

ON DELETE CASCADE ON UPDATE CASCADE ; DOMAIN (E_no) : This employee must work for H_dept

*所有房間號都有員工負責,只列出部分

R_no E_no 2004 0004 3001 0009 6016 0016 7009 0017 8002 0018

→ 210 tuples

serve (服務員工編號, 顧客身分證)

FOREIGN KEY (E_no) REFERENCES employee(No) ON DELETE CASCADE ON UPDATE CASCADE ; FOREIGN KEY (C_ssn) REFERENCES customer(Ssn) ON DELETE CASCADE ON UPDATE CASCADE ; DOMAIN (E_no) : This employee must work for Counter

E_no C_ssn 0006 1749389067 0007 3892182046 0006 4673238942 0007 7493716054 0002 8904732891

→ 5 tuples

(22)

第10章 Database SQL

I. 僅使用到單一表格的查詢

(23)

III. 使用到三個表格的查詢

IV. 複合查詢-I

(24)

V. 複合查詢-II

(使用到 ORDER BY, IN, max/min/avg/sum/count, GROUP BY, HAVING)

(25)
(26)

第11章 Three-tier application function

I. Home page

A 和 B 為顧客的兩組主要功能

C 為員工專用連結,需進行員工身分認證才可進入管理頁面,共四個部門

II. For customers

 點擊進入頁面 → 輸入身分證

A B C

SELECT Lname, Fname, Pnum, Ssn, S_date, E_date, R_no FROM customer

(27)

→ 顯示單次入住資訊(可查看消費情況/ 以房為單位) → 下方可留下評價

SELECT f.Name, Date, Session, fd.Pnum, Price

FROM facility_use_data fd ,customer c, facility f WHERE fd.C_Ssn = c.Ssn

AND c.Ssn = \"$P_Ssn\" AND f.No = fd.FA_no;

SELECT r.Name, Date, Session, re.Pnum, Cost

FROM restaurant_use_data re ,customer c, restaurant r WHERE re.C_Ssn = c.Ssn

AND r.No = re.RE_no AND c.Ssn = \"$P_Ssn\";

(28)

 點擊進入頁面 → 輸入預定時間及人數

→ 點選喜好房型 → 填寫基本資料

SELECT COUNT(*) FROM room WHERE Available = 1 GROUP BY room.Pnum; SELECT COUNT(*) FROM customer WHERE R_no is NULL

GROUP BY customer.R_type;

INSERT INTO customer(Fname,Lname,Ssn,S_Date, E_Date,Pnum,R_type)

VALUES(\"$FNAME\",\"$LNAME\",\"$SSN\",\"$SDATE\", \"$EDATE\",$PNUM,$RTYPE);

INSERT INTO customer_phone(C_ssn,Phone) VALUES (\"$SSN\",$PHONE1);

INSERT INTO customer_phone(C_ssn,Phone) VALUES (\"$SSN\",$PHONE2);

(29)

III. For employees

 點擊房務部圖示 → 管理所有房間的清潔狀況

SELECT No FROM employee WHERE No = $no;

(30)

 點擊櫃檯圖示 →完成現場/線上訂單 check-in & check-out

SELECT SUM(rd.Cost)

FROM restaurant_use_data rd, room, customer WHERE R_no = {$_POST['R_no']}

AND Ssn = rd.C_ssn AND room.No = R_no;

SELECT SUM(f.Price * fd.Pnum)

FROM facility_use_data fd, room, customer, facility f WHERE R_no = {$_POST['R_no']}

SELECT * FROM customer

WHERE R_no = {$_POST['R_no']};

DELETE FROM customer WHERE $D_SSN\"; SELECT Fname, Lname, Ssn, R_type

FROM customer WHERE R_no IS NULL;

SELECT No, Pnum FROM room

WHERE Available = 1 AND Need_clean = 0 AND Pnum = \"$TYPE\";

UPDATE customer SET R_no = $I_NO

WHERE Ssn = \"$I_SSN\"; 當顧客要現場訂房,先做 customer 的 BOOKING 動作,資料顯示於 online orders 再由櫃檯指派房間

(31)

 點擊管理部圖示 → 察看、新增、刪除顧客使用設施的資訊

SELECT R_no, Lname, Fname, Ssn, r.Name, Date, Session, rd.Pnum, rd.Cost FROM customer c, restaurant r, restaurant_use_data rd, room

WHERE rd.C_ssn = c.Ssn AND r.No = rd.RE_no AND c.R_no = room.No $CTL_RENO $CTL_RNO $CTL_DATE $CTL_SESSION $CTL_COST $CTL_PNUM;

INSERT INTO restaurant_use_data(RE_no,C_ssn,Date,Session,Cost,Pnum) VALUES ({$_POST['RE_no']},'$FIND_SSN','{$_POST['Date']}',

{$_POST['Session']},$N_COST,$N_PNUM);

DELETE FROM restaurant_use_data

WHERE RE_no = $FIND_RENO AND $I_SSN AND $I_DATE\" AND $I_SESSION\" AND $I_COST AND $I_PNUM;

(32)

 點擊餐飲部圖示 → 察看、新增、刪除顧客使用餐飲的資訊

SELECT R_no, Lname, Fname, Ssn, r.Name, Date, Session, rd.Pnum, rd.Cost FROM customer c, restaurant r, restaurant_use_data rd, room

WHERE rd.C_ssn = c.Ssn AND r.No = rd.RE_no AND c.R_no = room.No

$CTL_RENO $CTL_RNO $CTL_DATE $CTL_SESSION $CTL_COST $CTL_PNUM;

INSERT INTO restaurant_use_data(RE_no,C_ssn,Date,Session,Cost,Pnum)

VALUES ({$_POST['RE_no']},'$FIND_SSN','{$_POST['Date']}',{$_POST['Session']},$N_COST,$N_PNUM);

DELETE FROM restaurant_use_data

WHERE RE_no = $FIND_RENO AND $I_SSN AND $I_DATE\" AND $I_SESSION\" AND $I_COST AND $I_PNUM;

(33)

第12章 辛酸血淚史

20 李筱萱

今年暑假剛好有上過一點點網頁式資料庫的課程,這學期修這資料

庫課程能讓暑假所學的知識能有更多的延續,所以我對這門課的專題製作保

持著積極、熱情的態度,並對我們能設計一個完整的資料庫系統抱持期望。

起初畫 ER model 、schema 比較容易,直到建立 table,我們遭遇

的困難接踵而來,主要因為 table 與 table 之間存在關聯,比如 key

constraints、domain 等各種限制,導致資料無法建立,我們必須邊建立

table 邊比對這個屬性是否參考到其他 table 的屬性,但是 table 太多,有

時會看到眼花撩亂,此外,每發現 ER model 有矛盾的地方,我們就得推翻

之前構想的圖,連 table 的設定也一併修改,經過一次又一次的設想,我們

最終調整到較為滿意的結果。

當我們誤以為建完資料庫是最終階段時,我們從課堂上得知還有後

續階段等著我們去完成,與前期的階段相比,後期的網頁資料庫是我們製作

這個專題所面臨的最大阻礙,雖然暑假接觸過一點,以為這就是它的全貌,

後來發覺原來這些只不過是冰山一角,光是將資料庫與前端網頁做連結,就

花費了好幾天的時間,然而,這不足以影響我對資料庫的熱情,我從網路上

到處蒐集如何讓 html 連到資料庫,其間也學到了創建網頁的各種語法,我

利用 html 及 php 語法,最終將兩者成功聯繫上,能讓網頁跳轉到下一個頁

面且顯示我要的輸出,那一刻我彷彿看到了一道希望的曙光,可卻瞬間跌落

谷底,因為我修改了一點程式碼,它就連接不上了,仔細找尋原因,才得知

跳 轉 的 頁 面 地 址 不 能 直 接 用 " 檔 案 名 .php" , 必 須 使 用 地 址

“https://localhost/檔案所在資料夾/檔案名.php”,否則無法執行,html

同樣如此,聯繫上資料庫,我們就以這個程式碼為範例,開始著手去做網頁。

我們分工協作,我在這個小組裡主動擔任半主導、輔助組長的角

色,盡量讓每個人都能分配到工作並安排小組討論時間,還要作溝通協商,

只是一個由五人組成的小組,必須考量到每位組員的時間及其使用的電腦裝

置的情況,能約出來的時間著實有限,在這方面上曾令我感到苦惱,看來處

理小組事務的能力我還有待加強。

網頁製作有分前後端,相較前端,我偏向處理後端取資料庫的部份,雖然有

點難度,但我願意去嘗試,仔細探索下,能用 html 送出請求給 php,讓 php

抓取後端資料,並傳送回來,理清資料傳輸的過程後,其他頁面就比照同樣

的做法。

總體而言,我收穫頗豐,除了學習課堂、課外的知識,我還要感謝

我的組員,儘管他們負責的部份也都還做到一半,他們還是幫我解決了我遇

到的難題,同樣地,我也盡力去幫助他們,直到 demo 的前的週末,我們幾

個人仍聚集在我家,共同為這個專題奉獻一份心力。

(34)

25 張欣平

覺得老師從很早之前就開始讓我們一步一步做資料庫是一件好

事,要不然全部的東西如果都到期末才想,一定會來不及。從一開始畫圖,

就發現我們的主題好複雜啊,entity 與 entity 的關係,誰依附著誰才能存

在,因為東西都要自己想,又沒有正解可以對,所以改了很多次圖。

開始實作資料庫的時候,要下載好多東西,我的好組員們,都先弄

好後,也幫我下載設定那些,在開始寫網頁時,因為我們整組都是電腦系統

學程的,沒有人修過網頁的課程,所以在一開始完全不知道從何開始,也沒

任何概念,也是靠著我的好組員們和班上學霸的幫助才順利接上軌道,因為

我們的 table 很多,所以網頁也必須寫很多個,在寫網頁的時候,才發現有

好多特別的功能,可以直接套用模板,很方便,但也遇到很多問題,像是如

何接收上一頁的資料去 select,還有 php 跳回 html 的問題,大部分有問題

都是請我的好組員們幫我解決,不然就是改變寫法,避開我不會解決的問

題。

最後我想說我在這次做資料庫上很被動,所以其他人交代我做

事我才做事,但交代我做的事,我都有盡力去完成它,我真的很對不起我的

組員,也很感謝她們,在我遇到問題時,願意幫我解決。

59 林淮蒽

這次專題從構想、畫 EER model、建立 schema、到最後的製作網頁,

真的是每一步都在逐漸的為自己製造麻煩,我很感謝我的組員們沒有抱怨我

太龜毛,幾乎是每一次新的階段作業剛上傳,然後我又會突然發現哪個地方

這樣改好像會更好,哪個地方好像有些錯,直到這份專題 deadline 的前一

天,都有還可以修改的更完美的地方。

不得不說,像這樣完整架構的專題報告作業,真的不能太晚才開

始,尤其我們的組員,是五個 app & web 端的新手小白,等到作業內容出來

後我們才驚覺,幾乎完全 0 基礎,該怎麼辦?我們瘋狂去求助其他學程的同

學,在 W3Schools 找許多模板,從中一點一點的了解 html 的語法,有還因

為自己實在受不了很醜的頁面,所以我認真的研究了 CSS,去設計這份網頁

排版與美化的模板。另一個重點部分在於 php,從 xampp 啟動上就卡關,啟

動完接著是連結失敗、拒絕存取,總之各式各樣的問題出現在每一個人的電

腦上,查詢那些 error 訊息到很崩潰,以及設定變數和參數傳遞之間,一直

有很多錯誤,從幾百多行的程式碼中 debug,眼睛都快要看花了。

有關這次組內分工的部分,老實說,是有一點不平均的,由於每個

人的空閒時間不一致,我們很難有辦法全員到齊,而聚在一起做事有個優

點,是可以互相討論並及時交流進度。特別是在開始寫網頁的時候,過程中

我們經常是 2 到 3 人到場,而剩下沒到的人,就會不知道網頁的架構哪裡被

(35)

大,很多時候組員們呼叫我來 debug 時,我就必須不斷重複一樣的回答,真

的還蠻累的,為了做完專題我們好幾天熬夜到 3.4 點,到了學校從上第一節

課弄到晚上 10 點被清潔阿姨趕走,再到某位組員家繼續弄到 12 點多才能夠

回家...下次我絕對會記得提早開始做專題的。

最後,我想要針對我們的 schema 做個解釋,我們原本是想說不要

做所有關於”預約”的部分,然而訂房網站不能預定也有點奇怪,所以我們

最後決定努力一下,完成顧客線上訂房,為了滿足條件,我們是直接新增了

一個 column 給 customer -

customer.R_type(紅色標記的部分),由於此時整個網頁幾乎都快完成了,

再做正規化

會影響所有程式碼,所以 schema 從 3NF 變成 1NF 了。此外,schema 中設施

及餐廳的使用,我一直覺得很多餘,因新增一筆 use data ,還要去判斷

select use 裡使否有某人使用某設施的紀錄,可能還需要使用 4NF(?)來正

規化吧。

62 謝奕箴

對於一開始的討論,要考慮到的東西真的很多,從構想和應用,到

ER,EER 等…,到創建資料庫內容和製作成網頁。

這其中畫 ER,EER 的圖,那些規則和問題,我們也因此討論了好一

陣子才把它給弄完,而且期間中也因為陸續想到相關的問題或是想法,而重

複的一直修改再修改我們的 Model 圖,還需要從兩層應用變到至少能三層

應用時,難度更加的高,對於要把它寫成網頁和連接資料庫資料的方式,從

完全的無知到漸入佳境,不過卻還是不太理解用法,所以在這些過程中花了

我們好多的時間在找資料,創建和詢問解決方法。而在下載 Xampp 的應用和

資料上的連接時,都是一大問題,從無法順利開啟 Xampp,因為 port 的問

題,Mysql 等……多種噴錯,導致一直在網路上尋找超多方式來嘗試與解

決,加上這幾個禮拜的互相討論和幫助來解決我們的問題。最後的網頁或是

資料庫連接,排版等的東西,都是我們沒有接觸過得,所以在做這些事情時,

是真的蠻驚慌的,比較不知道著手的點是什麼,所以只能尋求協助和慢慢摸

索,其中最多的就是一直在網路上收尋錯誤的問題和解決的方式,語法問題

或用法等……。

雖然做完此期末專題,但是卻因為學習此相關事件的時間花費真的

比較少,而且在觸碰這塊的時間也不是很多,所以在製作上和運用上的方式

及用法,對於我來說還是有許多需要去學習的地方。

(36)

63 簡暄穎

這次資料庫專題的製作,在結束的這刻,我想用「無中生有」這四

個字來總結。我們選擇以飯店休憩作為主題,由於長期接觸相關產業,在提

案階段我十分興奮而有動力。但開始進入實作階段,種種困難像潑了我一頭

冷水。

首先是建構關係的部分,最一開始製作時由於課堂理論進度沒有跟

上,所以只能幫到畫圖的忙。到期中考之後,對於這些 table 的關係才有

比較深刻的認知。接著進入實作階段,我使用 macOS 系統在安裝 MySQL 上

出現極大的問題。在同組成員架構好大部分的主體下,我借了一台 Windows

系統電腦,才開始慢慢摸索並協助將細節補足。在使用 MySQL 作為主要介

面操作的過程,因介面容易上手,所以也得到好一陣子的樂趣。但好日子沒

過太久,到了撰寫網頁的階段又是一個全新的學習。在高中雖然有撰寫網頁

的經驗,但是利用非常圖像化的操作,然後得到 .html 及 .php 的 code。

但這一次必須自己從 .html 寫起,在 .php 處理資料的接收、傳送,都是

完全新的挑戰。唯一慶幸的是,跟其他組員相比,我在 XAMPP 的連結上問

題較小,出了初次設定遭遇困難,後面幾乎每次都可以順利連結。雖然沒有

做版面的美化,因為過程中一直出現圖片跑掉的問題。想到高中時製作網頁

也有相關經驗,是以網路相簿作為穩定的供給源,故提供了這方面的建議予

同學。

這份專題憑一己之力,真的不可能完成,真的十分感謝組員都拚命

擠出時間,討論並且完成這個作業。

(37)

參考文獻

[1] W3Schools Online Web Tutorials. (1999). Retrieved from

https://www.w3schools.com(Dec. 27, 2019)

參考文獻

相關文件

這一節中我們想觀察函數的圖形在 x

這次的實驗課也分成兩個禮拜完成,在實驗過程中我們幾乎都很順利完成了課堂上要達到的目標

反之, 有了 parametric equation, 我們可利用這些在 R n 的 direction vectors, 利 用解聯立方程組的方法求出和這些 direction vectors 垂直的 normal vectors,

使用 BibTEX 的 L A TEX 文件, 編譯過程有時有點讓人困惑。我們這裡假設以 foo.tex 為我們的 L A TEX 檔 (BibTEX 檔叫什麼無妨, 只要我們在文中引用

。所謂「意象」,即是用文字寫出可見、可感的事物,這個事物

在生活中體證禪、領悟禪的真諦,這是「禪與生活一體」的第

在這次的實作遊戲中,我們必須要先對所使用到的硬體 和軟體有其基本的認識,這樣我們才能充分利用我們所擁有 的條件,進一步達成目標。首先 DE2-70 繼承了 Altera 一系 列的開發軟體,如

圍村內的居民用了那麼多 防衞設施,他們的房子一 定很大很美觀了!他們的 房子是怎樣?...