close
Blogtrottr
Changes are afoot at Blogtrottr!
By popular request, we're bringing in paid plans with some cool new features (and more on the way). You can read all about it in our blog post.
批踢踢實業坊 Examination 板
Re: [考題] 資料庫 VIEW 的限制 [100公務]
Jul 5th 2013, 06:58, by ARCHERDEVIL

作者ARCHERDEVIL (開弓)

看板Examination

標題Re: [考題] 資料庫 VIEW 的限制 [100公務]

時間Fri Jul 5 06:58:20 2013

※ 引述《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, AB->E, AB->G}中的相依關係完全可以從F裡面推導出來 假設F+是{H->A, A->B, AB->E, AB->G} 則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]: 另外問個小問題: : 若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 當然也是成立的 應該是這樣吧? 希望你普考考資料處理還資料庫之前會看到這個:) 加油 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.111.51.2 ※ 編輯: ARCHERDEVIL 來自: 175.111.51.2 (07/05 07:04)

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions
arrow
arrow
    全站熱搜

    jmuko98 發表在 痞客邦 留言(0) 人氣()