如果有人能告诉我如何正确地处理这个问题,我将不胜感激:
master_id的父表。master-id (外键)、created_by (user_id)、created_time (时间戳)。其目的是按时间顺序在网页上发布与主id关联的每个子行(想象一个论坛帖子样式显示),PHP构建每个"post“(即行)的方式略有不同,取决于子表(以及可用的数据字段)。
我是否正确地认为,无论表结构如何(排序最好在PHP中完成),都没有简单的方法来查询这个问题吗?垂直地将3个公共字段划分成一个与table字段相结合的表有什么好处吗?
发布于 2012-05-30 22:32:57
这是一个很难解决的问题,这是我自己做过的。不幸的是,我没有一个好的答案。您可以使用联合和各种类型的连接,但是您可能会严重影响数据库的性能。另外,你还会遇到这样的问题,比如说,你想要最新的30个年表条目。您必须查询每个子表中的30个条目(总共可能有150个条目),并在代码中对它们进行排序,因为您不知道哪个子表有最新的30个条目。150排就可以拉30下了。
老实说,我发现实现这样一件事的最好方法是有一个表,可能是你的主表,有专门的列来显示您想从子表中显示的内容。例如,在您的主表中有类似于master_id、created_by、created_time和notification_text的列(例如,如果您试图实现类似Facebook的时间线)。您可以在子表上设置触发器,以便在将数据插入其中一个表时,它也会自动填充主表中的数据。然后,当您显示时间线时,您只需查询主表,而完全不需要处理子表。
您的模式将类似于:
Table master
- master_id
- created_by
- created_time
- notification_text
Table child1
- id
- master_id
- data1 (used to generate notification_text in master)
Table child2
- id
- master_id
- data21 (collectively used to generate notification_text in master)
- data22 (collectively used to generate notification_text in master)
- data23 (collectively used to generate notification_text in master)
...发布于 2012-05-30 21:28:32
你做明星模特怎么样?它通常用于创建数据仓库,但是您可以尝试在解决方案中使用类似的东西。如果您不熟悉星型模型,您可以看到更多的这里。
希望能帮上忙。
https://stackoverflow.com/questions/10824428
复制相似问题