许多类型的数据 - 一个表与多个表

时间:2012-07-20 11:28:42

标签: php mysql sql database

我正在开发一个webapplication,其主要功能是向用户呈现一些数据。但是,这些数据有几种类型,每种数据都必须以不同的方式呈现。

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

Book用(char)TITLE,(text)DESCRIPTION描述。

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

使用(char)URL描述文件。

此外,每种类型都有ID,DATE,VIEWS等字段。 书籍和作者都会看到简单的HTML代码,文件使用嵌入在网站上的外部读者。

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

其他信息 - 会有非常多的记录。

3 个答案:

答案 0 :(得分:4)

这样做的逻辑方法是将事物分开,这遵循数据库设计的3NF规则。这样可以在检索不同类型的结果时提供更大的灵活性,特别是在存在大量数据时。将所有内容放在一个表中绝对是糟糕的数据库实践。

答案 1 :(得分:1)

这取决于数据的结构。

如果您有1:1的关系,比如一本书有一位作者,您可以将记录放在一行中。如果一本书有多位作者或一位作者有几本书,您应该设置单独的表booksauthors,并将这些表与author_has_books表连接,其中您有两个外键。这样您就不会存储重复数据并避免不一致。

有关db规范化的更多信息,请访问:

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

答案 2 :(得分:0)

将它们分开并建立关系。这样,当你开始获得大量数据时,你会注意到性能的提升,因为你一次只调用3个字段(当你只看一本书时是IE)而不是7。