2016年访问中药师与患者的关系

Relation Between Pharmacist and Patient in access 2016

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

我的第一个问题是我们知道一个Pharmacist可以有很多Patient,所以这意味着Pharmacist和Patient之间的关系是一对多的。因此,为了创建一对多关系,我将 Pharmacist_ID 作为主键。

现在的问题是我们知道Address和Patient是一对一的关系,那么我该如何完成这个任务呢?

另一个问题是我已经有了用Pharmacist_IDlink编辑的地址、城市和国籍。我可以 link 这些表格 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

此致,

阿尔斯兰·伊夫蒂哈尔

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

我将对地址 table 进行以下更改:

  1. 我更愿意为地址创建一个通用 table,它也有 CityNationality(为简单起见,其他 link 它们如下图 2)
  2. 添加字段 PID 作为数字,您可以在其中保存药剂师或患者 ID
  3. 添加字段 Ptype 作为数字,当药剂师时保存值 1,当患者时保存值 2,因此我们可以使用此字段轻松区分。

图片 1

图 2

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


My first problem is that we know that a Pharmacist can have many Patients, so it means that the relationship between Pharmacist and Patient is one-to-many

第一部分只有部分正确,这使得第二部分不正确,并可能导致大的设计失败。

在正常世界中:

  • 一个药剂师可以有很多病人
  • 一个病人可以有多个药剂师

不是吗?

因此,您具有多对多的关系。你如何解决这个问题?使用中间体 table 存储患者和药剂师之间的关系。

唯一的例外是,如果您只为一位药剂师制作软件,那么您的一对多方法会奏效,但我看不出有任何理由需要一位药剂师 table: )


Now the problem is that we know that the relation of Address and Patient is one-to-one, so how can I accomplish this task?

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

  • 同一家庭(同住)的患者。
  • 账单地址与家庭住址不同的患者。
  • 也是药剂师的患者。
  • 患者拥有多所房子。

这些都是很常见的情况。如果你选择 1-1,你最终会在你的地址 table 中得到很多双打。

我们几乎总是将地址分开 table 的真正原因是地址在信息系统中很少是一对一的。如果它是一对一的,就没有真正的理由将它们存储在额外的 table 中。


I am confused because the data-type of Pharmacist_ID is Auto-Number. The Patient_ID of the first Patient will be 1 and then Pharmacist_ID of the first Pharmacist will also 1 so what will happen?

这是一个很好的问题,应该会导致您出现上述设计错误。你不应该在地址和其他东西(病人或药剂师)之间有 1-1。

在您的 Patient AND Pharmacists table 中,您应该有一个 AddressID 引用地址 table 中的 ID。如果要让机会给药剂师储存:

  • 家庭住址
  • 账单地址
  • 节日地址
  • 任何附加地址

您应该:

  • 在您的 Patient(最终是 Pharmacist table)中为每种地址类型创建一个 AddressID 字段。
  • 如果您的地址确实有很多类型,最好创建一个中间 table 处理地址和 Patient/Pharmacists 之间的 m-to-m,其中至少有一个类型列。

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

我猜你的 CITY table 的目的是要有一个大的城市列表?例如,您可以将其用于组合框吗?如果你这样做,你可以对国家或 states/regions 做同样的事情。没关系,但是:city_id(最终是 State_ID 和 Country_ID)应该是地址 table 的一部分。只有街道、门牌号和邮政信箱的地址没有意义。这不完整,地址还应包含邮政编码、城市和国家/地区才能完整。