【发布时间】:2016-04-07 16:36:56
【问题描述】:
我创建了一个网站,其中有一个博客和一个产品页面。帖子和产品存储在不同的表中。我使用微软的 sql 服务器。
我想创建一个表来存储每个帖子和每个产品的视图。我的 2 种可能的设计是:
-
所有视图的一个表
(id, ref_id, date, ip, type)类型是帖子或产品
-
两个单独的表,表
post_views和表product_viewspost_views(id, post_id, date, ip) product_views(id, product_id, date, ip)
哪种设计更好,为什么?
我的推理:
解决方案 1 需要更多的数据库空间(我们需要存储每个视图的类型值),还需要更“复杂”的查询。我们需要通过 id 和 type 进行搜索。
解决方案 1 更紧凑。我们的桌子较少,但性能不会那么好。如果我们有 100 万条记录,帖子有 50 万次浏览,产品有 50 万次浏览,我们必须搜索所有浏览量以按日期过滤(只是一个例子) 第一种解决方案的优点是紧凑,而且我少用一张桌子。
第二种方案需要多一张表,但查询性能和磁盘空间会更好。
这是我面临的一个非常常见的设计问题,我很想从一位非常好的专家那里得到答案。
【问题讨论】:
-
是post和products在同一个数据库表上还是每个都有自己的表?另外,是MySql还是Sql server?这些是不同的产品...
-
帖子和产品在不同的表上。我用的是微软的 sql server。
标签: sql sql-server database