我正在设计一个涉及“页面”的应用程序,它有许多“块”,其中有几种类型的块。我正在努力寻找一种在数据库中保存这些数据的好方法。我想有一种流行的做法,这里有两个我正在考虑的事情:
接近一个
这样做的优点是所有类型的块(创建,更新,页面,标题,顺序)共有的属性都保存在一个地方。您也不必查询每个块类型表来检查当前页面的块,就像使用此“索引”一样。缺点是它在查找块时可能会有点混乱,但这只取决于正确实现它(找到页面的所有块,按块_type分组,在每个block_type上运行查询)。
接近两个
这方面的优点是删除了查找正确的表来查询每个块的混乱方式。缺点是无法轻松管理块顺序(update where order in any other block != $order
),并且每个表必须具有相同的创建,更新等字段,如果需要更改它们需要付出一些努力。更大的问题是必须为每个页面查询每个特定于块的表,而不仅仅是块表,这些表肯定有页面块。
还有第三种更好的方法吗?我认为最好的方法是第一种方法(它至少比第二种方法规范化,表格逻辑不是 令人困惑)但我想知道是否有一些我缺少的东西: )
答案 0 :(得分:1)
方法二有一个巨大的骗局:订购。
我会采取方法一,或者: (我知道它看起来很脏,但它确实有效)
你可以优化它重用一些列
优点:与方法一相同
<强>缺点:强>
额外提示
如果您计划使用VisualStudio创建应用程序,请使用实体数据模型(.edmx文件),使用“应有的方式”创建具有继承的实体,然后单击“从模型生成数据库”。我相信你的两种方法都有所有优点和缺点。