2011-07-22 88 views
0

我正在开发一个项目(基于Django,虽然这与我的问题没有多大关系),我正在努力找出表示数据模型的最佳方法。数据库设计 - 管理这些关系的最佳方式

我有四个以下型号:

用户, 客户端, 会议, 位置

用户和客户端必须通过会议模式多对一对多的关系。会议模型与位置模型具有一对一的关系。

会议将在任一:

  1. 在用户(或用户配置)模型
  2. 在客户机模型定义的地址所定义的地址。
  3. 某些其他位置必须在以后定义。

我正在努力研究存储位置数据的最佳方法,以使其尽可能干净和可重用。

  • 我认为做位置作为会议模式,而不是在自己的权利模型的领域 - 虽然这也可能导致如果在同一位置创建了大量会议的冗余数据,所以这可能是一个非首发。

  • 我可以为创建的每个用户和客户端自动创建位置记录,并使用相关记录之间的通用关系,但是,我知道这会导致数据库性能低下。另外,并非每个客户/用户都能够在他们的位置举行会议。

任何人都可以看到一个整洁的替代品吗?

任何意见赞赏。

谢谢。

回答

1

我认为做位置作为会议模式,而 不是在自己的权利模型的领域 - 但如果在同一位置创建了大量的会议,这可能也导致 冗余数据, 所以这可能是一个不起眼的人。

不,这是一个真的好的想法,因为它指出你直接面对真正的问题。

真正的问题是会议与参加会议的各方有区别。会议有一些与会者无关的属性:至少有一个时间和一个地方。

所以我认为你应该改变你对会议模型的想法。

而不是通过会议模型与客户有M:N关系的用户,他们应该有一个M:N关系,比如考勤模式。 (注册或预订或MightAttend模式可能更适合您)。会议模型应该改变以反映真实世界会议的独特属性:时间和地点。

1

我期望会议和地点有多对一的关系。一个地点不能用于多个会议吗? (在不同的时间,当然)

在我看来,一个位置的属性超出了一次会议的使用范围。例如:座位容量。