Access中的药剂师和患者之间的关系2016

时间:2018-12-28 16:58:53

标签: database ms-access database-design relation ms-access-2016

我正在Access 2016中创建一个药房数据库。这是我的学校项目,也是第一个数据库项目。

我的第一个问题是,我们知道药剂师可以有很多患者,因此这意味着药剂师与患者之间的关系是一对多的。因此,为了创建一对多关系,我将Pharmacist_ID作为主键。

现在的问题是,我们知道地址和患者的关系是一对一的,那么我该如何完成这项任务?

另一个问题是我已经有了与Pharmacist_ID链接的地址,城市和国籍。我可以用Patient_ID链接这些表吗?

我很困惑,因为Pharmacist_ID的数据类型是Auto-Number。第一位患者的Patient_ID将为1,然后第一位药剂师的Pharmacist_ID也将为1,那么会发生什么?

同样,我正在使用MS-Access 2016。 This is the Picture of The RelationShip and you can see the Details of my Tables

此致

Arslan Iftikhar

enter image description here

This is for Thomas G check it out Thomas do you think I am doing right or wrong

2 个答案:

答案 0 :(得分:0)

我将对“地址”表进行以下更改:

  1. 我宁愿为Address创建一个公用表,该表也具有CityNationality(为简单起见,请像下面的图片2一样链接它们)
  2. 在字段PID中添加了数字,您可以在其中保存药剂师或患者ID
  3. 在字段Ptype中添加了字段flush作为“药剂师”时保存值1的数字和“患者”时保存值2的数字,因此我们可以使用此字段轻松区分。

图片1 enter image description here

图片2

Image 2

答案 1 :(得分:0)

您的方法中存在一些设计错误。 我将列出一些我想的事情,并尝试训练您提出正确的问题。


  

我的第一个问题是,我们知道药剂师可以拥有许多   患者,所以这意味着药剂师和   病人是一对多的

第一部分仅部分正确,这会使第二部分不正确,并可能导致较大的设计失败。

在正常世界中:

  • 药剂师可以有很多病人
  • 患者可以有很多药剂师

不是吗?

因此,您之间具有亲密关系。您如何解决呢?带有存储患者和药剂师之间关系的中间表。

唯一的例外是,如果您只为一名药剂师制作软件,则您的1-to-m方法将起作用,但是我看不出有任何Pharmarcist表的原因:)


  

现在的问题是,我们知道地址和   病人是一对一的,我该如何完成这项任务?

您真的确定吗?那么在这种情况下会发生什么:

  • 同一个家庭的患者(住在同一所房子里)。
  • 帐单邮寄地址与家庭住址不同的患者。
  • 也是药剂师的患者。
  • 拥有几所房屋的患者。

这些是非常常见的情况。如果您使用1-1,那么您的地址表中将会有很多双打。

我们几乎总是将地址放在单独的表中的真正原因是地址在信息系统中很少是一对一的。如果是一对一的,则没有真正的理由将它们存储在其他表中。


  

我很困惑,因为Pharmacist_ID的数据类型是自动编号。   第一个患者的Patient_ID将为1,然后是Pharmacist_ID   的第一位药剂师也会1那么会发生什么呢?

这是一个很好的问题,它应该导致您遇到上述设计错误。地址和其他内容(患者或药剂师)之间不应有1-1。

在“患者和药剂师”表中,您应该具有一个AddressID,该ID引用地址表中的ID。如果您想让法老主义者有机会进行存储:

  • 家庭住址
  • 帐单地址
  • 假日地址
  • 任何其他地址

您应该:

  • 在“患者”(最后是“药剂师”表)中为每种地址类型创建一个AddressID字段。
  • 如果您的地址确实有很多类型,最好创建一个中间表来处理地址和“患者/药剂师”之间的数据,至少要有一个“类型”列。

编辑。您对新模型的反应。

我想您的CITY表的要点是要列出很多城市?您可以用于组合框吗?如果采用这种方式,则可能会对国家或州/地区执行相同的操作。很好,但是:city_id(以及最终的State_ID和Country_ID)应该是ADDRESS表的一部分。仅包含街道,门牌号码和邮政信箱的地址没有意义。这是不完整的,地址中还应该包含邮政编码,完整的城市和国家/地区。