我正在开发一个webapplication,其主要功能是向用户呈现一些数据。但是,这些数据有几种类型,每种数据都必须以不同的方式呈现。
例如,我必须列出9个结果 - 3本书,3位作者和3个文件。
Book用(char)TITLE,(text)DESCRIPTION描述。
作者用(char)TITLE,(char)DESCRIPTION描述。
使用(char)URL描述文件。
此外,每种类型都有ID,DATE,VIEWS等字段。 书籍和作者都会看到简单的HTML代码,文件使用嵌入在网站上的外部读者。
我应该构建三个不同的表并在获取这些数据时使用JOIN或构建一个表并将所有类型存储在那里吗?哪种态度更有效?
其他信息 - 会有非常多的记录。
答案 0 :(得分:4)
这样做的逻辑方法是将事物分开,这遵循数据库设计的3NF规则。这样可以在检索不同类型的结果时提供更大的灵活性,特别是在存在大量数据时。将所有内容放在一个表中绝对是糟糕的数据库实践。
答案 1 :(得分:1)
这取决于数据的结构。
如果您有1:1的关系,比如一本书有一位作者,您可以将记录放在一行中。如果一本书有多位作者或一位作者有几本书,您应该设置单独的表books
和authors
,并将这些表与author_has_books
表连接,其中您有两个外键。这样您就不会存储重复数据并避免不一致。
有关db规范化的更多信息,请访问:
答案 2 :(得分:0)
将它们分开并建立关系。这样,当你开始获得大量数据时,你会注意到性能的提升,因为你一次只调用3个字段(当你只看一本书时是IE)而不是7。