Kể từ appointmnent_id
là khóa chính của Appointment
, bảng này có 1:N
mối quan hệ với tất cả 6 bảng.
Đây là trường hợp khi tham gia vào 6 bảng này sẽ tạo ra nhiều hàng có dữ liệu trùng lặp , nó giống như một Cartesian Product
. Ví dụ:if (chỉ một id=46
), có:
- 3 hàng cho
PatientInvestigation
- 6 hàng cho
PatientTreatmentMedicine
- 4 hàng cho
PatientFindings
- 2 hàng cho
PatientDiagnosis
- 2 hàng cho
PatientCC
- 5 hàng cho
PatientAdvice
bạn sẽ nhận được 3x6x4x2x2x5 = 1440
các hàng trong tập hợp kết quả, trong khi bạn chỉ cần 3 + 6 + 4 + 2 + 2 + 5 (+1) = 23
hàng. Đó là số hàng nhiều hơn 60 lần (và với nhiều cột hơn) so với mức cần thiết.
Sẽ tốt hơn nếu bạn thực hiện 6 truy vấn riêng biệt với một JOIN với một (trong số 6) bảng trong mỗi truy vấn (và một truy vấn nữa để lấy dữ liệu từ bảng cơ sở Appointment
). Và kết hợp kết quả của 6 truy vấn trong mã ứng dụng . Ví dụ cho truy vấn cơ sở và truy vấn tham gia vào bảng đầu tiên:
Bảng cơ sở :
SELECT
a.appointment_id,
a.patient_id
FROM
Appointment AS a
WHERE
a.appointment_id = 46
Tham gia-1 để điều tra bệnh nhân :
SELECT
pi.investigation_name,
pi.investigation_id
FROM
Appointment AS a
JOIN
PatientInvestigation AS pi
ON pi.appointment_id = a.appointment_id
WHERE
a.appointment_id = 46