簡體   English   中英

如何引用多對多關系的相交表?

[英]How can I reference an intersection table of a many-to-many relationship?

我正在創建一個處理處方的葯房數據庫。 在設計數據庫時,我考慮到醫生可以在許多辦公室工作,而一個辦公室可以容納許多醫生,因此我建立了以下多對多關系:

doctor:

| id | name | // more

office:

| id | name | address | // more

doctors_offices:

| doctor_id | office_id |

我遵循在數據庫教科書中看到的設計以及許多在線資源,但是現在在嘗試創建prescription表時遇到了一些混亂。 在此表中,我不僅想知道哪個醫生開了處方,還想知道在哪個位置。

我發現自己有一些選擇:

  • 將一個auto_increment鍵添加到doctors_offices表中,以為每個dr / office配對具有唯一的標識符
  • 將一個復合外鍵添加到引用doctors_offices的處方表中。 (這可能嗎?)
  • 在處方表中添加兩個外鍵。 一位推薦doctors ,一位推薦offices

以下哪項是最標准化的? 我知道第三個可能是標准化程度最低的 ,因為這打開了我選擇不屬於醫生的辦公室的可能性,但是我要提到這一點很重要,因為這可能是某些初學者數據庫設計人員的共同本能。

如果您保存doctor_id以及location_id以及處方數據, doctor_id更加靈活。 否則,如果醫生已經開出了一些處方,然后轉移到另一個辦公室,將會給您帶來麻煩,除非您每次在某個辦公室就診的每個時間段都重新輸入一個條目。 此外,當另一名醫生不在辦公室並且正在開處方時,盡管他或她沒有辦公室任務,但您將無法正確描述情況。

如果系統由於技術原因阻止人們插入數據,人們會變得很機靈,您應該始終考慮此類異常,因為它們會發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM