---
# System prepended metadata

title: Database Project
tags: [NCTU-courses]

---

---
tags: NCTU-courses
---

# Database Project
###### tags: `Database` `Project`

## Group 06
- 張家誠
- 戴靖婷
- 褚又嘉
- 郭乃恩

## Data
- The description of your data
    - introduction of the data
        - 國人出境的資料統計
        - 外國人來臺的資料統計
        - 匯率狀況
    - what do the columns and tables mean
        - 居住地 Residence
        - 國籍 Nationality
        - 性別 Gender
        - 年齡 Age
        - 職業 Occupation
        - 華僑外籍 Overseas Chinese or Foreigners
        - 來臺目的 Purpose of visit
        - 停留夜數 Length of stay
        - 交通工具及入境港口 Mode of Transport and Port of Entry
        - 匯率 Exchange Rate
    - where was the data from
        - 交通部民用航空局
        - 政府資料開放平台
        - 台灣期貨交易所
        - 交通部觀光局觀光統計資料庫
    - other information about your data (e.g. will it be updated in the future?)
        - it updates monthly

- The source of your data
    - link to your data source
        - 出國資料 from 交通部觀光局觀光統計資料庫
            - https://stat.taiwan.net.tw/outboundSearch
        - 來臺資料 from 交通部觀光局觀光統計資料庫
            - https://stat.taiwan.net.tw/inboundSearch
        - 觀光外匯收入統計 from 政府資料開放平台
            - https://data.gov.tw/dataset/8589
        - 每日外幣參考匯率 from 臺灣期貨交易所
            - https://www.taifex.com.tw/cht/3/dailyFXRate
        - 桃園國際機場定期航班 from 政府資料開放平台
            - https://data.gov.tw/dataset/7869
        - 民航運輸常用統計資料
            - https://www.caa.gov.tw/TransStatistics.aspx?a=1089&lang=1


### Schema
- 資料皆從 98年1月 到 109年4月

#### 主 table

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**       |  int    |  NO  | PRI |
| **月**       |  int    |  NO  | PRI |
| **國家名稱**  | varchar |  NO  | PRI |
| 英文國名  | varchar |   |  |


| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **國家名稱**  | varchar |  NO  | PRI |
| 幣別  | varchar | NO  |  |
| ISO  | varchar | NO  |  |


#### Table: 出國旅客

- 年齡

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**       |  int    |  NO  | PRI |
| **月**       |  int    |  NO  | PRI |
| **國家名稱**  | varchar |  NO  | PRI |
| 1-12歲   | int     |      |     |
| 13-19歲  | int     |      |     |
| 20-29歲  | int     |      |     |
| 30-39歲  | int     |      |     |
| 40-49歲  | int     |      |     |
| 50-59歲  | int     |      |     |
| 60歲以上  | int     |      |     |

- 性別

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**       | int     | NO   | PRI |
| **月**       | int     | NO   | PRI |
| **國家名稱** | varchar | NO   | PRI |
| 男       | int     |      |     |
| 女       | int     |      |     |

- 交通工具及出境港口

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**      |  int    |  NO  | PRI |
| **月**       |  int    |  NO  | PRI |
| **國家名稱**  | varchar |  NO  | PRI |
| 飛機_松山 |  int    |      |     |
| 飛機_桃園 |  int    |      |     |
| 飛機_臺中 |  int    |      |     |
| 飛機_高雄 |  int    |      |     |
| 飛機_其他 |  int    |      |     |
| 輪船_基隆 |  int    |      |     |
| 輪船_臺中 |  int    |      |     |
| 輪船_高雄 |  int    |      |     |
| 輪船_蘇澳 |  int    |      |     |
| 輪船_花蓮 |  int    |      |     |
| 輪船_金門 |  int    |      |     |
| 輪船_馬祖 |  int    |      |     |
| 輪船_其他 |  int    |      |     |

- ~~目的地~~ *duplicated*

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**   |  int    |  NO  | PRI |
| **月**   |  int    |  NO  | PRI |
| **國家名稱**   | varchar    |      |     |
| 人數 = 男+女   | int     |      |     |



#### Table: 入境旅客

- ~~國籍~~ *duplicated*

| Field | Type    | Null | Key |
| ----- | ------- | ---- | --- |
| **年**   | int  |  NO  | PRI |
| **月**   | int  |  NO  | PRI |
| **居住地** | varchar | NO   | PRI |
| 人數 = 男+女  | int  |      |     |

- 性別

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**       |  int    |  NO  | PRI |
| **月**       |  int    |  NO  | PRI |
| **居住地**    | varchar |  NO  | PRI |
| 男       | int     |      |     |
| 女       | int     |      |     |

- 年齡

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**       |  int    |  NO  | PRI |
| **月**       |  int    |  NO  | PRI |
| **居住地**    | varchar |  NO  | PRI |
| 1-9歲   | int     |      |     |
| 10-19歲  | int     |      |     |
| 20-29歲  | int     |      |     |
| 30-39歲  | int     |      |     |
| 40-49歲  | int     |      |     |
| 50-59歲  | int     |      |     |
| 60歲以上  | int     |      |     |

- 職業

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**       |  int    |  NO  | PRI |
| **月**       |  int    |  NO  | PRI |
| **居住地**    | varchar |  NO  | PRI |
| 商人   | int     |      |     |
| 專門技術  | int     |      |     |
| 文化工作  | int     |      |     |
| 家管退休  | int     |      |     |
| 軍公職  | int     |      |     |
| 其他職業  | int     |      |     |

- 目的

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**       |  int    |  NO  | PRI |
| **月**       |  int    |  NO  | PRI |
| **居住地**    | varchar |  NO  | PRI |
| 業務     | int     |      |     |
| 觀光    | int     |      |     |
| 探親    | int     |      |     |
| 會議    | int     |      |     |
| 求學    | int     |      |     |
| 展覽    | int     |      |     |
| 醫療    | int     |      |     |
| 其他    | int     |      |     |

- 華僑/外籍

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**       |  int    |  NO  | PRI |
| **月**       |  int    |  NO  | PRI |
| **居住地**  | varchar | NO   | PRI |
| 華僑     | int     |      |     |
| 外籍       | int     |      |     |


- 交通工具及入境港口

| Field    | Type    | Null | Key |
| -------- | ------- | ---- | --- |
| **年**       |  int    |  NO  | PRI |
| **月**       |  int    |  NO  | PRI |
| **居住地**    | varchar | NO   | PRI |
| 飛機_松山 |  int    |      |     |
| 飛機_桃園 |  int    |      |     |
| 飛機_臺中 |  int    |      |     |
| 飛機_高雄 |  int    |      |     |
| 飛機_其他 |  int    |      |     |
| 輪船_基隆 |  int    |      |     |
| 輪船_臺中 |  int    |      |     |
| 輪船_高雄 |  int    |      |     |
| 輪船_花蓮 |  int    |      |     |
| 輪船_金門 |  int    |      |     |
| 輪船_馬祖 |  int    |      |     |
| 輪船_其他 |  int    |      |     |



#### Table: 外匯
- 原始

| Field          | Type   | Null |
| -------------- | ------ | ---- |
| **年**          |  int      |      |
| **月**        |   int  |      |
| **日**   | int   | NO   |
| 美元／新台幣   | double |      |
| 人民幣／新台幣 | double |      |
| 歐元／美元     | double |      |
| 美元／日幣     | double |      |
| 英鎊／美元     | double |      |
| 澳幣／美元     | double |      |
| 美元／港幣     | double |      |
| 美元／人民幣   | double |      |
| 美元／南非幣   | double |      |
| 紐幣／美元     | double |      |


```graphviz
digraph{
    node [shape=diamond]
    出國旅客
    入境旅客

    node [shape=square]
    出國旅客->性別
    出國旅客->交通工具及出境港口
    出國旅客->年齡
    入境旅客->國籍

    subgraph Rel0 {
        node [shape=oval]
        edge [dir=none, color=black]
        年齡->年
        年齡->月
        年齡->國家名稱
        年齡->"1-12歲"
        年齡->"13-19歲"
        年齡->"20-29歲"
        年齡->"30-39歲"
        年齡->"40-49歲"
        年齡->"50-59歲"
        年齡->"60歲以上"
    }
    subgraph Rel1 {
        node [shape=oval]
        edge [dir=none, color=black]
        性別->年 
        性別->月 
        性別->國家名稱
        性別->男
        性別->女  
    }
    subgraph Rel2 {
        node [shape=oval]
        edge [dir=none, color=black]
        交通工具及出境港口->年
        交通工具及出境港口->月
        交通工具及出境港口->國家名稱
        交通工具及出境港口->飛機_松山
        交通工具及出境港口->飛機_桃園 
        交通工具及出境港口->飛機_臺中
        交通工具及出境港口->飛機_高雄
        交通工具及出境港口->飛機_其他 
        交通工具及出境港口->輪船_基隆 
        交通工具及出境港口->輪船_臺中 
        交通工具及出境港口->輪船_高雄
        交通工具及出境港口->輪船_蘇澳
        交通工具及出境港口->輪船_花蓮
        交通工具及出境港口->輪船_金門 
        交通工具及出境港口->輪船_馬祖
        交通工具及出境港口->輪船_其他
    }
    subgraph Rel3 {
        node [shape=oval]
        edge [dir=none, color=black]
        國籍->居住地
        國籍->_國籍
        
    }
    

}
```

## Application Design

### Main idea
- the purpose of your application
    - 統整旅遊相關數據
        - 了解來台旅客與國人出國的旅遊模式
    - 統整金融(匯率)相關資料
        - 綜觀國際金融變化
    - 統整金融(匯率)對於國人出國旅遊(航班出境)之關係
        - 探討金融(匯率)與國人出國旅遊(航班出境)是否具關連性
    - 統整金融(匯率)對於外籍人士來台旅遊(航班入境)之關係
        - 探討金融(匯率)與外籍人士來台旅遊(航班入境)是否具關連性
    
### Functionality
- what kind of information will be presented to users
    - 查詢旅遊相關數據
    - 查詢金融(匯率)相關資料
    - 查詢金融(匯率)對於國人出國旅遊(航班出境)之關係
    - 查詢金融(匯率)對於外籍人士來台旅遊(航班入境)之關係
- what kind of interaction will be available
    - scrolling table to select what to query.
    - scrolling table to select in what order to display.
    - Allow users to type in the number of data to display in one query.
    - Default query if the user doesn't explicitly ask for something.
- what kind of data will users be able to insert and update
    - Insert user's query history or useful query tables. (And maybe suggest related subjects)


### Interface
- what will be the platform (website, mobile devices app, PC program etc.)
    - website
- expected interface look (use figure or text to explain)
    - scrolling tables


## Work Plan


### Time Schedule

| Dates | Goals                                    |
| ----- | -----------------------------------------|
| 04/20 | Proposal                                 |
| 04/27 | Preprocess data, find primary keys       |
| 05/04 | Create the tables                        |
| 05/11 | Design Basic Querys                      |
| 05/18 | Design Advanced (Default) Querys         |
| 05/25 | Design functions of interation           |
| 06/01 | Interface                                |
| 06/08 | Connect Back-end with Front-end          |
| 06/15 | Improve functions of the website         |
| 06/22 | Chcek the website, final report          |


### Discussion
- HackMD: https://hackmd.io/@o6py54BOTpWML_eLeVy9_g/rJKt6D3d8/edit

- Demo video:
    1. data
    2. 展示基本 select 功能 ( 總人數、成長率、排序 )
    3. 展示 history 功能
    4. 展示 insert 功能
    5. 展示 delete 功能
    6. 展示 update 功能

### Repo
- github : https://github.com/Database-Project-with-travel/Database_Project

## Other Link
- github : https://github.com/Database-Project-with-travel/Database_Project
- mysql load data : https://stackoverflow.com/questions/39918509/mysql-load-data-local-infile-specify-columns-value-depending-on-file
https://stackoverflow.com/questions/27703098/load-data-local-infile-with-if-statement

## Problem Solving
- ONLY FULL GROUP BY：
`set global sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';`

- History
```php
 $stmt = $conn->prepare("insert into user_history (query_sql) values (\"".$finalsql."\");");
        $stmt->execute();
```