我正在开发一个项目(基于Django,虽然这与我的问题并不相关),我正在努力找出表示数据模型的最佳方法。
我有以下四种模式:
用户, 客户, 会议, 位置
用户和客户通过会议模式建立多对多关系。会议模型与位置模型具有一对一的关系。
会议将在以下两个地方举行:
我正在努力找出存储位置数据的最佳方法,以使其尽可能干净和可重复使用。
我考虑过将Location作为Meetings模型中的字段而不是模型本身 - 虽然如果在同一位置创建了大量会议,这也可能导致冗余数据,所以这可能是一个非起动
我可以为每个创建的用户和客户端自动创建位置记录,并使用相关记录之间的通用关系,但是,据我所知,这可能导致数据库性能低下。此外,并非每个客户/用户都能够在其位置举行会议。
任何人都可以看到更整洁的选择吗?
任何建议表示赞赏。
感谢。
答案 0 :(得分:1)
我考虑过将Location作为会议模型中的字段 而不是一个模型本身 - 虽然这也可能导致 如果在同一位置创建了大量会议,则为冗余数据, 所以这可能不是首发。
不,这是真正好的想法,因为它直接指出了真正的问题。
真正的问题是会议与参加会议的各方之间存在差异。会议有一些与参加者无关的属性:它至少有一个时间和地点。
所以我认为你应该改变你对会议模式的看法。
而不是用户通过会议模型与客户建立M:N关系,他们应该通过例如出勤模型建立M:N关系。 (注册或预订或MightAttend模型可能更适合您。)会议模型应该更改以反映现实世界会议的独特属性:时间和地点。
答案 1 :(得分:1)
我希望会议和地点有多对一的关系。一个位置不能用于多个会议吗? (当然,在不同的时间)
在我看来,一个位置的属性超出了单次会议的使用范围。示例:座位容量。