New FAMILUG

The PyMiers

Thursday, 1 December 2011

[HĐMT] CSDL (XONG)

Chuyên mục hỏi đáp mùa thi mở ra giúp các bạn dễ dàng trao đổi các vấn đề và cùng nhau ôn tập. Lí do lại có mục này?
vì các bạn thích ngồi máy tính hơn ngồi bàn học và được nghỉ, trời rét ... việc đi lại sẽ khó khăn.
Đây là đoạn ngắn tớ tk môn CSDL, và vài câu hỏi chưa có câu trả lời:



#Khai niem - ky hieu
 X →Y, X, Y ⊆ U : (Y phụ thuộc hàm vào X hay X quyết định Y)
f suy dẫn logic được từ F: F ⊨ f.
Kí hiệu R(f) - quan hệ R thỏa phụ thuộc hàm f
Lược đồ quan hệ α là cặp hai thành phần: α = <U, F>,
Bao đóng của tập phụ thuộc hàm F là:F+ = { X →Y | F⊨ X →Y}


Q: Ở chươgn 5 - trang 21: thuật tóantìm  key số 2
K := (U \ L1R1) ∪ L1;

sao không víết là K:= U\R1  ???
A: Vì phép tóan trong thuật tóan giúp giữ lại thuộc tính nằm ở cả 2 vế của 1 phụ thuộc hàm.


Q:Kết quả ví dụ phần tìm khóa:
A:
a. CS (Algo 1)

b. HS (Algo 1)

c. HIG và HIE (Algo 3)

(ai làm rồi thấy kq khác thì bảo :D )

Q: kết quả ví dụ kiểm tra tách lược đồ quan hệ có mất thông tin không?
1. không
2. có -> vì không có quan hệ nào quyết định B nên luôn tồn tại ở B các kí hiệu b.
3. không -> vì sau khi tách có quan hệ BE (là khóa của lược đồ qh ban đầu)

15 comments:

  1. updated! kết quả ví dụ phần tìm khóa.

    ReplyDelete
  2. câu a chưa làm nhìn thấy Z đã sai rồi

    ReplyDelete
  3. uh :))
    hỏi vài câu :
    1. Có cách nào nhanh kiểm tra xem tách có mất thông tin hay không? t thấy có cái định lý trong sách: U1 giao U2 -> U1\U2 thuộc F+.
    Đấy là với trường hợp tách làm 2 còn tách làm nhiều thì sao?

    2.Kiểm tra 3NF:
    X->Y , Y-> Z => Z phụ thuộc bắc cầu vào X.
    Giả sử một lược đồ có khóa là AB->C , từ C thì ko quyết định cái gì nhưng A->G, G->H chẳng hạn thì H phụ thuộc bắc cầu vào A, Lược đồ này có là 3NF không?

    3. Tách thằnh BCNF:
    thứ tự tách như nào? Một lược đồ có 4 FTH thì tach theo cái nào trước?

    4. Ai cho ví dụ về 3NF t xem với.

    ReplyDelete
  4. 1. Kiểm tra tách có mất mát thông tin hay không thì dùng bảng là chuẩn rồi, chậm nhưng mà chắc. Còn nếu dùng cái định nghĩa của mày thì tách từng đôi 1 rồi kiểm tra chứ không tách 1 phát luôn. (xem bổ đề phần chuẩn hóa BCNF).
    2. Khóa là AB, A->G tức là phụ thuộc không đầy đủ vào khóa => không phải là chuẩn 2NF.
    3. Thứ tự tách thành BNCF: Chọn trong tập phụ thuộc hàm 1 phụ thuộc hàm mà vi phạm chuẩn BCNF vd X->A rồi tách đôi thành 2 lược đồ con [U1, U2], U1 = XA, U2 = U\A. Làm tiếp với những lược đồ con vừa tách được cho đến khi tất cả các lược đồ con nhận được đều ở dạng BCNF.
    4.U = ABCDEFGH. F={A -> BCDEFGH, B -> C}

    ReplyDelete
  5. 1. ok, thế tháy hôm cô cho ghi là :"thêm EB, vì xíchma chứa EB là khóa nên sau khi tách thì ko mất thông tin" thế cái đấy có phải là định lý không? hay chỉ là mình tự nhận biết thôi? nếu là định lý thì chứa siêu khóa cũng sẽ khiến phép tách không mất thông tin chứ?
    2. Tao hỏi 3NF cơ

    ReplyDelete
  6. Không phải là 2NF thì tất nhiên sẽ không ở 3NF (cô bảo thế).

    ReplyDelete
  7. Chứa siêu khóa thì cũng là chứa khóa còn j

    ReplyDelete
  8. This comment has been removed by the author.

    ReplyDelete
  9. Cái định lý U1 ∩ U2 →U1 \ U2 ∈ F+ chắc chỉ dành cho tách làm 2 thôi, tách làm n phần t nghĩ ko áp dụng đc.
    Dùng bảng hình như là cách duy nhất. Thi cứ bảng mà quất thôi.
    Đm giờ vẫn chưa học đến phần chuẩn >"<

    ReplyDelete
  10. AB -> A, A -> G => B phụ thuộc bắc cầu vào AB => ko phải là 2NF thì sẽ ko phải là 3NF

    ReplyDelete
  11. AB -> A, A -> G => G phụ thuộc bắc cầu vào AB => ko là 3 NF luôn, bị buồn ngủ à :))

    ReplyDelete
  12. Ko hiểu t định viết j à =.='
    T đang c/m cái nào ko là 2NF sẽ ko pải là 3NF
    Viết hơi nhầm G với B thôi

    ReplyDelete
  13. ờ tao ko biết có cái định lí thế. Chỉ biết là nếu là BCNF thì là 3NF, 3NF thì là 2NF, chứ ko biết cái ngượic đấy.

    Thi xong rồi nhưng vẫn hỏi nốt vài câu:(chắc kiếm cái csdl làm thật là xong): có kết nối tự nhiên được MSCB và MSCBCN không ? vì 2 cột này khác tên mà, nếu CANBO.MSCB = DETAI.MSCBCN vào thì côt mới tên gì?
    MSCBCN có phải khóa ngoại không?

    ReplyDelete
  14. Giờ mới xem lại, đúng là ko natural join được, natural join yêu cầu giống tên (sai mie mấy câu đsqh rồi >"<)
    Nếu muốn kết nối 2 thuộc tính này phải dùng join (ko dùng natural join), kết quả trả về nếu không dùng phép chiếu sẽ hiển thị toàn bộ thuộc tính ở cả 2 quan hệ (tức là hiển thị cả MSCB cả MSCBCN luôn chứ ko phải ra cột mới).
    MSCBCN là khóa ngoại

    ReplyDelete
  15. hic! mình làm sai hết rồi ! :((

    ReplyDelete