
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
25.04.2014, 00:24
|
|||
|---|---|---|---|
|
|||
Проектирование БД для последующего статистического анализа |
|||
|
#18+
Подскажите как лучше организовать БД смысл такой: есть химические элементы(ХЭ), из них можно сделать композицию(К) (кол-во ХМ в К может быть любое, как и их концентрация); эту композицию применяют для некоторого процесса - выходные характеристики процесса должны находится в таблице экспериментальных данных(ЭД). Для статистического анализа нужно будет искать опыты в таблице ЭД по композиции(К), при этом концентрация ХЭ не важна, главное чтобы в композиции были только выбранные ХЭ. сейчас схема выглядит так, как в прикрепленной фотке, но это неудобно для поиска. Возможно у кого-то есть идеи как лучше организовать эту часть базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.04.2014, 07:49
|
|||
|---|---|---|---|
|
|||
Проектирование БД для последующего статистического анализа |
|||
|
#18+
zhuПодскажите как лучше организовать БД смысл такой: есть химические элементы(ХЭ), из них можно сделать композицию(К) (кол-во ХМ в К может быть любое, как и их концентрация); эту композицию применяют для некоторого процесса - выходные характеристики процесса должны находится в таблице экспериментальных данных(ЭД). Для статистического анализа нужно будет искать опыты в таблице ЭД по композиции(К), при этом концентрация ХЭ не важна, главное чтобы в композиции были только выбранные ХЭ. сейчас схема выглядит так, как в прикрепленной фотке, но это неудобно для поиска. Возможно у кого-то есть идеи как лучше организовать эту часть базы. Почитайте про OLAP кубы. Есть инструменты как платные, так и бесплатные, которые по исходным данным могут построить OLAP-куб в нужном разрезе. А так, в первом приближении, спроектировано нормально. Просто то, что вы просите это не относиться к OLTP, т.е. к хранению данных, а относиться к аналитике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.04.2014, 11:26
|
|||
|---|---|---|---|
Проектирование БД для последующего статистического анализа |
|||
|
#18+
zhu, Что значит - неудобно? Медленно? "только выбранные ХЭ" означает, что других ХЭ в К быть не должно? Приведите пример запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.04.2014, 15:59
|
|||
|---|---|---|---|
|
|||
Проектирование БД для последующего статистического анализа |
|||
|
#18+
DirksDR, автор"только выбранные ХЭ" означает, что других ХЭ в К быть не должно? да неудобство в том что нужно делать очень много подзапросов это лишь кусочек БД и на самом деле в таблицу с ЭД тянутся еще 2 ветки с такой структурой( ХЭ-СК-К---ЭД) задача: найти эксперименты кислород + водород и концентрации этих ХЭ. и представить их в виде удобном для анализа. хотелось бы чтобы в результат возвращалась такая таблица: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.04.2014, 18:09
|
|||
|---|---|---|---|
|
|||
Проектирование БД для последующего статистического анализа |
|||
|
#18+
DirksDR, мой запрос выглядит так //с-концентрация select id,b.с1,b.с2, v from (select id_k, sum(if(id_XЭ=1,с,null)) AS с1, sum(if(id_XЭ=2,с,null)) AS с2 from СК where id_k in (select id_k from СК where id_k in ( select id_k from СК where id_XЭ in ( 1)) and id_k in ( select id_k from СК where id_XЭ in ( 2)) and id_k not in ( select id_k from СК where id_XЭ not in ( 1,2))) group by id_k) as b, ед where ед.id_k=b.id_k ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.04.2014, 10:10
|
|||
|---|---|---|---|
Проектирование БД для последующего статистического анализа |
|||
|
#18+
zhu, 1. Я бы немного схему подшаманил (хотя это не принципиально и не обязательно) в части таблицы состав композиции. 2. Если эксперимент - это только одна композиция, то таблица композиция не нужна - она нужна только в том случае, если эксперимент состоит из несольких композиций... 3. Запрос будет примерно таким: PARAMETERS l1 Long; SELECT ЭД.[выходной параметр], ЭД.id_K, ХЭ.name, [состав композиции].Концентрация FROM ХЭ INNER JOIN ((K INNER JOIN [состав композиции] ON K.id = [состав композиции].id_k) INNER JOIN ЭД ON K.id = ЭД.id_K) ON ХЭ.id = [состав композиции].id_ХЭ WHERE (((ЭД.id_K)=[l1])); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.04.2014, 10:17
|
|||
|---|---|---|---|
Проектирование БД для последующего статистического анализа |
|||
|
#18+
zhu, То что нарисовано выше, можете скачать и посмотреть если у вас стоит офис 2000 или выше в этом варианте рабочий запрос - смотрите (Запрос1), на запрос параметра ответьте - 1 (там для примера одна композиция) этот вариант предполагает что в одном эксперименте может быть более одной композиции, иначе таблица композиция не нужна... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.04.2014, 03:52
|
|||
|---|---|---|---|
|
|||
Проектирование БД для последующего статистического анализа |
|||
|
#18+
vmag, эксперимент - это одна композиция; таблица композиция лишь для того чтобы не отслеживать номер последней добавленной композиции(при добавлении композиции поле k.id-автоинкримент); ваш запрос выводит комбинации: v1 | ХЭ1 | c1 v1 | ХЭ2 | c2 мне для анализа нужно чтобы все что касается одного эксперимента было выведено в строку: v1 | ХЭ1 | c1 | ХЭ2 | c2 поэтому без преобразования столбцов в строку (select id_k, sum(if(id_XЭ=1,с,null)) AS с1, sum(if(id_XЭ=2,с,null)) AS с2) не обойтись; или парсить массив уже в приложении - что не очень хочется. возможно есть способ оптимизировать запрос поиска нужных композиций: //нужно отобрать все композиции которые содержат одновременно только id_ХЭ=1 и id_ХЭ=2 (select id_k from СК where id_k in ( select id_k from СК where id_XЭ in ( 1)) and id_k in ( select id_k from СК where id_XЭ in ( 2)) and id_k not in ( select id_k from СК where id_XЭ not in ( 1,2))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.04.2014, 10:11
|
|||
|---|---|---|---|
Проектирование БД для последующего статистического анализа |
|||
|
#18+
zhu, Вы просто подошли к тому моменту, когда дальше над таблицами и схемой данных кружить мало эффективно, пора уже переходить к созданию приложения: Делать формы и отчеты... Но кое что еще выжать можно если в нужные таблицы добавить логические поля Да/Нет для выбора: 1. zhuмне для анализа нужно чтобы все что касается одного эксперимента было выведено в строку: v1 | ХЭ1 | c1 | ХЭ2 | c2 Этот кусок проще сделать в функции, которая читает (перебор) все записи в запросе с условием выборки (чек боксы установлены в Да) и собирает значения в текстовую переменную, которую потом и возвращает. 2. zhuвозможно есть способ оптимизировать запрос поиска нужных композиций: //нужно отобрать все композиции которые содержат одновременно только id_ХЭ=1 и id_ХЭ=2 Решается таким же способом, отбираются те из ХЭ у которых проставили предварительно Да... На самом деле за счет доп. полей выбора размер базы немного увеличится, но упростятся рабочие запросы в которых по большому счету будет только одно условие выборки - выбирать помеченное... А общий алгоритм будет таким: 1. Снять выбор со всех. 2. Пометить нужное. 3. Отобрать помеченное. Итак в цикле... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2014, 15:00
|
|||
|---|---|---|---|
Проектирование БД для последующего статистического анализа |
|||
|
#18+
zhuвозможно есть способ оптимизировать запрос поиска нужных композиций: //нужно отобрать все композиции которые содержат одновременно только id_ХЭ=1 и id_ХЭ=2 (select id_k from СК where id_k in ( select id_k from СК where id_XЭ in ( 1)) and id_k in ( select id_k from СК where id_XЭ in ( 2)) and id_k not in ( select id_k from СК where id_XЭ not in ( 1,2))) прповерить не на чем, но идея такая Код: sql 1. 2. 3. работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2014, 15:58
|
|||
|---|---|---|---|
|
|||
Проектирование БД для последующего статистического анализа |
|||
|
#18+
DirksDR, не смогла поправить ваш запрос - MySQL на синтаксис ругается... но идея как я понимаю в том чтобы: выбрать все композиции с 2-мя ХЭ, а потом по ним искать нужную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.04.2014, 11:08
|
|||
|---|---|---|---|
Проектирование БД для последующего статистического анализа |
|||
|
#18+
zhu, Код: sql 1. 2. 3. 4. 5. 6. 7. а так? я не работаю с MySQL и не знаю его диалекта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=32&tablet=1&tid=1540902]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 364ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...