这与this question有关。这让我想到了,例如,this book。它不再是[Agriculture]
和[Other]
的子项,而是分别位于树[Books > Catalogs > Agriculture]
和[Business & Industrial > Agriculture & Forestry > Other]
中,它可以自己将这些级别作为标记,代替。
在像eBay这样的网站中,使用标记 [Agriculture
和Catalog]
列出所有记录的性能成本是否远远高于列出{{1}中所有记录的成本} 类别,前提是数据是否已正确规范化?
我意识到这可能是一个愚蠢的问题(不,我不认为我正在编写下一个eBay),但我不能动摇这种好奇心,更糟糕的是; 诱惑;所以我现在听起来很愚蠢,并且比以后做一些愚蠢或毫无意义的事情更能把握我的误解。
答案 0 :(得分:10)
当关系模型首次出现时,主导数据库范式是分层的;然后(仍然如此)层次结构更有效,因为从本质上讲,您可以从部分预加入的查询开始。
但仅基于一个静态层次结构。当您想要将数据视图从另一个根维度弯曲时,会出现很大的困难。 (对于实际使用而言,关系数据库的效率是否足够高,这是一个备受争议的问题;很快就通过努力应用摩尔定律得以解决。)
考虑拥有包含产品的订单的客户;层次结构。不可避免地,您还希望能够考虑在客户订单中找到的产品;整个其他层次结构。以及从客户处生成订单的区域内的销售人员;或让客户下订单。
关系数据库使您能够以大致相同的效率随意重建层次结构;仅以嵌入多个正交层次结构为代价的其他数据库格式的优点;在这种情况下,改变,添加或删除数据的成本变得天文数字。
答案 1 :(得分:2)
关系模型的主要目的是防止重复。分层数据虽然更易于手动设置,但却存在重复问题。
使用最适合您数据的模型,而不是过早优化。
我倾向于用关系数据构建表示层次树。