我应该在何时使用标记来限制数据库表的数量

时间:2013-03-16 04:51:38

标签: database database-design markup

我对数据库设计有点新意,想知道我应该在表中存储什么,以及在文本字段中应该用标记语言存储什么,以后可以由服务器处理。我倾向于为基本上所有内容制作一个表格,但我注意到很多应用程序,比如说mediaWiki使用标记将数据存储在一个大文本字段中。这是否通过限制数据库查询量和表的大小来节省时间?或者服务器端处理会占用更多时间吗?


我的页面结构如下:

Page contains:
id
page_image_id
user_id
title
path
deleted

Page has many Sections

-

Section contains:
id
page_id
position

Section has many Paragraphs
Section has many Images
Section has many Page_Links

-

Paragraph contains:
id
section_id
body_text
position

-

Image contains:
id
section_id
user_id
image_path
description
position

-

Page_link contains:
id
page_id
section_id
description
position

我喜欢设计数据库,因为有可能达到10万多页。注意到,最后3个表可以非常快地变得非常大。将所有信息存储在节表中的标记然后使用服务器端代码处理信息会更有效吗?或者我低估了数据库查询的速度,因为那里的数据准备被操作会更有效率?我是否应该停止制作表并使用标记?

2 个答案:

答案 0 :(得分:1)

所以在这种情况下,没有正确或错误的答案。

通常你需要考虑的是你正在制作多少个连接 - 你应该索引的颜色是什么等等。

我通常ndo采用标准化的方式,(你已经完成),运行某种分析以查看查询是否可接受的快速或慢 - 然后考虑改变你的设计。

索引通常会使数据库查询非常快。但是,您最终加入查询的表越多,它就越慢。这些只是广泛的指导方针。

答案 1 :(得分:1)

整个问题归结为:数据管理视角中的原子是什么?

换句话说,您是否需要在数据库中查询或修改单个段落或其他页面元素

  • 如果是,您走在正确的轨道上。数据库级别的精细粒度将允许您索引和检索每个单独的数据,并修改一个数据而不会打扰其他数据。
  • 如果不是,只需将整个页面存储在一个字段中(可能是BLOB或CLOB)。如果您在应用程序级别处理(例如)单个段落并不重要 - 如果您总是从数据库中获取整个页面 (并且始终将整个页面写入数据库),然后它应该作为原子数据存储在数据库中。