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.
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!
@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
- GHOSTLv 51 thập kỷ trướcCâ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.