Re: [SQL ] 線上DVD系統 , mysql , 正規化
※ 引述《aiyswu (樂子)》之銘言:
: @@
: 我是某四技資管系學生,目前正在作「系統分析」這門課。
應該會要你們畫圖吧,ERD、DFD之類的(我學的時候老師是這樣教啦 @@)
現在只大概記得 ERD..XD
應該會有兩個實體:一個叫會員,一個叫影片,兩個實體之間有個租借的關係
照著圖來設計,會有三個TABLE,會員、影片、租借
兩個實體衍生出來的 TABLE你有建了,一個關係衍生出來的 TABLE前面有人提了
存的東西差不多就那樣
: 雖然老師沒有要求,一定要弄出介面和資料庫。
: 不過有作有加分嘛!正好可以從實做中學習,有壓力,比較好學東西。
有壓力的確比較好學…所以工作學比較快,薪水就是壓力
: 其實我也有自個兒找些網站。
: 例如:http://chensh.loxa.edu.tw/php/B_1.php
: 不過;觀念上,還是有些混沌。
: 我們要作的系統及資料庫為「DVD線上系統」
: 主要是使一般DVD出租店,能夠擁有一個放在網路上,讓會員可以在家裡
: 上網,就能夠得知,某DVD片,是否還有庫存,是否可預借,以及查詢DVD
: 新片、DVD預借、熱門排行、押金餘額等等。
: 我的資料庫規劃出這樣↓
: 資料庫 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
: - 資料表 MovieList
: - MovieNo(影片編號) int(10) Unsigned , Primary
: - MovieName(影片名稱) varchar(20)
: - Airect(導演) varchar(20)
: - Actor(演員) varchar(100)
這個欄位應該不符合第一正規化,你們是想把一堆演員都放在這吧XD
: - MFAT(片商) varchar(20)
: - LoanTimes(借閱次數) smallint(5) Unsigned
: - MovieState(影片狀態)varchar(20)
: 由於人數僅三人,且都不是很了解資料庫,甚至有人沒有接觸過資料
: 庫。所以資料庫暫時不規劃得很複雜,畢竟連正規化都不會了,所以
: ;影片部份也沒有規劃欄位來表示影片類型等等。
影片類型對分數影響應該不大XD
: 目前是希望做到二階正規化,不曉得上面是否已算是二階正規化呢?
: 相依性的問題,我還是搞不是很清楚。我的資料庫都是模仿中原大學
其實我也不大了…但 常變動的值跟 不常變的分開存放效率會比較好,應該滿直覺的吧
照著這個想法做應該就差不多了 @@
比如說影片資料表中,基本資料不會變,但借閱次數、狀態(這存啥 囧a)會一直變
演員這個欄位會用另一個表存
影片編號,演員…然後一部片用到好幾個row 存,然後會發現沒有PK,又會多一個流水號
所以有時候為了實作效率會做一些反正規化這樣(既然是作業,砍掉欄位也沒什麼XD)
p.s.其實效率差比較多的是用一堆join @@
個人覺得分數不在於表建的大,而是能實現每個正規化動作(或其它上課教的)
嗯,就這樣。
: 網路策進會的教學影片作的。
: 請各位前輩,指導一下吧@@..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.213.20
※ 編輯: grence 來自: 61.229.213.20 (06/02 02:33)
討論串 (同標題文章)
完整討論串 (本文為第 6 之 19 篇):