2012-07-20 42 views
2

我正在开发一个web应用程序,其主要功能是向用户显示一些数据。但是,这些数据有几种类型,每种数据都必须以不同的方式呈现。许多类型的数据 - 一个表与多个表

例如,我必须列出9个结果 - 3本书,3个作者和3个文件。

本书用(char)TITLE,(文本)描述来描述。

作者用(char)TITLE,(char)描述来描述。

文件用(char)URL描述。

此外,每种类型都有像ID,DATE,VIEWS等字段。 书和作者被提供简单的HTML代码,文件使用外部阅读器嵌入在网站上。

我应该建立三个不同的表,并在获取这些数据时使用JOIN,或者建立一个表并将所有类型存储在那里?哪种态度更有效率?

附加信息 - 将会有非常多的记录。

回答

4

这样做的逻辑方法是将事物分开,这是遵循数据库设计的3NF规则。当数据量很大时,这样可以更灵活地检索不同类型的结果。将所有内容放在一张表中绝对是不好的DB练习。

+0

+1 ,保持它们分开,并根据需要加入它们。 – davidethell 2012-07-20 11:36:23

+0

实际上,我几乎总是会得到不同类型的混合,所以查询将始终使用JOIN。在查询中只获取一种类型的数据将非常罕见。尽管如此,我应该创建3个表吗? – Jason 2012-07-20 11:43:06

+0

我忘了提及将会有大约5-6种类型。 – Jason 2012-07-20 11:49:24

1

这取决于您的数据结构。

如果你有1:1的关系,比如说一本书有一个作者,你可以把这些记录放在一行中。如果一本书有多位作者或一位作者有多本书,则应该设置单独的表booksauthors,并将它们与表author_has_books关联起来,您在这两个表中都有外键。这样你将不会存储重复的数据并避免不一致。关于这里分贝正常化

的更多信息:

http://en.wikipedia.org/wiki/Database_normalization

0

他们分开,并创建一个关系。这样,当您开始获取大量数据时,您会注意到性能提升,因为您一次只能调用3个字段(IE仅在看书时)而不是7.

相关问题