牙列表的数据库结构

时间:2014-10-09 10:53:33

标签: database database-design

你好,我不确定这是否是一个好问题,但是这里,我对如何制作牙齿图数据库的数据结构感到很困惑。我首先考虑过制作像这样的数据结构

teeth_table 
teeth_id (Primary key)
teeth_1 (These are 32 tooth)
until teeth_32 (These are 32 tooth)
patient_id (Foreign key connected to the patient table)

我的第二个计划是为每颗牙齿制作一张单独的桌子(我猜这会占用很多时间吗?)

tooth01_table
tooth_id
tooth_name
tooth_condition
tooth_recommendation
tooth_treatment
patient_id

这就是我的想法, 我的计划是制作一张桌子,当患者从下拉列表中选择牙齿时,它会显示以下内容

牙齿|条件|推荐|治疗

那么你们认为牙齿图数据库的设计是什么?

牙齿图就像这些

  

http://www.mouthandteeth.com/img/FDI-tooth-numbering-system.gif

1 个答案:

答案 0 :(得分:1)

我推荐以下设计:

CREATE TABLE tooth (
  tooth_code   char(2)     NOT NULL PRIMARY KEY,
  -- teeth don't have real numbers
  -- it is a qudrant number + tooth number combination
  -- therefore char(2)
  tooth_cat   varchar(50) NOT NULL
    CHECK (tooth_cat IN ('incisor','canine','premolar','molar')
  -- though I find this info redundant,
  -- category can be deduced from tooth_code
);

CREATE TABLE mounth (
  patient_id   int4     NOT NULL,
  tooth_code   char(2)  NOT NULL,
  inspect_dt   timestamp with time zone NOT NULL,
  condition    text,
  suggestion   text,
  treatment    text,
  PRIMARY KEY (patient_id, tooth_code, inspect_dt),
  FOREIGN KEY (patient_id) REFERENCES patient,
  FOREIGN KEY (tooth_code) REFERENCES tooth
);
  1. 你应该有一本包含牙齿代码和内容描述的词典
  2. 每颗牙齿属于某些患者,因此他们应该总是一起去
  3. 此外,系统中的条目在检查期间出现,因此PK包含3列表mouth
  4. 我使用tooth_code,' cos id通常表示数字值,但我们在这里没有实数,尽管它们看起来相似
  5. 我不太喜欢mouth,也许patient_inspections或类似的将是更好的匹配。
  6. 英语不是我的母语,因此请在适用的地方选择更好的名称。