你好,我的问题是如何建立数据库的模型。我大多数时候会感到困惑,不知道要创建什么表或需要什么。
是否有人可以拿出一个标准来让事情正常运作?
我目前的项目是一个简单的大学教职工管理应用程序,帮助学校管理:
发布于 2018-08-24 16:33:05
我想我解决这样一个问题的方法是通过三个镜头来检查它(尽管在你的情况下更多的可能是合适的)。
在我深入讨论这个问题之前--如果您不介意重复数据(或数据库中可能出现的数据输入错误),那么可以将其创建为一个简单的平面表,每个项目都是与每个工作人员相关的文本字段,比如程序、部门和设施。然而,正如我所提到的,这很容易出现数据输入错误,尽管它使更新数据变得更加简单。
我将建议有几个表,为您提供数据的分层视图。在这种情况下,我将尝试遍历每一个并解释我将如何处理它:
我看到了一些您可能希望将其合并到数据库中的对象:
其中每一个都很可能成为数据库中的各个表。最好使用主键和唯一标识符来标识这些对象(通常是每个表中的增量Id列)。这样,你就可以迈出下一步.
接下来,您将识别您定义的对象之间的关系。例如,一个职位/角色可能“属于”(与)一个部门或方案有关--取决于您如何定义这些部门或方案(例如,数据库设计助理教授可能属于属于管理信息科学方案的软件系,反之亦然)。一名工作人员一般只担任一个职位/角色。如果是这样的话,就会有这样一棵树: Staff -> Programme -> Department -> Programme (或Staff -> means -> Department )取决于每一种方法。
如果是第一种情况,您可能会有一个包含外键列的Staff表,名为PositionId (或类似的内容)。此PositionId将以一对多的关系从职位表链接到Staff表。同样的情况也适用于职位表,它将有一个名为DepartmentId (或ProgrammeId)的外键列,该列具有与该职位表类似的关系链接。
这种逻辑的一个问题是,工作人员有时有可能担任多个职位。这将需要一个多到多的关系,这需要一个连接表在中间。例如,如果员工可以担任多个职位,那么您将创建一个名为StaffPosition的新连接表,其中包含一个StaffId和PositionId列。这个表,然后将有一对多的关系,在它与员工(在StaffId)和职位(在PositionId上)。这将使更新数据变得更加复杂,但在此过程中稍微超出了此响应的范围。
最后,您定义的操作将影响您将如何与这些表交互。通过你的每一个项目,我会给你我最好的猜测是什么样子(假设一个工作人员只能担任一个职位)。
我要提到的一件事是,在这种配置中,您需要有额外的管理功能,以便用户不仅可以添加工作人员,而且还可以添加/删除职位、方案、部门和设施(或者可以自己使用SQL )。
结论这是一个非常简单的概述,在您的情况下,我可以看到数据模型变得非常复杂。但希望这将给你和想法,从哪里开始和如何这样做。
https://dba.stackexchange.com/questions/215799
复制相似问题