首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >疫苗数据库设计

疫苗数据库设计
EN

Stack Overflow用户
提问于 2022-08-19 08:43:56
回答 1查看 74关注 0票数 -2

我的意图是为小型宠物疫苗应用程序设计数据库模式。在宠物表中,我想存储有关宠物的详细信息,以及是否需要特定的疫苗接种。3~4种疫苗类型(VT1、VT2、Vt3、VT4)保存在Vaccine_Type表中.对于每种疫苗类型,都有来自不同供应商的疫苗,所以我决定将这些信息存储在疫苗表中。疫苗接种详细信息存储在关联表-疫苗接种中。其中包括:vaccination_type,pet_id、 vaccine_id、veterinarian_id,vaccination_date和expiation_date,(如果过期日期超过 active 字段)设置为False,这表明疫苗接种不再有效,需要新的疫苗接种。请建议如何将这些信息链接到宠物表中,以显示哪种疫苗类型需要重新接种。如果数据库架构是正确的,或者可以进行更多的优化,则提供建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-19 18:04:00

我会修改一下。

  • Vaccine_Type不需要与疫苗连接。该类型可以从Vaccination.
  • No疫苗与疫苗接种表中的expiration_date或活动布尔值之间的链接导出。在疫苗表中添加一个“活动期间”字段,该字段定义疫苗保持活动的年份、月份或周(或制造商指定的时间)。

H 119添加E 120物种E 221表。前猫狗狗..。此表将链接到宠物表和疫苗表。疫苗是特定于物种的,如果它们是通用的,则将其添加到两者之间的链接表中。这个表稍后会很有用。

如果要检查宠物是否接种过期疫苗,请执行以下操作:

  1. 通过疫苗表和表获得适用于宠物物种的疫苗列表。

  1. 获得了每种疫苗通过免疫表注射到宠物身上的最新日期。如果从未完成该值,则该值可能为空。在这种情况下,转到下面的步骤5。

  1. 从上面提取的疫苗列表中获得疫苗的有效期。

  1. 将(从步骤3到步骤2+周期的日期)与当前日期进行比较。

如果已过期,则通过调度application.安排新的注入。

作为一般概念,将数据存储在数据库中。任何需要计算的内容都不是在字段中,而是在应用程序中,使用数据库中的数据。

另一个概念是,不要将可以从其他链接中派生出来的东西链接起来。这是尊重正常形式的。

所以:

代码语言:javascript
复制
Pet
    petid, PK
    name, NN
    speciesid, FK (Species.speciesid), NN
Species
    speciesid, PK
    name, NN

Vet
    vetid, PK
    name, NN
    
Vaccine
    vaccineid, PK
    name, NN
    vaccinetypeid, FK (Vaccinetype.vaccinetypeid), NN
    activeperiod, NN
Vaccinetype
    vaccinetypeid, PK
    name, NN
Vaccine_Species
    vaccineid, FK (Vaccine.vaccineid)
    Species, FK (Species.speciesid)
    
Vaccination
    vaccinationid
    vetid, FK (Vet.vetid)
    petid, FK (Pet.petid)
    vaccineid, FK (Vaccine.vaccineid)
    date, NN

图例:

  • PK:主键
  • FK:外键
  • NN:非空违禁品

备注:

  • 疫苗可以是多种类型的吗?如果是这样,则添加一个链接表,而不是单个FK.
  • ,如果疫苗无法应用于多个物种,则可以在表疫苗和之间进行直接链接,而不是链接表。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73414080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档