对于ORM,您的设计绝对正确。没有冗余,可传递性很容易达到数据。尽管如此,有时候,发展仍要求简化和提高性能。性能必须胜过设计。
我不建议将user_id
添加到其他表中。这似乎是一场维护噩梦–确保user_id
在整个表中保持一致。
相反,您可能想借用与尺寸建模相关的技术(在Wikipedia中进行了描述)。那是扁平化的尺寸。
这意味着在最详细的级别上,除了用户之外,您还有one个表。有关空间,区域,盒子和项目的所有信息都在同一张表中。
[这是假设维度值实际上不会随时间变化-考虑时间维度或地理维度。