【问题标题】:SQL - MS Access Form design - add data of ISA relationshipsSQL - MS Access 表单设计 - 添加 ISA 关系数据
【发布时间】:2020-05-14 20:57:19
【问题描述】:

我正在学习 DBMS 课程,我需要设计和构建自己的数据库。我有一个医院的数据库,其中医生、护士、支持人员等与 Employee 实体具有 ISA 关系,其余数据如姓名、地址、薪水和其他员工数据。

设计表单时,我希望能够在一个表单中添加员工及其所有数据。 有没有办法做一个“条件表”,如果我从下拉列表中选择“医生”,我也可以添加到医生表中,对于 ISA 关系下的其他实体也是如此?

谢谢!

【问题讨论】:

  • 鉴别器(使您能够区分类型)只是一个数据库列和一个 GUI 变量。可以通过为员工创建一个基类并让 eahc 类型继承这个基类来利用医生是雇员并且护士也是雇员的事实。当您持久化数据时,您必须设计方法来执行 Employee.Save(...some data structure...),

标签: sql database ms-access


【解决方案1】:

作为一般规则,在处理数据时,您不要为给定的表单或关系数据库设计翻转或切换表。

所以,例如。如果我有一张客户表。好吧,现在如果我想将一些客户标记为水管工,将其他客户标记为医生?我不创建两个表。

我要做的就是在该客户表中添加一列,它只允许我设置客户的类型。这种设计的原因是“很多”,但一些重要的原因是:

对于每种新类型的客户,您不会创建新表。更糟糕的是,所有的表格、报告、SQL、你写的代码?好吧,每次创建新表时都必须修改所有代码。因此,您不能简单地采用一种设计,其中更改表格的概念是该过程的一部分。

表单绑定到一张表。对于相关数据,您在大多数情况下会使用子表单。

因此,甚至可以考虑一个会计系统。他们可以拥有大量客户,因此,您可以“查询”该表以提供所有客户。或者你可能会问客户名单中有多少家会计师事务所。或者制作一份按客户类型汇总的报告,对每种类型的客户进行“计数”。

那么,构建表单还是报表?他们不能即时“更改”他们正在使用的表格。

因此,代替名为: 销售一月 销售二月 销售月 等等

嗯,现在你不能查询一月到三月的销售额,因为数据在不同的表中。

因此,您要做的是有一个名为“sales”的表,然后添加一列日期。现在,在每个新月的开始,您不必创建新表。

现在,当然在某些情况下创建一个单独的表是有意义的。例如,客户表和数据库中的员工表就可以了。在这种情况下,使用两个表是有意义的,因为有关客户的信息以及他们可以做什么以及信息的类型与您与员工打交道的方式非常不同。

那么,上面呢?那么,如果我需要为所有客户和所有员工打印邮寄标签?这将需要两份不同的报告。而且很可能这两个表的表结构不同。

底线: 如果您从事设计、表格或报告工作?您是否需要尝试更改表单/报告/代码等将要操作的表格?这表明您的设计方法已经完全偏离轨道并且是错误的设计。

那么,对于医生、护士等呢?好吧,他们都是医院工作人员,关于这些员工的大部分基本信息都是通用的,几乎相同,因此“员工”的单张表是最有意义的。您只需要一个漂亮的“员工类型”组合框在该表格上,因此您可以在该表格中添加/输入/编辑/搜索任何员工。

您“想要搜索”员工这一事实表明,所有这些人“都是”员工,因此属于一个表。无论如何,所有员工的基本信息都是一样的。如果您发现您正在尝试创建一个新表但结构几乎相同,那么就像每个月销售的新表一样,或者每种新员工的新表?只需添加允许您进行区分的“一个”列,而不是一个全新的表。

现在人们甚至可以尝试将患者放在同一张桌子上,但话又说回来,处理专利而不是员工是一种相当不同的“事情”。

所以员工就是员工——甚至是不同种类的员工。 (经理、清洁人员等)。 患者就是患者——甚至是不同类型的患者(长期护理、急诊等)。

【讨论】:

  • 感谢您的详细回复!除了诸如“医生”、“护士”等标签之外,这些实体中的每一个都有额外的两个或三个对它们来说是唯一的变量。例如 - 医生可能具有专业领域,护士可能具有他们负责的资格或房间号。如果我想创建一个表单来添加新员工,我该如何处理?
  • 然后建立一个资格子表。您甚至可能在该表中有设置限定类型或类型的那一列。因此,随着时间的推移,您可以添加任意数量的新资格类型,而不必更改您的表格设计。所以,一些医生可能有 5 或 25 种资格 - 你只是在这个子表中添加行。当然,相同的资格子表可用于任何类型的工作人员,从护士,甚至是接受过某些类型设备培训的工作人员等。因此,一个工作人员记录,以及他们“许多”资格类型的子表。
猜你喜欢
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多