技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
14
0
佛心分享-IT 人自學之術
從零開始的MySQL開發旅程
系列 第
14
篇
Day14 專題二 利用觸發器追蹤投票者資料異動(上)
16th鐵人賽
minhsiao
2024-09-01 23:36:40
416 瀏覽
分享至
專題二 建立資料庫與資料表
內容概要:建立投票資料庫來儲存選舉的資料,讓選務人員在需要的時候更改資料,並且要追蹤資料庫的異動情形,如此一來被輸入不良資料或因人為失誤輸錯資料時就可以根據紀錄來調查。設定這次要選舉的職務有市長、里長、縣長、立委、議員
做法:因為需要追蹤異動資料的情況,因此會需要建立
觸發器
,讓資料儲存前先檢查過,提升資料庫的品質。此外因為選舉資料會有較多的內容需要建立多個資料表,因此要加入條件約束,主要索引鍵與外部索引鍵來建立個個資料表間的關係
步驟一
建立資料庫voting
步驟二
製作實體關係圖(ERD)來釐清各資料表間的關係,以便加入條件約束(主要索引鍵或是外部索引鍵)
步驟三
建立資料表
資料表vote,選舉有投票資格的人。
用來儲存投票人的相關資訊,有性名、地址、轄區、縣、區、黨、投票位置、登記號碼
以voter_id作為主要索引鍵
voter_registration_num因登記序號不能有重複的,所以加入條件約束unique,避免出現重複值
其中除了voter_party外的資料欄都設定為not null,因為投票人不一定有黨籍因此可以是空值,而其他的若為空值會顯示錯誤
資料表ballot,投票人的選票
用來保存每張選票的相關資訊,有選票號碼、是哪一位投票人的選票、投入選票時間、投票的方式
以ballot_id作為主要索引鍵
以voter_id作為外部索引鍵(對應投票人資訊,資料表voter中的資料欄voter_id),且會加入條件約束unique,每一位投票人只有一張選票
ballot_cast_datetime為投入選票的日期時間,會設定為default,讓其預設值為now()會回傳當前日期時間
ballot_type表投票方式,加入條件約束check來確保資料欄中只會包含特定的值,這邊設定為in-person親自投票、absentee不在籍投票
資料表race,選票上的競選職務
用來儲存每項職務的相關資訊,有各項職務名稱、每項選民可投給幾名候選人
以race_id作為主要索引鍵
race_name加入條件約束unique,才不會加入重複的競選職務
資料表candidate,各項候選人
用來儲存參與選舉的候選人資訊,有候選人編號、候選人參與什麼職務選舉、候選人名字、候選人政黨
以candidate_id作為主要索引鍵
candidate_name加入條件約束unique才不會有重複的候選人出現
以race_id作為外部索引鍵(對應參選職務,資料表race中的資料欄race_id)
資料表ballot_candidate,投票人在選票上圈選的人
用來追蹤投票人把票投給誰
為關聯資料表,引用資料表balllot的主要索引鍵ballot_id和資料表candidate的主要索引鍵candidate_id,因此這兩資料表彼此建立關係,候選人從同一張選票中只能獲得一票
ballot_id、candidate_id同時為主要索引鍵和外部索引鍵
下一章: 專題二 利用觸發器追蹤投票者資料異動(中)
留言
追蹤
檢舉
上一篇
Day13 專題一 利用檢視表保護薪資資料
下一篇
Day15專題二 利用觸發器追蹤投票者資料異動(中)
系列文
從零開始的MySQL開發旅程
共
30
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
26
Day26 Firebase Cloud Functions
27
Day27 Firebase Hosting
28
Day28 Hosting 實作練習
29
Day29 Cloud Firestore 實作練習
30
Day30 總結
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
398
組
團體組數
13
組
累計文章數
2823
篇
最後報名日
9/15
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
17th鐵人賽
windows
php
c#
windows server
linux
css
react
熱門問題
不知道網路紅隊的要去那加公司
更換FW後Public IP service無法使用
鼎新ERP欄位可修改預設值嗎
Ansible 連線主機的 port 不是 22 遇到的問題
備份映像檔
Outlook 寄件備份消失問題 (已解決)
請問有人遇過在lightsail上部屬fastapi失敗的案例?
aws ec2 檢查故障問題
IIS 管理員 連線功能不見
熱門回答
鼎新ERP欄位可修改預設值嗎
不知道網路紅隊的要去那加公司
Ansible 連線主機的 port 不是 22 遇到的問題
更換FW後Public IP service無法使用
備份映像檔
熱門文章
什麼是 Signal ?
第10天,No-Code 快速上線又省錢 / 原汁排骨湯 台北最好喝的排骨湯(台北萬華)| 30天滷肉飯
序: AI 加速編碼後,你該學什麼?
第11天,LibreOffice 更省錢 / 司機俱樂部 宵夜好選擇(台北松山)| 30天滷肉飯
第12天,即時通訊軟體選擇 / 金峰滷肉飯 台北名店(台北中正)| 30天滷肉飯
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}