資料庫 VIEW 的限制 [100公務] - 考試
By Eartha
at 2013-07-05T06:58
at 2013-07-05T06:58
Table of Contents
※ 引述《beatfuture (菜鳥帽客)》之銘言:
: 查講義上寫到 , VIEW 的輸出要包含主鍵
: 那假如使用到兩個表格, ex. FROM 表格1,表格2
: 需要將兩個表格的主鍵都輸出嗎 ?
: Q1.
: Phone( model,manufacturer,type,price) 第一個是主見
: Customer(custid,email) 第一個是主見
: Purchase(model,custid,date) 前兩個是主見.......新注音選字太爛,饒了我吧...
: 建立一個名為Loyal的view , 內容為(custid),(manufacturer)所構成
: 且該顧客至少購買三台以上電話
: --- 我的解法 ---
: CREATE VIEW Loyal
: SELECT C.custid , P.model ,Ph.custid , P.manufacturer
: FROM Customer C , Phone P , Purchase Ph
: GROUP BY Ph.model , Ph.date
: HAVING COUNT(*)>=3
create view Loyal as (
select custid, email
from (select pu.custid, c.cistid, c.email, pu.model
from purchase pu, customer c
where pu.custid=c.custid
group by pu.custid, c.custid, c.email
having count(pu.model)>3)
)
應該是這樣
寫view 不要忘記as
記得善用子查詢,雖然效能會變差不過考試沒人管效能
另外view的輸出... 基本上是你想輸出什麼就什麼啦
底層運作才不管你會輸出什麼鬼
會說要你連主鍵一起輸出,是因為希望實際上view是邏輯上的table
而且可以是另外一個view的基底table
完全可以當作table來做操作
所以假設view沒有主鍵,查詢就會很詭異...
至於是不是兩個都要輸出...
嗯...
你輸出一個無關的鍵值進去要幹嗎?
把有關系的放進去就好...
group by 要看你select 取用欄位的順序,用最前面幾個,不能中間跳過吧我記得...
: Q2.
: 已知關聯R={A,B,C,E,G,H}為1NF,
: F={A->B , B->C , AB->CEG , H->A}
: (1)主鍵是------->(H)
正確
: (2)簡化集合F成為M,使M含最少數量的功能相依 且 F+ = M+
H->A, A->B, B->C,
AB->CEG={AB->C, AB->E, AB->G 其中 AB->C 與B->C重複}=AB->E 與AB->G
則M+{H->A, A->B, B->C, AB->E, AB->G}中的相依關係完全可以從F裡面推導出來
假設F+是{H->A, A->B, B->C, AB->E, AB->G, AB->C}
則F+∩M+ == H->A 且H->A可以推導出M+裡面的所有相依關係
這樣相依性是無損的
完成。
: (3)若將R分解成 R1(A,B,C,E,G),R2(H,A),則為無失誤合併的分解嗎? 為什麼?
這題觀念同上。
根據(1) 已經知道主鍵是H
所以並且AB->CEG是成立的
所以R1∩R2=A
並且R1中,A->B 因此A是主鍵
所以A->BCEG成立
則A->R1成立
在此狀況下,資料合併就不會有損失或者錯誤多出問題
的確是無損合併分解
: (4)將R分解為無失誤和並且保留F的3NF關聯,註明個關聯的主鍵,
: 並注意控制各屬性在各關聯的重複出現。
首先依照上面來看
F={ R1(A,B,C,E,G), R2(H,A)}
R2沒問題
R1還有遞移相依
所以拆成R1-1(A,B,E,G)
R1-2(B,C)  ̄
 ̄
: ps: 第二題看不懂什麼是F+=M+ , 還有無失誤合併是蝦米??
忘記回答你這個
無損失合併就是當你把F拆成F1跟F2的時候
用合併方法轉回去,不產生資料值組消失或者增生的問題
證明方法是F1∩F2->[F1 | F2]<<<後面這個用正規表示法表示應該看得懂吧?F1 or F2
在此狀況下,其交集結果可以決定其中一個關聯的所有相依關係
因此可以成為被決定關聯的參考性限制
於是你join的時候就不會有值組奇蹟或者值組黑洞...
: 另外問個小問題:
: 若B->C,D,E,
: A,B->F
: 是否 A,B->C,D,E,F 成立 ??
: 謝謝大大幫忙解惑 !!
最後這個問題...
嗯...
當然是成立的,還是可以用交集推論...
B->CDE 如果是FB, 假設我們把A放進去得到AB->CDE 當作是FAB
FB∩FAB結果是B, B->FB內所有的相依關係,所以AB->CDE成立
然後AB->F,
所以把F放進AB->CDE得到AB->CDEF 當然也是成立的
應該是這樣吧?
希望你普考考資料處理還資料庫之前會看到這個:)
加油
--
: 查講義上寫到 , VIEW 的輸出要包含主鍵
: 那假如使用到兩個表格, ex. FROM 表格1,表格2
: 需要將兩個表格的主鍵都輸出嗎 ?
: Q1.
: Phone( model,manufacturer,type,price) 第一個是主見
: Customer(custid,email) 第一個是主見
: Purchase(model,custid,date) 前兩個是主見.......新注音選字太爛,饒了我吧...
: 建立一個名為Loyal的view , 內容為(custid),(manufacturer)所構成
: 且該顧客至少購買三台以上電話
: --- 我的解法 ---
: CREATE VIEW Loyal
: SELECT C.custid , P.model ,Ph.custid , P.manufacturer
: FROM Customer C , Phone P , Purchase Ph
: GROUP BY Ph.model , Ph.date
: HAVING COUNT(*)>=3
create view Loyal as (
select custid, email
from (select pu.custid, c.cistid, c.email, pu.model
from purchase pu, customer c
where pu.custid=c.custid
group by pu.custid, c.custid, c.email
having count(pu.model)>3)
)
應該是這樣
寫view 不要忘記as
記得善用子查詢,雖然效能會變差不過考試沒人管效能
另外view的輸出... 基本上是你想輸出什麼就什麼啦
底層運作才不管你會輸出什麼鬼
會說要你連主鍵一起輸出,是因為希望實際上view是邏輯上的table
而且可以是另外一個view的基底table
完全可以當作table來做操作
所以假設view沒有主鍵,查詢就會很詭異...
至於是不是兩個都要輸出...
嗯...
你輸出一個無關的鍵值進去要幹嗎?
把有關系的放進去就好...
group by 要看你select 取用欄位的順序,用最前面幾個,不能中間跳過吧我記得...
: Q2.
: 已知關聯R={A,B,C,E,G,H}為1NF,
: F={A->B , B->C , AB->CEG , H->A}
: (1)主鍵是------->(H)
正確
: (2)簡化集合F成為M,使M含最少數量的功能相依 且 F+ = M+
H->A, A->B, B->C,
AB->CEG={AB->C, AB->E, AB->G 其中 AB->C 與B->C重複}=AB->E 與AB->G
則M+{H->A, A->B, B->C, AB->E, AB->G}中的相依關係完全可以從F裡面推導出來
假設F+是{H->A, A->B, B->C, AB->E, AB->G, AB->C}
則F+∩M+ == H->A 且H->A可以推導出M+裡面的所有相依關係
這樣相依性是無損的
完成。
: (3)若將R分解成 R1(A,B,C,E,G),R2(H,A),則為無失誤合併的分解嗎? 為什麼?
這題觀念同上。
根據(1) 已經知道主鍵是H
所以並且AB->CEG是成立的
所以R1∩R2=A
並且R1中,A->B 因此A是主鍵
所以A->BCEG成立
則A->R1成立
在此狀況下,資料合併就不會有損失或者錯誤多出問題
的確是無損合併分解
: (4)將R分解為無失誤和並且保留F的3NF關聯,註明個關聯的主鍵,
: 並注意控制各屬性在各關聯的重複出現。
首先依照上面來看
F={ R1(A,B,C,E,G), R2(H,A)}
R2沒問題
R1還有遞移相依
所以拆成R1-1(A,B,E,G)
R1-2(B,C)  ̄
 ̄
: ps: 第二題看不懂什麼是F+=M+ , 還有無失誤合併是蝦米??
忘記回答你這個
無損失合併就是當你把F拆成F1跟F2的時候
用合併方法轉回去,不產生資料值組消失或者增生的問題
證明方法是F1∩F2->[F1 | F2]<<<後面這個用正規表示法表示應該看得懂吧?F1 or F2
在此狀況下,其交集結果可以決定其中一個關聯的所有相依關係
因此可以成為被決定關聯的參考性限制
於是你join的時候就不會有值組奇蹟或者值組黑洞...
: 另外問個小問題:
: 若B->C,D,E,
: A,B->F
: 是否 A,B->C,D,E,F 成立 ??
: 謝謝大大幫忙解惑 !!
最後這個問題...
嗯...
當然是成立的,還是可以用交集推論...
B->CDE 如果是FB, 假設我們把A放進去得到AB->CDE 當作是FAB
FB∩FAB結果是B, B->FB內所有的相依關係,所以AB->CDE成立
然後AB->F,
所以把F放進AB->CDE得到AB->CDEF 當然也是成立的
應該是這樣吧?
希望你普考考資料處理還資料庫之前會看到這個:)
加油
--
All Comments
By Quintina
at 2013-07-07T02:32
at 2013-07-07T02:32
By Freda
at 2013-07-08T17:40
at 2013-07-08T17:40
Related Posts
資料庫 VIEW 的限制 [100公務]
By Harry
at 2013-07-05T01:04
at 2013-07-05T01:04
[建議]102警特分數及是否辭職
By Frederica
at 2013-07-05T01:02
at 2013-07-05T01:02
去看考場的趣事
By Hedy
at 2013-07-05T00:06
at 2013-07-05T00:06
方智有機上下冊
By Iris
at 2013-07-04T23:56
at 2013-07-04T23:56
中華電信 100年計算機概論
By Delia
at 2013-07-04T23:34
at 2013-07-04T23:34