Re: [SQL ] 線上DVD系統 , mysql , 正規化
※ 引述《aiyswu (樂子)》之銘言:
: 資料庫 DVDonline
: - 資料表 MemberList
: - No(會員編號) int(10) Unsigned , Primary
: - Name(會員姓名) varchar(10)
: - Age(年齡) tinyint(2) Unsigned
: - ID(統一編號) varchar(10)
: - Phone(聯絡電話) varchar(15) Unsigned
: - Add(地址) varchar(100)
: - LoanMovie(已借影片) varchar(10)
: - AheadMovie(預借影片) varchar(10)
: - LoanDate(到期日) date
單以正規化的角度來看,你的已借影片,預借影片這兩個欄位已經違反第一正規化
第一正規化是要避免 repeating group
LoadDate(到期日),則是違反第二正規化
第二正規劃是欄位是否與主鍵有相依性
換句話說,LoadDate不該放在 MemberList資料表中
如果某甲出來租片,租了十片
過了兩天,又來租五片... 這時你想看看,馬上就破功了...
(因為前面租的十片,到期日會跟著順延 XD)
因為你只有一個 LoanDate欄位,記在會員資料表上會出問題的
其實我是建議,設計好資料庫的資料表後,帶值進去
再模擬實際情況,這樣你就會發現問題點出在哪裡了
正規化只是熟的人用來檢查有無違反資料的一致性的好工具
對不熟的人,它永遠是一個不容易了解的技術... XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.230.161.127
討論串 (同標題文章)
完整討論串 (本文為第 17 之 19 篇):