Yahoo Hỏi & Đáp sẽ ngừng hoạt động vào ngày 4 tháng 5 năm 2021 (Giờ Miền Đông nước Mỹ) và từ nay, trang web Yahoo Hỏi & Đáp sẽ chỉ ở chế độ đọc. Các thuộc tính hoặc dịch vụ khác của Yahoo hay tài khoản Yahoo của bạn sẽ không có gì thay đổi. Bạn có thể tìm thêm thông tin về việc Yahoo Hỏi & Đáp ngừng hoạt động cũng như cách tải về dữ liệu của bạn trên trang trợ giúp này.

techofpc đã hỏi trong Máy tính & InternetLập trình & Thiết kế · 1 thập kỷ trước

Cho mình hỏi về tạo mối quan hệ trong cơ sở dữ liệu?

Khi mình tạo Database Diagrams trong SQL với 3 bảng là:

Bảng User

idUser

....

Bảng Question

idQuestion

idUser

Bảng Answer

idAnswer

idUser

idQuestion

Bảng Q sẽ liên kết với bảng User

Bảng A sẽ liên kết với 2 bảng User và Q

Như vậy 3 bảng liên kết thành 1 vòng tròn, như vậy phạm luật.

Làm thế nào để thiết kế 3 bảng này mà không có liên kết dạng đường tròn

Cảm ơn!

Cập nhật:

@Ghost: Cảm ơn bạn đã trả lời, nhưng cách của bạn thì 4 bản này vẫn liên kết với nhau và vì vậy vấn đề vẫn không được giải quyết

1 Câu trả lời

Xếp hạng
  • GHOST
    Lv 5
    1 thập kỷ trước
    Câu trả lời yêu thích

    Có 2 cách để làm việc này:

    - Cách 1: Bạn bỏ bảng Q đi và thay bảng Q = Conference.

    Bảng Conference

    answer

    question

    idUserQ

    idUserA

    Sau đó trong lệnh select bạn select idUserA và idUserQ như sau "select userq.username as userQ, usera.username as userA from User userq, User usera, Conference where userq.idUser=idUserQ and userq.idUser=idUserA". Nhớ thay idUserQ và idUserA bằng id chuyền vào nhé. Okie hết cách 1.

    - Cách 2: bạn thêm bảng Conference:

    idAnswer

    idQuestion

    Sửa bảng

    Bảng Answer

    idAnswer

    idUser

    Bảng C liên kết đến bảng Q và bảng A.

    Bảng U liên kết đến bảng Q và A.

    Okie không còn liên kết lòng vòng nữa chứ. Cái này thuộc về vụ chuẩn hóa dữ liệu nhưng cụ thể làm những bước nào thì tôi không nhớ (Nói thật cũng không biết có dùng hay không vì nhiều khi làm như vậy là dư thừa và nhiều lúc lại là thiếu). Bạn có thể tìm hiểu thêm trogn tài liệu "Phân tích thiết kế hệ thống".

    Chúc bạn thành công!

    Vậy thì có lẽ tôi không hiểu rõ ý bạn rồi. Relationship là thứ rất quan trọng trong CSDL, nhất là khi bản ghi lên đến hàng triệu mà không có cái vụ liên kết này thì làm sao có thể quản lý được. Bạn nên cân nhắc kĩ khi lựa chọn giải pháp này. Bản thân mình luôn cố gắng tạo những mối liên kết vững chắc, rõ ràng cho các bảng (Dù hơi phức tạp) khi thiết kế CSDL.

    Chúc bạn thành công.

Bạn vẫn có câu hỏi? Hãy hỏi ngay để nhận câu trả lời.