我正在为我的Rails网站的设计问题而苦苦挣扎。我正在为建筑公司开发一个装修项目的评估工具。
默认情况下,它以这种方式订购项目:
但有时公司更喜欢这样订购商品。
在我们的数据库中,这些项与包含其parent_id的子表位于同一个表中。
我给出了在第一和第二显示模式之间快速切换的选项,但是我的方式对我来说并不是很干净。它总是存储在第一个例子中,我有一堆"ifs“来改变它的显示方式。
我找不到更好的方法,也找不到任何关于这个问题的讨论(也许我不知道该去哪里)。
对这种情况有什么最佳做法吗?
发布于 2021-02-09 09:14:37
而不是实体,让我们看一下这里的关系:
所以我们有两种一对多的关系,一种多对多的关系。层次结构是一对多的结构,因此不能正确地模拟房间和部分之间的关系。
相反,您可以显式地建模这些关系:
如果需要针对“房间”和“科”的组合存储信息,则需要创建一个新的实体来表示该组合:
或者,您可以采取另一种方式,将它变成一个通用的"facet“系统,其中"Room”和“节”作为运行时定义的属性,可以根据需要进行扩展或替换。这种灵活性带来了许多复杂性--例如,您需要重新实现约束之类的东西--所以,除非您确信它会带来价值,否则不要选择这个选项。
https://softwareengineering.stackexchange.com/questions/422037
复制相似问题