Re: [問題]ERD-場地租借 正規化觀念的請教
我來回覆一下, 僅供參考.
這要run過實際的case比較清楚, 完全照教科書講的做很多地方會覺得
怪怪的.
不過我離開書本已久, 很多東西都是以實務上能run為主, 有沒有完全
符合書中的要求就不敢確定了.
※ 引述《Hotpenis5566 (痂騎破麻)》之銘言:
: 附上ERD http://yfrog.com/5dermodel2j
: 字很多....小弟是剛學資料庫的 很想把它學好(組員也擺爛=..=)
: 只能靠自己囧
: 很多問題應該都算觀念 有請鄉民替我解惑
: 我想知道自己哪裡對哪裡錯........感恩.....
: 幫我看我解釋的 怕我有觀念上的錯誤 (感恩~^^")
: 其實看書有點不是很懂
: 我試著用自己的想法寫出來
: (以下開始):
: 1.在資料庫裡一開始先畫出大概的主架構(ER MODEL)→不明確也沒關係
: 2.接著將ERD轉換成關聯綱目(也就是很多個Table)
: 3.將很多個個關聯綱目做第1.2.3正規化
: 正規化完再去修正ERD 使之更明確 →是這樣嗎= =?
以上同意. 資料關聯架構會改的原因除了可能需求分析階段時有疏漏以外,
還有就是應實際需求而改變, 資料庫的設計是為了配合實務需要的.
: 問題:
: 1.a.像關聯綱目的定義每一個屬性為簡單且單值
: 豈不是我們要第一正規化這個步驟是多餘的嗎= =?
第一正規化除了要去除掉單一屬性多值的狀況外, 還要去除重複的整筆記錄.
例如, 學生資料表當中出現以下狀況:
王小明,A111222,男,180cm,72kgw
王小明,A111222,男,180cm,72kgw
以上整筆記錄重複兩次, 這明顯不符合第一正規化, 但是在ERD設計時你無法
預測. 在轉為資料表後, 加上條件限制才將這種狀況排除掉.
: b.為什麼Relationship不能加主鍵?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
印象中沒聽說過這回事. 這是指什麼情況? 是指在畫ERD時, 只有Entity才能
設主鍵的意思?
: 2.a.正規化是只正規實體而已嗎? 為什麼不用正規relationship呢?
同樣沒聽說過這回事. relationship轉成資料表後, 同樣要接受正規化的檢驗.
: 是不是因為relationship是正規實體的產物呢?
我比較偏向將relationship視為是更高一階的實體, 用來描述既存實體之間的
關聯.
: 譬如:顧客購買商品這一個關聯綱目
: 屬性有 CustomerID CustomerName TradeID TradeProduct
: 因為CID和TID是關聯鍵
: {CID,TID}→{CNAME}
: 所以拆成兩個滿足2NF
: +------------+ +------------+
: |Customer |------Relationship---- | Trade |
: +------------+ / \ +------------+
: / \ CID TId / \
: CID CNAME TID TProduct
另外, 以上這張圖我不這麼畫, 我會畫成:
[Customer]-(1,n)-< Trade >---(m,1)---[Product]
/ \ / \ / \ \
CID CNAME CID PID PID Name Price
Quantity,
Amount,
Date
Trade是Customer與Product這兩個Entity之間的一種relationship,
不過更進一步地把它視為是建構在Customer與Product上的更高一階的
Entity會更容易引導思考.
: b 如果一個關聯綱目只有一個關聯鍵它一定滿足2NF嗎?
: (如果不是可以幫我舉一個例子嗎?)
: 換句話說2NF的定義是不是一個關聯綱目裡有兩個以上關聯鍵
: 並且找到一個非關聯鍵與關聯鍵有意義上的關係(譬如商品編號 和商品名稱)
: 此時就把這整個關聯綱目拆成兩個對嗎?
: 因為2NF比較不好理解
: 我再打一個定義上的觀念請教一下..
: A,B,C是關聯鍵 找到一個D與ABC是部分函數相依
: 因為C→D (譬如學生學號 對應學生姓名)
: 所以要拆成兩個表格{A,B,......}和{C,D......}
: 再去檢查{A,B...}這個關聯網目裡有沒有滿足2NF這樣
: 有點像遞迴這樣= =?
可能名詞定義上有點混淆, 你說的"關聯鍵", 意思應該是要說"被選為做主鍵的
屬性組"吧? 當{A,B,C}這組屬性被選做當主鍵時, 其它的屬性都必須"完全依附"
於{A,B,C}才行, 這才滿足2NF. 如果找到某個屬性D, D是依附於C的話, 那麼D對
{A,B,C}就稱為"部份依附", 只要發現有"部份依附"的狀況, 就不符合2NF. 所以
才需要拆表.
註: 我覺得"相依"翻得不好, 好像是彼此互相依附的意思, 容易引起誤會. 所以
我用"依附"代替"相依".
: 3. 第三正規化
: 譬如
: 學生學號 學生姓名 學生系所 學生年級 學生住址 學生的房東 房東電話
: 一個學號對應一個學生住址
: 一個學生住址對應一個房東 所以不滿足3NF
: 故需拆成(學號.....住址) 和(住址....電話)
: 這樣= ="? 不知道有沒有講錯
3NF要排除掉"遞移依附"的狀況. 以"學生學號"為主鍵來說, 透過學生學號可以
查到以上任何一個屬性. 但是"房東電話"應該也能夠透過"學生的房東"查到才對.
意即: 學生學號 -查-> 學生房東 -查-> 房東電話
| ^
+--------------查------------+
這就出現"遞移依附"的狀況了. 意即"房東電話"依附在"學生房東"上, 而
"學生房東"又依附在"學生學號"上.
最後補充一點: 如果"學生房東"是"候選鍵"的話, 那麼這樣並不違反3NF,
但在這裏"學生房東"顯然不能當成"候選鍵"來用, 因此這個例子確實違反3NF.
: 4.(最後一個了)
: 如果一開始的ERD畫的夠詳盡明確 是不是就省下正規化的時間
: 我看我的TABLE實在想不出來可以哪裡可以再改進了= =?
: 請好心大大幫我看一下 Orzzzzzzzzzzzzz
嗯..感覺有些是多餘的. 我在之前的回文曾經畫了一個資料關聯圖. 或許可以參
考看看. 不過若硬要我劃"正統的ERD", 那我大概也畫不好. XD
: +-------------------------+
: |學生 |
: +-------------------------+
: | 學號 {主鍵} | 49635001 張小明 資管 3 091234567
: | 姓名 |
: | 系 所 |
: | 年級 |
: | 電話 |
: +-------------------------+
: +----------------------------+
: | 預定 |
: +----------------------------+
: |學生學號 (外部鍵) |
: |預定流水號 (外部鍵) |
: | |
: | |
: | |
: | |
: +----------------------------+
: +-------------------------+
: |預定單 |
: +-------------------------+
: | 預定流水號 (主鍵} | 1 49635001 A101 20090516 08:00 Null
: | | 20090517 10:00 20090517 12:00 預約中 Null
: | |
: | 申請日期 | 2 49635001 A102 20090516 08:05 Null
: | 取消日期 | 20090518 19:00 20090518 21:00 200
: | 使用開始時間 |
: | 使用結束時間 |
: | 使用狀態(預約中,取消) |
: | 晚間開燈費用 |
: | |
: | |
: +-------------------------+
: ~
: +----------------------------+
: |紀錄 |
: +----------------------------+
: |預定單流水號 (外部鍵) |
: |場地編號 (外部鍵) |
: | |
: | |
: | |
: | |
: +----------------------------+
: +-------------------------+
: |場地 |
: +-------------------------+
: |編號 {主鍵} | A101籃球場A
: |名稱 | A102排球場A
: | |
: | |
: +-------------------------+
: ~
: +-------------------------+
: |優先預定 |
: +-------------------------+
: | 場地編號 (外部鍵) | A101 00153 20090517 08:00 20090517 10:00
: | 課程編號 (外部鍵) |
: | 課程開始時間 | //這在學期初就匯入資料庫
: | 課程結束時間 | 如果要設定時是不是在程式端設定第一天上課後
: | | 每加七天同一時段不能外借給學生= =?
: +-------------------------+
: ~
: +-------------------------+
: |體育課程 |
: +-------------------------+
: |課程編號 {主鍵} | 00153
: |課稱名稱 | 籃球3
: |老師姓名 | 王大同
: | |
: +-------------------------+
: ~
: +-------------------------+
: |設備租借 |
: +-------------------------+
: | | 001 49635001 A1 50 未還
: |學生學號 (外部鍵) |
: |設備ID (外部鍵) |
: |借用數量 |
: |借用狀態 |
: | |
: +-------------------------+
: +-------------------------+
: |設備 |
: +-------------------------+
: |設備ID {主鍵} | A1 籃球 150
: |設備名稱 |
: |庫存數量 |
: | |
: +-------------------------+
: ~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.190.247
推
05/20 21:53, , 1F
05/20 21:53, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):