1

我有一个骨骼肌系统的描述,但是我不知道最好的方法,因为这个系统有几个子集恰好有子集,比如:

骨骼肌系统

  • 动物在车站的位置
  • 进展评估
  • 小跑估值
  • 探测
    • 提示胸
      • 区域 Escapolohumeral
      • 肘部和前臂
      • Carpo 和手指
    • 骨盆肢体
      • 骨盆
      • 膝盖
      • 飞节
    • 具体测试
      • 抽屉测试
      • 测试奥托拉尼
      • 其他

然后我有一张病人桌子

病人

  • ID
  • 姓名
  • L_名称

然后我有一个包含所有系统的表(骨骼肌系统是其中的一部分)

系统

  • 骨骼肌系统
  • 神经系统
  • 泌尿系统
  • 呼吸

所以我正在做类似的事情

DROP TABLE IF EXISTS `tbl_systems`; 
CREATE TABLE `tbl_systems` (
 id_system INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
 name_system VARCHAR(25)    
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
INSERT INTO `tbl_systems` VALUES (1,'Skeletal_Muscle');
INSERT INTO `tbl_systems` VALUES (2,'Nervous');
INSERT INTO `tbl_systems` VALUES (3,'Urinary');
INSERT INTO `tbl_systems` VALUES (4,'Respiratory');

DROP TABLE IF EXISTS `tbl_patient`; 
CREATE TABLE `tbl_patient` (
 id_patient INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
 name_patient VARCHAR(25) NOT NULL DEFAULT "not available",
 l_name_patient VARCHAR(25) NOT NULL DEFAULT "not available"
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `tbl_patient` VALUES (1,'Joe', 'Doe');

DROP TABLE IF EXISTS `tbl_systems_patient`; 
CREATE TABLE `tbl_systems_patient` (
 id_patient_system INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
 id_system INTEGER NOT NULL,
 id_patient INTEGER NOT NULL,
 FOREIGN KEY (id_system) REFERENCES `tbl_systems` (id_system),
 FOREIGN KEY (id_patient) REFERENCES `tbl_patient` (id_patient)   
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

INSERT INTO `tbl_systems_patient` VALUES (1,1,1);

DROP TABLE IF EXISTS `tbl_Skeletal_Muscle`; 
CREATE TABLE `tbl_Skeletal_Muscle` (
 id_system INTEGER NOT NULL,
 Position_In_Station VARCHAR(25) NOT NULL DEFAULT "not available",
 Assessment_Of_Progress VARCHAR(25) NOT NULL DEFAULT "not available",
 Valuation_Of_Trot VARCHAR(25) NOT NULL DEFAULT "not available", 
 Probing VARCHAR(25) NOT NULL DEFAULT "not available"
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
INSERT INTO `tbl_Skeletal_Muscle` 
 VALUES (1,'Normal','no progress','no change','failed');
  • 如何将tbl_Skeletal_Muscle与患者 ( id_patient) 联系起来并在这些表格中导航并获得相应的结果?

  • 方法是正确的还是有更好的选择?

  • 如何添加缺失的数据tbl_Skeletal_Muscle?我要创建其他表吗?多少?

请看一下sqlfiddle

4

1 回答 1

1

您的问题是您试图将与患者相关的信息与描述您的系统的信息混合在一起。

现在让我们假设骨骼肌系统中的层次结构与您的数据库不是非常相关,而更多的是呈现问题。对于其他系统也是如此。

然后,您可以为每个系统创建一个表,每个表都有一个患者的外键并包含所有必需的列,而与层次结构无关。在这种情况下,Systems信息将包含在表格布局本身中,添加另一个系统将需要添加另一个表格。根本不需要系统表。乍一看,它确实Systems应该成为设计的一部分,因为很少有患者的系统会有所不同;-)

如果您希望在该表中表达骨骼肌系统的层次结构,您可以添加一个父列,例如 的父列Tip ThoracicProbing。我仍然认为这是一个坏主意,因为这种父母关系对所有患者都是相同的,因此不会传达任何与患者相关的信息。

您可以将包含系统层次结构的表添加到它们的组件(动物在站的位置,...)。该表更像是一个配置表,它描述了您的系统(而不是患者)。但是,您也可以在应用程序代码或其他配置文件中捕获此层次结构。

于 2013-05-04T20:25:07.637 回答