我有一个数据库,它为医疗实践捕获与患者有关的信息。此信息分布在多个表中:
- 患者 - 联系信息
- PatientMedicalHistory - 与当前问题无关的医疗状况
- PatientEpisode - 本次就诊的财务信息
- PatientEpisodeReason - 与患者今天在这里的原因有关的内容
我想引入一个标志系统,以便在调出患者详细信息时会出现任何消息。因此,例如,如果患者之前曾发生过心脏病发作,则需要对其进行标记(该信息将在 PatientMedicalHistory 中)。
我目前的方法是设置一个标志查找表,该表定义标志类型,标志所指的表/列以及为了提高该标志的值是什么:
CREATE TABLE FlagType
(
ID INT PRIMARY KEY IDENTITY,
TypeName NVARCHAR(300) NOT NULL,
Colour NVARCHAR(100) NOT NULL,
Urgency INT NOT NULL
)
CREATE TABLE Flag
(
ID INT PRIMARY KEY IDENTITY,
FlagTypeID INT NOT NULL REFERENCES FlagType(ID),
TableName NVARCHAR(300) NOT NULL,
FieldName NVARCHAR(300) NOT NULL,
FlagValue NVARCHAR(300) NOT NULL
)
这看起来一切都很好,但是尝试编写 a) 一个不像一团糟的存储过程或 b) 一个不会影响性能的 LINQ 查询似乎很困难。
有没有其他选择?问题是可以在上述任何表中的任何列上定义标志。这总共大约有 80 列。