首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为小型学校门户建立数据库模型

如何为小型学校门户建立数据库模型
EN

Database Administration用户
提问于 2018-08-24 15:57:11
回答 1查看 66关注 0票数 1

你好,我的问题是如何建立数据库的模型。我大多数时候会感到困惑,不知道要创建什么表或需要什么。

是否有人可以拿出一个标准来让事情正常运作?

我目前的项目是一个简单的大学教职工管理应用程序,帮助学校管理:

  1. 按职级排列的工作人员分布情况
  2. 大学(课程、系主任和教员)。
  3. 进行工作人员调动
  4. 对工作人员进行晋升
  5. 进行移走工作人员
  6. 增加工作人员
  7. 回答简单的问题,例如,显示教授在文学院按部门,等等。
EN

回答 1

Database Administration用户

发布于 2018-08-24 16:33:05

我想我解决这样一个问题的方法是通过三个镜头来检查它(尽管在你的情况下更多的可能是合适的)。

  1. 对象(通常是问题陈述中的名词)。
  2. 关系(名词是如何相互作用的)
  3. 动作(通常是问题陈述中的动词)

在我深入讨论这个问题之前--如果您不介意重复数据(或数据库中可能出现的数据输入错误),那么可以将其创建为一个简单的平面表,每个项目都是与每个工作人员相关的文本字段,比如程序、部门和设施。然而,正如我所提到的,这很容易出现数据输入错误,尽管它使更新数据变得更加简单。

我将建议有几个表,为您提供数据的分层视图。在这种情况下,我将尝试遍历每一个并解释我将如何处理它:

对象

我看到了一些您可能希望将其合并到数据库中的对象:

  1. 员工
  2. 计划
  3. 部门
  4. 设施
  5. 职位/作用

其中每一个都很可能成为数据库中的各个表。最好使用主键和唯一标识符来标识这些对象(通常是每个表中的增量Id列)。这样,你就可以迈出下一步.

Relationships

接下来,您将识别您定义的对象之间的关系。例如,一个职位/角色可能“属于”(与)一个部门或方案有关--取决于您如何定义这些部门或方案(例如,数据库设计助理教授可能属于属于管理信息科学方案的软件系,反之亦然)。一名工作人员一般只担任一个职位/角色。如果是这样的话,就会有这样一棵树: Staff -> Programme -> Department -> Programme (或Staff -> means -> Department )取决于每一种方法。

如果是第一种情况,您可能会有一个包含外键列的Staff表,名为PositionId (或类似的内容)。此PositionId将以一对多的关系从职位表链接到Staff表。同样的情况也适用于职位表,它将有一个名为DepartmentId (或ProgrammeId)的外键列,该列具有与该职位表类似的关系链接。

这种逻辑的一个问题是,工作人员有时有可能担任多个职位。这将需要一个多到多的关系,这需要一个连接表在中间。例如,如果员工可以担任多个职位,那么您将创建一个名为StaffPosition的新连接表,其中包含一个StaffId和PositionId列。这个表,然后将有一对多的关系,在它与员工(在StaffId)和职位(在PositionId上)。这将使更新数据变得更加复杂,但在此过程中稍微超出了此响应的范围。

Actions

最后,您定义的操作将影响您将如何与这些表交互。通过你的每一个项目,我会给你我最好的猜测是什么样子(假设一个工作人员只能担任一个职位)。

  1. 不是行动
  2. 不是行动
  3. 执行员工调动-在staff表上执行更新,将PositionId更改为新职位。
  4. 对员工进行晋升--对“员工”表进行更新,将PositionId更改为新职位。
  5. 执行人员移除--在本例中,您可能需要做两件事:(1)向staff表中添加一个布尔/位字段,该字段指示员工当前是否受雇--在这种情况下,您将关闭该字段,并(2)将PositionId设置为NULL。当然,您也可以删除Staff表中的行,但是您可能需要稍后访问这些数据(或者重新雇用这些数据)。
  6. 执行人员添加-这将是一个简单的插入到staff表中,并在适当的情况下分配适当的PositionId。
  7. 回答简单查询--我提出的基本模式将允许通过对建议的表进行一些简单的内部连接。

我要提到的一件事是,在这种配置中,您需要有额外的管理功能,以便用户不仅可以添加工作人员,而且还可以添加/删除职位、方案、部门和设施(或者可以自己使用SQL )。

结论这是一个非常简单的概述,在您的情况下,我可以看到数据模型变得非常复杂。但希望这将给你和想法,从哪里开始和如何这样做。

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/215799

复制
相关文章

相似问题

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