Re: [課業] 103資訊高考資料庫第二題

作者: kaocoming (藍藍的天~白白的雲~)   2014-09-22 22:43:03
※ 引述《ARCHERDEVIL (開弓)》之銘言:
: AS TITLE
: 因為今天有人寄信問我說我資料庫第二題的超鍵數量怎麼回答
: 我想說我寫很多
: 乾脆複製過來這邊,拋磚引玉,說不定會有更好的發想。
: 我的寫法大致上如下
: ==========
: 題目節錄
: 表格中有關編號(欄位名稱字尾有‘_ID’)之欄位均為唯一值(unique)、單位電話(
: D_TEL)為唯一值且不能為空值(null)、聯絡電話(E_TEL)可能為空值或重覆
: 所以如果以第一個表格
: OBJECT [物資品項]
: O_ID O_NAME TYPE O_NUM
: 物資編號 物資名稱 規格 目前數量
: 以此為例
: ==========
: 只有ID是候選鍵
: 所以包含id 的所有屬性組合,都可以是超鍵
: 因此id 本身,c3取0
: id + 任一非鍵屬性 c3取1
: id + 任二非鍵屬性 c3取2
: id + 任三非鍵屬性 c3取3
: 所以是1+3+3+1=8 共八組。
這邊我沒那麼麻煩耶
因為除了ID以外都可取可不取兩種可能
而所有attribute有3個(不含ID),故總排列組合為 2^3 = 8
: ==========
: 然後寫題目太累所以我用 A B C D 舉例就好
: ==========
: 假設有A B C D 四個屬性,假設A B 分別都可以是候選鍵
: 那就會有重複問題
: 所以我會這樣寫
: 候選鍵A本身是C3取0
: A+任一屬性 C3取1
: A+任二屬性 C3取2
: A+任三屬性 C3取3
: B+任一屬性 C3取1
: B+任二屬性 C3取2
: B+任三屬性 C3取3
: 然後,因為候選鍵加上屬性的時候會產生重複
: 當候選鍵是加上任意一屬性的時候,會產生一個重複
: 候選鍵加入兩個任意屬性的時候會產生兩個重複
: 所以可以推論出,重複狀況會是非候選鍵以外的屬性產生的排列
: 當總共有四個屬性,其中兩個分別可以成為候選鍵的時候
: 非鍵值屬性有兩個
: 所以要減掉C2取0 跟C2取1 跟C2取2
: C2取0是因為
: 如果你A加上任一屬性會產生一個超鍵叫做AB
: 然後當你取B加上任一,會產生一個超鍵叫做BA
: 這時候AB兩個會產生一個重複,而這個重複沒有非鍵屬性存在
: 所以非鍵屬性有兩個,但都不取,就變成C2取0
: C2取1以此類推
: 當超鍵組合是三個屬性時不論以A為主或者以B為主
: 重複的時候一定是同時有AB存在的時候產生重複
: 此時AB佔去超鍵組合的兩個屬性空間,剩下一個是非鍵屬性
: 而總共從兩個非鍵屬性挑一個放進去 因此C2取1
: 最後,C2取2也一樣
: 當單一屬性候選鍵與其他任三屬性形成超鍵組合的時候
: 只要有AB同時存在就會產生重複
: 然後非鍵值屬性有兩個,全部都要填入,所以是C2取2
: 因此答案就會變成
: (1+3+3+1)*2-C2取0-C2取1-C2取2=16-4=12
這邊就是venn diagram的概念
把有A這個atrrtibute的集合 + 有B這個attribute的集合 - 有AB atrribute集合就好
也就是 2^3 + 2^3 - 2^2 = 8 + 8 -4 =12
不過這邊基本上都在考排列組合, 跟DB好像沒什麼關係 = =
以下恕刪 ===================
作者: ARCHERDEVIL (開弓)   2014-09-22 23:22:00
程式語言第二題也在考排列組合... 今年真的很妙
作者: after1 (aaaaaaaaaaaa)   2014-09-23 17:12:00
我也是用排列組合 .但這整大題我只拿到8分 WHY~
作者: ARCHERDEVIL (開弓)   2014-09-23 21:45:00
我的答案有包含為什麼這樣排列組合的原因歐阿我是本來就廢話很多...所以才說那題小氣。當時寫的時候真的是哭笑不得...
作者: kaocoming (藍藍的天~白白的雲~)   2014-09-24 00:01:00
是阿 不過不寫又不行 就只好這樣囉 = =

Links booklink

Contact Us: admin [ a t ] ucptt.com