Database 数据库设计指南

Database 数据库设计指南,database,database-design,Database,Database Design,我已经设法使我的数据库有了一些设计。到目前为止,它看起来如下所示 情况就是这样。重点是我的项目表。一个项目属于一个客户。因此,我可能会为say So创建一个项目。此项目可能有许多用户(图像显示错误的关系)在该项目上工作。每个用户都属于一个部门。所以我和鲍勃可能正在为某个项目工作,我属于市场部,鲍勃属于金融部 这就是我感到困惑的地方。每个部门都有一套项目需要完成的文件。市场营销可能需要做一个文档a和文档B,而财务可能需要做一个文档C 假设我做这样的事 我基本上是说一个部门有一个或多个文件。但你

我已经设法使我的数据库有了一些设计。到目前为止,它看起来如下所示

情况就是这样。重点是我的项目表。一个项目属于一个客户。因此,我可能会为say So创建一个项目。此项目可能有许多用户(图像显示错误的关系)在该项目上工作。每个用户都属于一个部门。所以我和鲍勃可能正在为某个项目工作,我属于市场部,鲍勃属于金融部

这就是我感到困惑的地方。每个部门都有一套项目需要完成的文件。市场营销可能需要做一个文档a和文档B,而财务可能需要做一个文档C

假设我做这样的事

我基本上是说一个部门有一个或多个文件。但你可以看到它变得一团糟。我怎样才能证明营销有文档A和文档B,而财务有文档三

我是否需要将营销和财务定义为与departments表的一对一关系,然后从中生成文档?这将产生与此类似的结果

这是正确的方法吗?基本上,我需要将不同的文件链接到不同的部门,实现这一点的最佳方法是什么


谢谢

我个人不喜欢这两种方法;当表中的数据类型几乎相同时,它们为每种文档类型创建单独的表。在这种情况下,我更赞成一张桌子

我会有一个documents表,其中有一个指示文档类型的类型,是DocumentType表的forein键,该表列出了所有文档类型

根据项目和部门选择文档类型的方式,我会有一个DepartmentDocuments表,列出每个部门可以使用的文档。我还将有一个ProjectDepartmentDocuments表,该表显示用于特定项目的授权和可选文档,以及特定于部门/项目的信息


我还质疑用户与项目之间的关系。一个项目似乎只能有一个用户。如果是这样的话,你的设计很好。但是,如果一个项目可以有多个用户,那么您应该有一个projectUsers表来处理多对多关系。

谢谢您的回复。我有一个后续问题。此应用程序将生成文档。假设文档彼此非常不同,并且我通过表格收集每个文档的数据,这是否需要为每个文档提供单独的表格?谢谢有两种方法。一种是有一个doc表,其中列出了每个doc的字段,还有一个单独的表来存储这些键对的值。这种方法的挑战是报告可能很麻烦,因为数据是垂直的,而不是水平的,这意味着如果需要对文档进行报告和聚合,那么使用第二种方法可能会更好。但是,如果每个文档都独立于其他文档,并且不需要聚合,那么第一个选项可能是最好的。第二个选项是单独的表。这里的挑战是每个文档都有新的表/代码。谢谢,我创建了一个新主题,它提供了这个特定问题的更多细节。如果你有时间,如果你能去看看就好了。谢谢