Sqlite 数据库模式设计选项

Sqlite 数据库模式设计选项,sqlite,database-design,database-schema,Sqlite,Database Design,Database Schema,我正在努力决定使用哪种数据库模式。一张大桌子,或者许多小桌子(尽管更难管理) 我有10个模板,每个模板都有自己的文本字段。我试图将模板的文本存储在数据库中,然后在调用网页时,我将在html模板中显示正确的文本。由于这些模板的混合将出现在一系列屏幕中,您可以在其中向后或向前导航,因此我需要能够对它们进行排序,我只能考虑添加一个页码列。我还想重新排序,并根据需要使用页码列删除它们 我计划在一个web应用程序中完成这一切,而不需要像小型CMS系统那样的标准文件夹/网页结构 备选案文1, 我可以创建一个

我正在努力决定使用哪种数据库模式。一张大桌子,或者许多小桌子(尽管更难管理)

我有10个模板,每个模板都有自己的文本字段。我试图将模板的文本存储在数据库中,然后在调用网页时,我将在html模板中显示正确的文本。由于这些模板的混合将出现在一系列屏幕中,您可以在其中向后或向前导航,因此我需要能够对它们进行排序,我只能考虑添加一个页码列。我还想重新排序,并根据需要使用页码列删除它们

我计划在一个web应用程序中完成这一切,而不需要像小型CMS系统那样的标准文件夹/网页结构

备选案文1, 我可以创建一个包含许多列的大表,其中很多列都是空的,每行超过一半。这不好吗

备选案文2, 我可以只使用所需的相关模板列创建许多表。 我看到的问题是,当我删除一行时,在每个表中重新填充一列是件令人头痛的事,因为我需要对表示页码的列重新排序。如果我用一张大桌子的话,我会减少

我曾想过将页码移动到另一个名为page_order的表中,但如果我进行更改,我想不出一种方法来保持其他表之间的有效关系

我还没有弄清楚在删除一行时如何在数据库中重新排序一列。这肯定是一个常见的问题


谢谢你花时间帮忙

有一个表,每个模板包含一行。它可能看起来像:

id (INT, auto-increment)
page_order (INT, unique key here, so pages cannot have the same number)
field1 (STRING, name of the text field) 
value1 (STRING, contents of the text field)
field2
value2
然后,您必须确定任何页面可以拥有的最大字段数(N),并将字段/值列添加到N

这样做的好处是您有一个不是稀疏填充的表(只要模板具有大约相同数量的字段,即使这些字段的名称不同)


如果您想对his进行改进(可能对少量数据没有必要),您可以将字段更改为INT id,并将其连接到包含(field\u id,field\u name)的查找表。

您好,感谢您的反馈,为了练习,我想我将解决这两个问题!这样我可以获得经验,因为数据库规划比我想象的更复杂。我开始使用多个表,因为我认为对于某个罕见的模板,大多数列都是空的,但其中有10列。尽管我仍然找不到任何空列降低性能或任何其他可忽略影响的证据?