Yêu cầu thg 8 31, 2020 1:34 CH 2658 0 2
  • 2658 0 2
0

Hỏi về xử lí quan hệ nhiều-nhiều trong SQL

Chia sẻ
  • 2658 0 2

Các bác cho em hỏi về các xử lí quan hệ nhiều-nhiều trong SQL Thông thường em hay dùng cách chia bảng phụ, nhưng khi query thì phải join rất nhiều lần với bảng có nhiều quan hệ nhiều-nhiều

Có cách nào để tối ưu cái quan hệ này không các bác? Em cảm ơn 😄

thg 9 1, 2020 12:53 SA

một bảng để 2 PK được à bạn?

thg 9 1, 2020 1:19 SA

Theo mình thì đây là cách tối ưu nhất rồi mà bạn. JOIN thì có vấn đề gì đâu, người ta còn join mấy chục bảng với nhau cơ mà 😄

Còn nếu muốn giảm số bảng thì bạn có thể cân nhắc dùng kiểu data array nhé. Trong một số trường hợp mình vẫn dùng kiểu dữ liệu này và jsonb trên postgres. MySQL hay các DBMS khác có không mình cũng không rõ 🖖

https://www.postgresql.org/docs/9.1/arrays.html

Avatar tunvps @tunvps11094
thg 9 1, 2020 3:55 CH

@hungpv em tạo bảng nhanh không để ý nó bác à

Avatar Cầm Nguyễn @CamNguyen
thg 1 21, 2022 4:50 SA

@hungpv tất nhiên theo nguyên lý là không, nhưng lúc này sẽ không gọi là 2 PK , mà là 1 PK chứa 2 column (post_id, tag_id) ==> đúng nguyên lý

2 CÂU TRẢ LỜI


Đã trả lời thg 9 7, 2020 2:45 SA
+1

Còn tùy bác muốn tối ưu làm gì? Tối ưu để truy vấn hay để lưu trữ hiệu quả. Nhưng mà chuẩn N3 là oke nhất rồi nhé!

Chia sẻ
Đã trả lời thg 9 1, 2020 4:02 SA
0

Có thể lưu trường tag_ids chứa nhiều id tag trong bảng post.

Chia sẻ
thg 9 10, 2020 9:57 SA

Giữa Post và Tag thì thường gặp bài toán: 1- Hiển thị danh sách tag của bài viết tương ứng 2- Hiển thị danh sách bài viết có gắn tag Với cái số 1: bạn thêm trường list_tag ở bảng post và dùng trigger để tự động lấy các tag và update vào list_tag Với cái số 2: bạn thêm trường list_post_id ở bảng tag và query where in để lấy các bài viết của tag đó

thg 9 10, 2020 5:05 CH
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí