如何存储数据,如书籍?

时间:2012-03-05 00:33:41

标签: mysql database blob

在我的数据库中,我有超过1000本书和平均约100页(可能更多或更少)。我在想:

  • 是否可以将每本书存储在一个字段中?像:

    INSERT INTO bookContent VALUE("book contents from first page to end...");
    

其中bookContent将是整本图书内容。

  • 如果将它们存储到MySQL中并不是一个好主意,那么最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

简而言之,是的,但由于大多数类型数据的最大长度,您需要使用二进制数据类型,例如blob,其中max是如此之高,您将永远无法达到它。(最有可能)

您可能必须使用mysql_real_escape_string()之类的函数来转义字符串 处理特殊字符。我正在存储歌词,不得不逃避字符串以防止错误。

in perl $connect->quote("book contents from first page to end..."); 在尝试将值插入表中之前。

我不确定单独插入整本书是明智的。应该至少有一个独特的书籍#字段,所以,如果你愿意,你可以有另一个表,包括作者,标题,出版商等。如果你在表格或其他表格中没有其他字段,你将不会能够轻松查询某些书籍。

你想看所有福尔摩斯的书......这并不容易。数据库运行速度令人难以置信,因为它必须在每本书的内容中搜索“Sherlock Holmes”。

现在,如果你的表有作者,出版商,标题等,那么

select * from book where author="Sir Aurthur Conan Doyle";
select * from book where title="Sherlock Holmes";

这些查询的运行速度比此查询快几个数量级。

SELECT * FROM book WHERE book LIKE '%Sherlock Holmes%';

根据每本书的实际大小(以千克或兆字节为单位),上述查询可能会使您的cpu暂时保持在99%。

参见http://dev.mysql.com/doc/refman/5.6/en/string-type-overview.html 对于数据类型大小。