# 資料庫期末專題
:::spoiler TOC
[TOC]
:::
## 資料庫伺服器處理
[開啟access control](https://ubiq.co/tech-blog/set-access-control-allow-origin-cors-headers-apache/)
[stackoverflow 解釋](https://stackoverflow.com/questions/20035101/why-does-my-javascript-code-receive-a-no-access-control-allow-origin-header-i)
原因出自於`origin=null`(從本地資料夾直接開啟),而`host=localhost`
這個限制出自於`browser`的設定
需要在`chrome` 的捷徑設定裡面加上 `--disable-web-security` 把 CORS 關閉
:::warning
Access to XMLHttpRequest at 'http://localhost/server_side_script.php' from origin 'null' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.
:::
## Router 處理
進到 Router 內設定,找 `port forwording` 或是 `virtual server`。
`remote port` 輸入和 `local port` 相同,`local IP` 輸入這台機器從 Router 上看到的 IP (通常為`192.168.xxx.xxx`)
## 電價表
[台電電價來源](https://www.taipower.com.tw/upload/238/2023032816294927924.pdf)
* 兩個月抄表一次,計費時各段度數係加倍計算
1. 住宅用
| 每月用電度數分段 | 夏 月 (6/1~9/30) | 非 夏 月 |
|------------------ |------------------ |---------- |
| 120 度以下部分 | 1.63 | 1.63 |
| 121~330 度部分 | 2.38 | 2.10 |
| 331~500 度部分 | 3.52 | 2.89 |
| 501~700 度部分 | 4.80 | 3.94 |
| 701~1000 度部分 | 5.83 | 4.74 |
| 1001 度以上部分 | 7.69 | 6.03 |
```sql!
-- 非夏月住宅用電
CREATE TABLE `basic information`.`electric_price_living_normal` (
`Less_than_120` DOUBLE NOT NULL DEFAULT '1.63',
`Between_121_and_330` DOUBLE NOT NULL DEFAULT '2.10',
`Between_331_and_500` DOUBLE NOT NULL DEFAULT '2.89',
`Between_501_and_700` DOUBLE NOT NULL DEFAULT '3.94',
`Between_701_and_1000` DOUBLE NOT NULL DEFAULT '4.74',
`Above_1001` DOUBLE NOT NULL DEFAULT '6.03' ) ENGINE = InnoDB;
```
```sql!
-- 夏月住宅用電
CREATE TABLE `basic information`.`electric_price_living_summer` (
`Less_than_120` DOUBLE NOT NULL DEFAULT '1.63' ,
`Between_121_and_330` DOUBLE NOT NULL DEFAULT '2.38',
`Between_331_and_500` DOUBLE NOT NULL DEFAULT '3.52',
`Between_501_and_700` DOUBLE NOT NULL DEFAULT '4.80',
`Between_701_and_1000` DOUBLE NOT NULL DEFAULT '5.83',
`Above_1001` DOUBLE NOT NULL DEFAULT '7.69' ) ENGINE = InnoDB;
```
2. 營業用
| 每月用電度數分段 | 夏 月 (6/1~9/30) | 非 夏 月 |
|------------------ |------------------ |---------- |
| 330 度以下部分 | 2.53 | 2.12 |
| 331~700 度部分 | 3.55 | 2.91 |
| 701~1500 度部分 | 4.25 | 3.44 |
| 1501~3000 度部分 | 6.62 | 5.20 |
| 3001 度以上部分 | 6.75 | 5.30 |
```sql!
-- 非夏月商業用電
CREATE TABLE `basic information`.`electric_price_commercial_normal` (
`Less_than_330` DOUBLE NOT NULL DEFAULT '2.12' ,
`Between_331_and_700` DOUBLE NOT NULL DEFAULT '2.91',
`Between_701_and_1500` DOUBLE NOT NULL DEFAULT '3.44',
`Between_1501_and_3000` DOUBLE NOT NULL DEFAULT '5.20',
`Above_3001` DOUBLE NOT NULL DEFAULT '5.30' ) ENGINE = InnoDB;
```
```sql!
-- 夏月商業用電
CREATE TABLE `basic information`.`electric_price_commercial_summer` (
`Less_than_330` DOUBLE NOT NULL DEFAULT '2.53' ,
`Between_331_and_700` DOUBLE NOT NULL DEFAULT '3.55',
`Between_701_and_1500` DOUBLE NOT NULL DEFAULT '4.25',
`Between_1501_and_3000` DOUBLE NOT NULL DEFAULT '6.62',
`Above_3001` DOUBLE NOT NULL DEFAULT '6.75' ) ENGINE = InnoDB;
```
## 台電供需資料
來源:[政府資料開放平台](https://data.gov.tw/dataset/19995),內容為從去年至 3 月的每天電力供需資料。
各發電廠皆有電力產出資料,我暫時先把每個發電廠的供給資料刪除以免過冗
下表為我目前簡易整理出的供需電整理:
| | 淨尖峰供電能力(MW) | 尖峰負載(MW) | 備轉容量(MW) | 備轉容量率(%) | 工業用電(百萬度) | 民生用電(百萬度) |
|------:|-------------------:|-------------:|-------------:|--------------:|-----------------:|-----------------:|
| count | 396.000000 | 396.000000 | 396.000000 | 396.000000 | 396.000000 | 396.000000 |
| mean | 36092.507576 | 31750.000000 | 4299.686869 | 13.722980 | 367.921407 | 274.784210 |
| std | 4471.465956 | 4179.503585 | 1302.309302 | 4.403209 | 32.538933 | 46.397207 |
| min | 26200.000000 | 21459.000000 | 1316.000000 | 3.370000 | 259.930000 | 192.828000 |
| 25% | 32911.000000 | 29126.250000 | 3300.500000 | 10.400000 | 348.981250 | 240.720750 |
| 50% | 35125.500000 | 31024.500000 | 4155.500000 | 13.030000 | 371.485500 | 265.638500 |
| 75% | 39994.250000 | 34500.500000 | 5110.750000 | 15.985000 | 391.870000 | 305.354000 |
| max | 44947.000000 | 40748.000000 | 9073.000000 | 31.060000 | 429.990000 | 404.301000
## SQL schema table
[schema 敘述連結](https://hackmd.io/@Danny1327/rk_VvXbH2)
### electricity record

`Month`-->月份僅對照下個table做夏季與非夏季區別
`Date`-->詳細的年/月/日
### Electricity season

`E_no`-->夏季與非夏季區別代號
`E_name`-->夏季與非夏季名稱
### Difference

`Diff_no`-->商用與家用區別代號
`D_name`-->商用與家用名稱
### Business electricity fee / Residential electricity fee

`Level`-->用電級距
`Rate`-->費率

## 員工流失資料
來源:[Kaggle -- Employee Attrition for Healthcare](https://www.kaggle.com/datasets/jpmiller/employee-attrition-for-healthcare)
我對於原始資料做了不少整理,以下細述我整理內容:
* 刪除所有 row 皆相同的 column,刪掉的 column 有 `EmployeeCount`, `Over18`, `StandardHours`
* `Attribution` 和 `OverTime` 屬性原為 `Yes` 和 `No`,轉為 $1$ 和 $0$ 的編碼
* `BusinessTravel` 有三種可能的數值:`Non-Travel`、`Travel_Rarely`、`Travel_Frequently`,轉成 one-hot encoding
* `MaritalStatus` 有三種可能的數值:`Single`、`Married`、`Divorced`,轉成 one-hot encoding