Mysql SQL癌症标本数据库的设计建议

Mysql SQL癌症标本数据库的设计建议,mysql,sql,relational-database,medical,Mysql,Sql,Relational Database,Medical,我是一名病理学家,设计了一个数据库,其中包含从我医院癌症患者身上收集的外科标本数据。目前在MySQL中看起来是这样的: Specimen_id Variable Value 1 Tumor_stage pT3 1 Node_stage pN2 1 Other_findings diverticulitis 2 Tumor stage pT1 2

我是一名病理学家,设计了一个数据库,其中包含从我医院癌症患者身上收集的外科标本数据。目前在MySQL中看起来是这样的:

Specimen_id    Variable       Value
1            Tumor_stage       pT3
1            Node_stage        pN2
1           Other_findings    diverticulitis
2            Tumor stage       pT1
2            Node_stage        pN1
2           Other_findings    adenomas
2           Other_findings    dysplasia
2           Other_findings    Crohns_disease
我想确保样本中某些变量只能有一个条目(即样本只能有一个肿瘤分期和淋巴结分期),但其他变量(如“其他发现”)可以有多个条目。有什么我可以添加到表格中的禁忌来达到这个目的吗

或者,我可以这样设计桌子:

Specimen_id  Tumor_stage   Node_stage        Other_findings
1                 pT3         pN2                 ?
2                 pT1         pN1                 ?
create table specimens as (
    specimen_id int primary key,
    Tumor_stage varchar(255),
    Node_stage varchar(255)
);

create table specimens_findings as (
    specimen_findings_id int auto_increment primary key,
    Specimen_id int,
    other_finding varchar(255)
    foreign key (specimen_id) references specimens (specimen_id)
);
但我不知道如何将“其他研究结果”变量的任意长的值列表与样本关联起来


对不起,如果这是超级简单。我是这方面的新手。谢谢

您可能应该设计如下两个表:

Specimen_id  Tumor_stage   Node_stage        Other_findings
1                 pT3         pN2                 ?
2                 pT1         pN1                 ?
create table specimens as (
    specimen_id int primary key,
    Tumor_stage varchar(255),
    Node_stage varchar(255)
);

create table specimens_findings as (
    specimen_findings_id int auto_increment primary key,
    Specimen_id int,
    other_finding varchar(255)
    foreign key (specimen_id) references specimens (specimen_id)
);

您可能希望
tumor\u stage
node\u stage
其他\u finding
字段实际与适当的参考表具有外键关系,因此这些值仅限于特定的组。您也可以出于同样的目的实现
enum
s。

MySQL对约束的支持较差,所以你唯一的选择就是使用触发器。或者将逻辑构建到INSERT本身中,或者为其他查找创建一个单独的表。如果有人试图添加另一个受限变量实例,会发生什么情况?@Gordon说的对,但我想知道这是否有效<代码>创建视图仅过滤那些应具有单个值的
变量。声明该视图的密钥。感谢您的想法!我来看看这些选项。