我真的只是一个业余爱好者,他的愿望太宏大了,我说,我正在试图找出正确的方式来创建我的数据库,以便数据库更改不需要客户端重构,但也很快。请回复,好像我不太了解典型开发或DBA术语。MySQL数据库设计 - 特定案例,列或附加表格?
这种情况:我试图确定每个用户评价了多少本书。我认为一本书额定如果有任意两个以下的:
-Overall rating (ratings table)
-sub rating (ratings table)
-tag (book_tags table)
-list (book_lists table)
*Related tables: users, tags, lists
问题:我有10个评级和两个总体收视率都在额定值表中,每一列中的(猜测这很糟糕,但不确定)。我是否应该有一个收视表(12行)和一个book_ratings表,其中收视表的每一行都是用户的评分类型?
-e.g. book_ratings: id | user_id | book_id | rating_id
如果有,是什么,如果有50万本书,每本书12种分级类型,10,000个用户,并在该book_ratings表一共有5个十亿行会怎样?这会跑超级慢吗?另一个考虑是我可能希望在将来添加更多的子分级类型,这也是我认为改变它可能很有价值的部分原因,但是这是很多工作,所以我想首先检查。
谢谢!
任何机会,你可以指点我一些关于优化的信息?适合基本的东西?有一天,它真的放慢了速度,直到我在各种查询中使用的所有字段都添加了索引,但即使这样做也像一个在黑暗中漫步的盲人。理想情况下,如果情况良好,我希望拥有20万用户和100万本书籍作为数据库的一部分(管道梦,但嘿:)。如果可能的话,我想知道如何提前计划。 – 2012-04-06 01:56:30
优化这些东西是一种黑色艺术。我不熟悉MySQL,但在SQL Server中,您可以显示查询的“执行计划” - 即服务器执行查询所执行的操作的细节,这对于优化非常有用,对于SQL Server它甚至直接建议应该添加哪些索引。我假设MySQL有类似的东西。 – MiMo 2012-04-06 14:12:21