Я был бы признателен, если кто-то может мне посоветовать, что правильный способ подойти к этому:Как создать несколько дочерних таблиц с одной родительской таблицей?
- У меня есть родительская таблица с первичным ключом
master_id
. - У меня есть пять дочерних таблиц, связанных с master_id, в отношении 1-к-n, которые записывают семантически разные типы данных (и не поддаются абстракции)
- Единственные общие поля в каждой дочерней таблице
master-id
(внешний ключ),created_by
(user_id),created_time
(временная метка).
Цель состоит в том, чтобы опубликовать каждую дочернюю строку, связанную с идентификатором мастера, в хронологическом порядке на веб-странице (представьте себе стиль отображения сообщений в форуме), при этом PHP-здание каждого «сообщения» (то есть строки) несколько отличается в зависимости от на дочерний стол (и, следовательно, поля данных, доступных ему).
Я прав, думая, что нет простого способа запросить это независимо от структуры таблицы (и это упорядочение было бы лучше всего сделано в PHP)? Есть ли преимущество в вертикальном разбиении трех общих полей на одну таблицу в сочетании с полем table
?
бы вид сделать то, что вам нужно это делать? Я столкнулся с подобной ситуацией и обнаружил, что вместо того, чтобы пытаться нормализовать данные, я мог бы скомпилировать ее в формат, который мне нужен, и оставить все как есть. – SPFiredrake
Вы можете сделать это, используя подзапрос 'UNION', заказывая комбинированные результаты в родительском запросе. Возможно, вам придется вставлять дополнительные столбцы в каждый запрос, чтобы результаты были выровнены. См. [Этот ответ] (http://stackoverflow.com/a/10324939/623041) для получения дополнительной информации. – eggyal
@eggyal Я прочитал ваш другой ответ, спасибо. В конце концов я решил не возражать, потому что 1.если дополнительные дочерние таблицы когда-либо добавляются, нулевые столбцы в каждом выбранном resulstet будут становиться все более трудоемкими для поддержания, и 2. для каждой таблицы потребуется запрос, который является служебной нагрузкой – videocakes