Hiển thị kết quả từ 1 đến 6 / 6

Chủ đề: quan hệ trong sql

  1. #1
    Tham gia
    19-09-2009
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts

    quan hệ trong sql

    xin chào các bạn

    các bạn cho mình hỏi:
    thứ nhất: tại sao quan hệ nhiều-nhiều không thể tạo trên 2 bảng được mà phải dựa trên bảng thứ ba.
    thứ hai: trong biểu đồ CSDL(database diagram) của sql, tại sao phải tạo quan hệ giữa các bảng, trong khi không tạo quan hệ này thì các bảng vẫn có quan hệ với nhau và vẫn lấy dữ liệu của các bảng cùng lúc.

    Mong mọi người giúp đỡ.
    Xin cảm ơn.
    Quote Quote

  2. #2
    Tham gia
    04-07-2009
    Bài viết
    854
    Like
    0
    Thanked 7 Times in 7 Posts
    câu thứ 2: tạo diagram, gắn kết các bảng bằng các đường nối relation tức là bạn đã tạo không chỉ quan hệ về mặt logic, mà còn là thiết lập tòan vẹn tham chiếu cho các quan hệ.

    Chẳng hạn 1 lớp có nhiều sinh viên, mỗi sinh viên có 1 mã lớp cho biết học lớp nào. Bạn không đặt tòan vẹn tham chiếu (khóa ngoại), thì có thể dùng lệnh delete from table lop để xóa lớp, lúc đó sinhvien có mã lớp, nhưng lớp đó bị xóa rồi, vậy theo học lớp nào đây? Nếu bạn đặt quan hệ khóa ngoại, nếu xóa bảng lớp, nó sẽ la làng: bảng sinhvien đang tham chiêu đến bảng lớp qua khóa : sinhvien.malop = lop.malop . Đó cũng là ý nghĩa tòan vẹn dữ liệu trong csdl quan hệ

    câu thứ 1: ví dụ
    1 người có thể mua nhiều mặt hàng customer(cid,cname)
    1 mặt hàng có thể được mua bởi nhiều người product(pid,pname)
    ở đây là quan hệ nhiều nhiều giữa customer và product

    giả sử bạn có thể dùng 2 table customer và product, bạn làm thế nào để biết customer nào đã mua ~ mặt hàng nào. ngược lại: làm thế nào để biết mặt hàng nào đã được mua bởi ~ customer nào?

    -> giả sử có thể đặt pid trong customer -> có customer(cid,cname,pid)
    table product như cũ: product(pid,pname)
    vậy là 1 quan hệ nhiều nhiều trở thành 1 quan hệ một nhiều=> mà trên customer thì cid là khóa chính => 1 người chỉ mua được hàng đúng 1 lần, không thể mua lần thứ 2 nữa

    -> tương tự đặt cid trong product thì cũng bị tình trạng như trên, mỗi sản phẩm chỉ bán cho 1 người

    -> nếu bạn đặt pid trong customer và cid trong product lúc này sẽ dẫn đến dư thừa dữ liệu, ví dụ:
    Khách hàng đặt là K, Sản phẩm đặt là P, ta có bảng mô phỏng như sau:

    Customer
    (K1,Tran Van A,P1)
    (K1,Tran Van A,P2)
    (K2,Tran Van B,P2)

    Product
    (P1,Sản phẩm X,K1)
    (P2,Sản phẩm Y,K1)
    (P2,Sản phẩm Y,K2)

    Dư thừa ở đâu bạn đã thấy rõ:
    + trong cùng table: xuất hiện nhiều lần K1,Tran Van A, chỉ để biết anh A mua ~ hàng nào
    + trong 2 các table tham gia quan hệ: về lý luận thực tế: Mỗi lần có người mua hàng, bản phải thêm vào bảng Customer lẫn bảng Product, để đảm bảo biết được ai mua hàng gì và hàng gì được mua bởi ai.

    Nếu bạn lập 1 bảng khác, để chứa các giao dịch ví dụ: đặt hàng, tình hình sẽ cải thiện:

    Customer(cid,cname)
    Order(oid,cid,pid,time)
    Product(pid,pname)

    Lúc này mỗi khi có người mua hàng, bạn không phải cập nhật họ tên customer, hay tên sản phẩm trên cả 2 table nữa, mà chỉ việc thêm mã khách, mã sản phẩm, điều này đảm bảo tránh mất dữ liệu, mà cũng không bị dư thừa dữ liệu, ngòai ra còn tiện lợi khi làm thống kê nữa

    Cái này nói dông nói dài, nếu bạn học thiết kế csdl, sẽ học phụ thuộc hàm, lúc đó chứng minh ngắn gọn dễ hiểu, khỏi dài dòng.
    Được sửa bởi freshgraduate09 lúc 17:32 ngày 19-09-2009

  3. Thành viên Like bài viết này:


  4. #3
    Tham gia
    19-09-2009
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts
    Rất cảm ơn vì sự giúp đỡ của bạn
    bạn giải thích rất dễ hiểu.
    Một lần nữa cảm ơn bạn rất nhiều.

  5. #4
    Tham gia
    04-07-2009
    Bài viết
    854
    Like
    0
    Thanked 7 Times in 7 Posts
    không có chi, bạn chịu khó đọc xem như mình cũng không uổng công ngồi gõ dông dài như vậy

  6. #5
    Tham gia
    22-09-2009
    Bài viết
    5
    Like
    0
    Thanked 0 Times in 0 Posts
    Sư huynh này là người rất tận tình và chu đáo , xã hội rất cần những người như mấy huynh đây.

  7. #6
    Tham gia
    29-05-2014
    Bài viết
    2
    Like
    1
    Thanked 0 Times in 0 Posts
    moi nguoi oi chi minh cau lenh xu ly truong hop do di...thanks nhieu a!

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •