【发布时间】:2012-06-05 04:03:11
【问题描述】:
如果有人能告诉我解决这个问题的正确方法,我将不胜感激:
- 我有一个父表,主键为
master_id。 - 我有五个与 master_id 关联的子表,它们是一对一的关系,它们记录语义上不同类型的数据(并且不适合抽象)
- 每个子表中唯一的公共字段是
master-id(外键)、created_by(用户ID)、created_time(时间戳)。
目的是在网页上按时间顺序发布与主 ID 相关联的每个子行(想象一个论坛帖子样式显示),PHP 构建每个“帖子”(即行)略有不同,具体取决于子表(以及因此可用的数据字段)。
我是否认为无论表结构如何都没有简单的方法来查询它(并且最好在 PHP 中完成排序)?将 3 个公共字段垂直分区到单个表中并结合 table 字段有什么优势吗?
【问题讨论】:
-
视图会做你需要它做的事情吗?我遇到了类似的情况,发现与其尝试对数据本身进行规范化,不如通过视图将其编译成我想要的格式,并保持一切原样。
-
您可以使用
UNION子查询,在父查询中对组合结果进行排序。您可能必须在每个查询中插入额外的列,以便结果集对齐。请参阅this answer 了解更多信息。 -
@eggyal 我读了你的其他答案,谢谢。我最终决定反对它,因为 1. 如果添加更多子表,每个选择结果中的空列将变得越来越难以维护,并且 2. 每个表都需要查询,这是性能开销
标签: mysql database database-design