Database-Design

多類別的數據庫關係設計

  • March 14, 2013

我正在為分組研究的參與者建立一個數據庫。總共有 5 項不同的研究 - A、B、C、D 和 E。參與者可能參與多個研究,並且每項研究中的參與者都有一個獨特的“研究程式碼”,其格式根據研究的不同而不同. (即研究 A 的程式碼可能是 10 個字元的數字和字母,研究 B 的程式碼可能只有 6 個字元的數字……等等)

我知道我需要一個多對多連結表和一個用於研究的查找表,但除此之外,我很難弄清楚將“研究程式碼”合併到表中的哪個位置。

這是迄今為止我的表格的欄位。

  • 參與者:participantID(主鍵)、姓名、出生日期…等(背景人口統計數據)
  • PatientInStudies:參與者ID、研究、study_code
  • LookupStudies:研究(列出所有研究 A、B、C 等)

基本上,PatientInStudies 表看起來像:

1, A, A123456789

1,乙,123456

1、C、BB23-1-52

2、A295890100

2、乙、123908

3、C、KG19-7-23….等

PatientInStudies 表會起作用嗎?有沒有更好的方法來組織數據庫中的學習程式碼?

謝謝!

我支持@FrustratedWithFormsDesigner 對唯一約束的建議。有關如何在 MS Access 中執行此操作,請參閱http://office.microsoft.com/en-us/access-help/create-a-constraint-adp-HP003088257.aspx 。

唯一約束的作用是聲明任何兩行都不能在行的某些部分有重複數據。因此,大概您希望每個患者只參加一次研究,因此您需要對 PatientInStudy(participantID, study) 進行唯一的約束。

這樣每個人只能獲得一個學習ID。同樣,在該設計中,PatientsInStudy 表將具有跨越所有三個欄位的主鍵,以及 (StudyID, study_code) 上的第二個唯一約束。這樣,即使兩個研究最終具有相似的語義或重疊空間,密鑰也不能在同一個研究中重複使用。

否則,很好。

引用自:https://dba.stackexchange.com/questions/36616