我正在设计一个涉及“页面”的应用程序,它有许多“块”,其中有几种类型的块。然而,我努力寻找一种将数据保存在数据库中的好方法。我想像有这样的一种流行方式,这里有两个我正在考虑:如何处理“扩展”表
一种用法
- 页表
- ID
- 用户
- 创建,更新等。
- 块
- ID
- 页(Blocks.page = Pages.id)
- 创建,更新
- BLOCK_TYPE(例如“文本”)
- BLOCK_ID(Blocks.block_id = nBlocks.id其中n = BLOCK_TYPE)
- 文本块
- ID
- 特定文本的属性
其优点是,所有类型的块(创建,更新,页面,标题,顺序)通用的属性保存在一个地方。您也不必查询每个块类型表来检查当前页面的块,因为您将拥有此“索引”。缺点是它可能会在查找块时变得有点混乱,但这取决于正确实施它(查找页面的所有块,块的类型,每个块类型的查询)。
方法有两个
- 页面像以前
- 文本块
- ID
- 页
- 体,特定文本项
- 创建,更新,为了
- 列表块
- ID
- 页
- 特定列表项
- 创建,更新,订单等本
优点卸下的混乱方式找到正确的表来查询每个块。缺点是无法轻松管理块顺序(update where order in any other block != $order
),并且每个表必须具有相同的创建,更新等字段,这些字段在需要更改时需要付出一些努力。更大的问题是,每个页面都必须查询每个块特定的表格,而不是仅仅为页面确定的块表格。
有没有第三个更好的方法呢?我认为最好的方法是第一个(它至少比第二个更规范化,表格逻辑不是那混淆)但我想知道是否有什么我想念:)