Редактировать: извините за путаницу. Только что получил одобрение от моего босса, чтобы опубликовать эту часть схемы. У меня было бы больше деталей в исходном сообщении, если бы мне разрешили опубликовать изображение.
У меня есть схема конфигурации, которая выглядит следующим образом:
http://img717.imageshack.us/img717/7297/heirarchy.png
Каждый из уровней содержится в уровне ниже его (т. Е. У партнера есть несколько программ), и каждый уровень конфигурации имеет общие ключи конфигурации с другими типами уровней конфигурации (т. Е. - часовой пояс по умолчанию может быть установлен у партнера уровень, а затем будет переопределен на уровне программы, портфолио или устройства).
То, что это позволяет нам сделать, - это установить тип объекта по умолчанию, а затем переопределить его с помощью более конкретных таксономий. Например:
Скажем, у меня есть партнерский объект, который является компанией. Скажем, что имя_Интерфейса_конфигурации 1 - часовой пояс по умолчанию. Я поместил partner_configuration, который говорит, что чаще всего этот партнер будет находиться на восточном побережье (время по Нью-Йорку).
Теперь у меня есть несколько программ, которые поддерживает этот партнер. Скажите, что конкретная программа основана за пределами Калифорнии. Я поместил program_configuration, который говорит, что устройства в этой программе имеют время Сакраменто.
Теперь давайте пропустим портфолио и скажем, что кто-то, подписавшийся на эту программу из Калифорнии, переезжает в Денвер, но все еще остается его клиентом. Мы установили конфигурацию Устройства, которая говорит, что они сейчас в Маунтин-Вью.
Иерархия выглядит так:
Level |Timezone (hierarchy_configuration_key 1)
---------------------------------------------------
Partner |NYC
Program |Sacramento
Portfolio |null (defaults to most granular above it, so Sacramento)
Device |Denver
Теперь я хочу выбрать мои конфигурации, сгруппированные по иерархии_конфигурации_key_id:
Я могу использовать внутренние объединения для обхода уровней, но я хочу, чтобы выборка давала мне такой результат (сгруппированный по иерархии_конфигурации_key_id) для первичного ключа устройства (device_id):
device_id |portfolio_id |program_id |partner_id |device_config |portfolio_config |program_config| partner_config
---------------------------------------------------------------------------------------------------------------------
1 |2 |1 |35 |Denver |null |Sacramento | NYC
Также приемлемым будет выбор, который только что дал мне наиболее подходящее значение конфигурации, т. Е .:
device_id |portfolio_id |program_id |partner_id |config_value
-------------------------------------------------------------
1 |2 |1 |35 |Denver
Заранее спасибо. Дайте мне знать, если вам нужно больше разъяснений.