Как должна быть разработана таблица с двумя наборами почти одинаковых имен столбцов? - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть таблица, которая имеет около 40 столбцов.Единственная разница в именах столбцов состоит в том, что последние 20 начинаются с «B» перед именем столбца.Эта таблица используется для сравнения.Другими словами, сравните данные в первых 20 столбцах с данными в последних 20 столбцах.

Я знаю, что это очень плохой дизайн, так как эту таблицу нужно перепроектировать, чтобы в ней было только 20 столбцов, но мы все равно можем сравнивать данные?мы также используем эти данные, чтобы найти подходящую когорту

Также обратите внимание, что производительность здесь имеет первостепенное значение.Дублируя столбцы, вы получаете данные очень быстро.

Спасибо!

1 Ответ

1 голос
/ 09 декабря 2010

Две возможные архитектуры и подсказка для запроса.

1) Создайте свою таблицу со столбцом «Тип» и используйте его для пометки «основной» и «альтернативный». В вашем случае «А» против «Б» может быть уместным.

2) Создайте вертикальный раздел, две идентичные таблицы (для первичных и альтернативных данных), которые имеют общий первичный ключ. (Если Id = 42 находится в одной таблице, она должна быть в другой - если только «альтернативные» данные не являются обязательными, в этом случае не заполняйте вторую таблицу.) Также, опционально, есть третья таблица, которая отслеживает все возможные первичные ключи, вместе с любыми данными, которые, как известно, всегда являются общими для обеих таблиц.

Совет. Прочтите SELECT ... EXCEPT и SELECT ... INTERSECT. Они работают очень быстро и являются идеальным средством для сравнения всех столбцов и строк между двумя наборами данных на предмет различий (кроме) и совпадений (пересечение). Вы можете использовать это довольно легко с любой из этих двух структур, и это будет работать с вашим существующим кодом (хотя, возможно, будет сложнее написать запрос).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...