我想为儿童设计一个疫苗接种图表。
每个孩子都有自己的时间表和管理日期的历史。
我计划将每种疫苗的接种日期存储在儿童表中,每列存储每种疫苗的接种日期。(如 child_chart(child id、vaccine1_administered_date、vaccine2_administered_date、...)
现在,如果发现新疫苗并将其添加到图表中,我需要动态创建一个新列。
这是唯一的方法,还是我可以在不动态创建列的情况下以任何其他方式执行此操作。
这是我第一个使用数据库的项目。请帮我。谢谢
您计划了错误的表结构。
提示:使用序列号 ( foobar1
, foobar2
, foobar3
)命名表上的一系列列通常表示数据库设计不正确。
你有孩子,你有疫苗作为实体。每个都应该用一个表格来表示。
此外,您在这两个实体之间建立了关系。每个孩子都可以接种零剂、一种或多种疫苗。每种疫苗可以接种给零个、一个或多个儿童。这意味着这两个实体具有多对多关系。
多对多关系总是一个问题。解决方案始终是连接其他两个表的第三个表,表示它们之间的关系。桥接表总是至少有两个字段;作为子表,它有一个指向每个父表的外键。
在您的情况下,桥接表的名称类似于dose
,跟踪哪个孩子接种了哪种疫苗。在您的情况下,该表将有第三个字段,即给予剂量的日期。
为了将这些数据一起显示,您需要执行数据库连接以从各个表中提取各个列,其中行将子表上的外键 ( dosage
) 与每个父表的主键 ( patient
& vaccine
) 相匹配。
有关多对多的更多讨论,请搜索规范示例:书籍、作者和名为 Authorship 之类的桥接表。另一个例子是员工被分配到团队/项目。另一个例子是音乐专辑,其中专辑被归类为一个或多个流派,并且每个流派都可以分配许多专辑,如本问题所述。
还可以搜索以了解有关如何将此类数据分离到表中的更多信息,这一过程称为数据库规范化。
每个孩子都有自己的时间表和管理日期的历史。
此答案仅解决您问题的“管理日期的历史”部分,而不是日程安排。
这是我第一个使用数据库的项目。
您的疫苗接种记录问题并不简单。作为初学者,我建议解决一个更简单的问题。
归档时间: |
|
查看次数: |
251 次 |
最近记录: |