1

我对数据库设计有点陌生,想知道我应该在表中存储什么,以及应该在文本字段中使用标记语言存储什么,然后服务器可以处理这些内容。我倾向于为基本上所有内容制作一个表格,但我注意到许多应用程序,例如 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

我喜欢在设计数据库时考虑到达到 100 000+ 页的可能性。请注意,最后 3 个表可能会很快变得非常大。将所有这些信息存储在节表中的标记中然后使用服务器端代码处理信息会更有效吗?或者我是否低估了数据库查询的速度以及更高的效率,因为那里的数据准备好被操纵?有没有什么时候我应该停止制作表格并使用标记?

4

2 回答 2

1

因此,在这种情况下,恕我直言,没有正确或错误的答案。

通常你需要考虑的是你做了多少个连接——你应该索引什么列等等。

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

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

于 2013-03-16T04:59:09.297 回答
1

整个问题归结为:从数据管理的角度来看,什么是原子的?

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

  • 如果是,那么您走在正确的轨道上。数据库级别的精细粒度将允许您索引和检索每个单独的数据,并在不干扰其他数据的情况下修改一个数据。
  • 如果不是,只需将整个页面存储在一个字段中(可能是 BLOB 或 CLOB)。如果您在应用程序级别处理(例如)单个段落并不重要- 如果您总是从数据库中获取整个页面(并且总是将整个页面写入数据库),那么它应该存储为一个原子片段数据库中的数据。
于 2013-03-16T11:03:38.513 回答