sql - 设计此特定数据库/SQL 问题的最佳方法是什么?

标签 sql database-design normalization

这是一个棘手的规范化/SQL/数据库设计问题,一直困扰着我们。我希望我能正确地陈述它。

你有一组事件。它们是需要做的事情——一个美化的待办事项 list 。任何给定的事件都可以分配给员工。

每个事件也有一个实体,为谁执行该事件。这些事件是联系人(人)或客户(企业)。然后,每个事件将有一个联系人或一个为其完成事件的客户。例如,事件可能是“向 Spacely Sprockets(客户)发送感谢卡”或“向 Tony Almeida(联系人)发送营销文献”。

从这个结构中,我们然后需要能够查询以找到给定员工必须做的所有事件,将它们列在一个单一的关系中,最简单的形式是这样的:

-----------------------------------------------------
| Activity | Description    | Recipient of Activity |
-----------------------------------------------------

这里的想法是避免为联系人和客户提供两列,其中一列为空。

我希望我已经正确地描述了这一点,因为这并不像乍一看那样明显。

所以问题是:数据库的“正确”设计是什么,您将如何查询它以获得所需的信息?

最佳答案

这听起来像是一个基本的多对多关系,我会这样建模。

alt text

关于sql - 设计此特定数据库/SQL 问题的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3982288/

相关文章:

mysql - 如何将一张表与两张表关联起来

C/C++ - 将 32 位浮点值转换为 24 位规范化定点值?

sql - 永无止境的查询

c# - 对电子邮件的 HTML 表的 SQL 查询

sql - 如何从 postgreSQL 中的时间戳中减去/添加分钟

database-design - DynamoDB + 将值存储为项目或 JSON

mysql - 需要更好的数据库设计方法

javascript - 通过 id 规范化对象数组和键

java - 在 ColdFusion 中规范化字符串

mysql - 如何删除多个表中的数据?