powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Формула
19 сообщений из 19, страница 1 из 1
Формула
    #36700037
zhez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. У меня в каждой записи должна быть формула,т.е.
Наименование Формула
1) Показатель витаминов x/y*100 который x содержит витамины а,б,с. и у не является чем то.
2) Показатель чего то abs(sin(x)/y) который x > чего то, у на 1000 населения

и т.д.
Как организовать структуру таблицы не подскажите?
Может пример неудачный, постарался обяснить как мог. Спасибо.

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Формула
    #36700079
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавлять либо вычисляемые поля, либо вешать триггеры

если оно, только так понял
...
Рейтинг: 0 / 0
Формула
    #36700111
zhez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. это как? У меня будет несколько полей? Не совсем понял.
...
Рейтинг: 0 / 0
Формула
    #36700186
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhezТ.е. это как? У меня будет несколько полей? Не совсем понял.
а как иначе? или я чтото не понял
...
Рейтинг: 0 / 0
Формула
    #36700234
zhez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значит 1 поле -х,2 - знак /, 3 поле -у, 4-поле -> и т.д. Вот это я не могу понять. Можете обяснить примером? Спасибо.
...
Рейтинг: 0 / 0
Формула
    #36700393
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhezЗначит 1 поле -х,2 - знак /, 3 поле -у, 4-поле -> и т.д. Вот это я не могу понять. Можете обяснить примером? Спасибо.
...
Рейтинг: 0 / 0
Формула
    #36701140
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zhezКак организовать структуру таблицы не подскажите?

хранить формулы как текст и вычислять их динамически
...
Рейтинг: 0 / 0
Формула
    #36702240
Edkonst2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhez,

Вы храните результат вычисления по формуле или нет? Если да, то формулы столбца 1 и столбца 2 для каждой записи одни и те же?

Если Вам нужно хранить именно формулу, то делаете строковые поля и в тексте в нужной нотации их храните.
...
Рейтинг: 0 / 0
Формула
    #36703253
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edkonst2008Если Вам нужно хранить именно формулу, то делаете строковые поля и в тексте в нужной нотации их храните.

Как вариант, можно хранить p-code.

Но задача больше смахивает на электронные таблицы, чем на базы данных. Всё таки базы данных хранят данные, а не процедуры. Впрочем, как постановил Фон Нейман, данными может быть и исполняемый код.

По теме, ИМХО, нужно сделать view, в котором вычислять значения функций.
...
Рейтинг: 0 / 0
Формула
    #36704980
zhez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня будет всегда 2 столбца(числитель, знаменатель) с значениями. Но для каждой записи эти значения вычисляются по разной формуле и записываю результат вычисления в другой столбец.
Ребята может я действительно не догоняю, можно пример привести?
...
Рейтинг: 0 / 0
Формула
    #36705506
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Осознай, что в БД вычисление происходит либо перед сохранением записи, либо после её извлечения. Определись, кто, какая процедура создаёт запись. Видимо она, или триггер должн вычислить значение по твоей пресловутой формуле и записать его в поле записи.

так перед сохранением
Код: plaintext
1.
2.
3.
....
    result := формула(a, b);
    insert into tttt ... values (...., a, b, result);
...

или так, после извлечения

Код: plaintext
select формула(a, b) result .... from tttt ...
...
Рейтинг: 0 / 0
Формула
    #36705628
zhez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня вопрос как хранить саму формулу в каком виде? Пользователь сам должен внести формулу и условия и я должен как то положить это в таблицу.
Задача такая:
1-запись надо посчитать сколько процентов девочек в школе. Формула: девочки/все ученики*100, условие только пол=жен
2-запись надо посчитать сколько процентов девочек возраст>15 в школе. Формула: девочки/все ученики*100, условие пол=жен и возраст>15
Пока сам не представляю как это будет, что и как выберет пользователь для ввода формул и т.д.
...
Рейтинг: 0 / 0
Формула
    #36706699
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhez,

а кто вычислять будет эти формулы?
...
Рейтинг: 0 / 0
Формула
    #36706985
zhez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользователь нажимает кнопку расчет и эти формулы будут использоватся в селектах и на экране показываем результат.
...
Рейтинг: 0 / 0
Формула
    #36708130
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhez,

ну впринципе есть языки, которые умеют на лету интерпретировать и вычислять выражения. О какой конкретно СУБД и runtime идёт речь?

Код: plaintext
1.
select expr, c, d into expr, c, d from ....
a = evaluate(expression);

Где expr например, это строка 'c + d'

Как вариант - выгружаем выборку в электронную таблицу, и приложение само расчитает формулы и т.п.
...
Рейтинг: 0 / 0
Формула
    #36708334
zhez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СУБД SQL Server 2005, возможно потом перенесут на Оракл.
...
Рейтинг: 0 / 0
Формула
    #36708669
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhez,
как вариант
сделать в БД функции для расчета
и в интерфейс пользователю, выводить их "тело", то есть алгоритм расчета..
он их там пусть правит, по сохранению выполнять ALTER FUNCTION....
в базе хранить имя функции и перечень параметров...

конечно если это не критично в плане безопасности
и не очень много вариантов расчета
...
Рейтинг: 0 / 0
Формула
    #36708683
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кифирчик, потребуется пользователь с хорошим знанием T-SQL тогда... где ж его такого взять
...
Рейтинг: 0 / 0
Формула
    #36708871
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нельзя ли взять и интегрировать простенький парсер типа такого используя интеграцию .NET .

Еще можно воспользоваться в качестве такого языка JScript.NET или IronPython.

Еще вариант, пользователь редактирует не текст функции а дерево функции (такой графический редактор как на картинке тут ), которое можно хранить в XML или просто набором таблиц.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Формула
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]