Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: А как в базах данных хранят формулы?  (Прочитано 14476 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« : 25-02-2004 11:58 » 

Здравствуйте, уважаемые!

Собственно вот такой вопрос.
как мне в базе хранить Al2O3 с цифрами внизу или изотопы с цифрами вверху?
Или надо обработчик при вводе и выводе писать?

Спасибо.
Записан

Кто выпил весь кофе!
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 25-02-2004 13:36 » 

вариантов несколько.

1. обработка на стороне клиента. т.е. разрабатывается некий собственный формат, или алгоритм, преобразующий твой формат к одному из форматов БД. при чтении/вставке текст прогоняется через сей алгоритм и выводится/записывается уже конечный результат. Обработка на стороне серевера ничего не даст, т.к. он понятие не имеет о твоём выходном формате, следовательно и данные представить в этом формате не сможет. их по-любому придётся потом преобразовывать.

2. брать свой формат, как есть и целиком засовывать в базу. например, У тебя есть RTF-текст. в базе заводим текстовое или BLOB-поле, и весь rtf пишем в него. при необходимости - читаем. а расшифровывать эту абракадабру будет то, что выводит её на экран, например, Wicrosoft Word. если ты формулу или изотопы пишешь в своей программе, то у тебя уже есть какой-то формат, в котором она хранится. вот возьми этот кусок памяти и побайтово загони в blob-поле. вот и всё. также и прочитаешь.
Записан

Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 26-02-2004 05:53 » 

x77, понятно, спасибо за информацию.
По всем расчетам получается первый вариант - обработка на стороне клиента, а хранить их буду просто как строку. Я просмотрел большое количество вариантов - получается, что в формуле индекс идет после обозначения элемента, а у изотопов - перед обозначением элемента - так их вроде можно различить. Насколько я понимаю, в ближаешие 50-100 лет их правила написания не должны поменяться.
Если использовать второй вариант, получается, что при поиске по BLOB-полю, мне прейдется искомую информацию переводить в RTF и искать ее побайтово, мне кажется тут возможен источник ошибок (информация не будет правильно находиться), ведь я не могу гарантировать, что Word ее запишет так, как я ее ищу (и наоборот).
Записан

Кто выпил весь кофе!
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 26-02-2004 07:20 » 

Ilia, я бы тоже хранил, как строку в каком-то собственном внутреннем формате. например, таком:

заголовок:
  <FRM>|<ISO>

тело:
  (<CHAR>[NUM]) | ([NUM]<CHAR>) // в зависимости от заголовка

конец:
  </FRM></ISO>

преобразовывать туда обратно - достаточно просто, выводить на экран - тоже. кстати для вывода можно использовать тот же Internet Explorer. встроить его в собственную прогу и через IDocument интерфейс скармливать ему виртуальный html-документ, формируемый на основе собственного формата. Любой сопровождающей текст, рисунки, также будут встраиваться достаточно легко.

з.ы.
  насколько я помню, в хтмл можно задать размер буквы и выравнивание её по строке, т.е. что-то типа индексов.
Записан

Fireworm
Гость
« Ответ #4 : 26-02-2004 07:45 » 

Или можно хранить в XML формате. Тем более что есть какой-то namespace для работы с химическими формулами.
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #5 : 26-02-2004 08:08 » 

Fireworm, стыдно признаться, но вот до чего у меня руки так и не дошли, это до XML. хотелось, но... вечные запарки, млин. Жаль
Записан

Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 26-02-2004 08:09 » 

x77, Fireworm, решился - делаю строковое поле и вперед.
В Html вообще просто: это будет изотоп <sup>234</sup>U, а это формула Al<sub>2</sub>O<sub>3</sub>.
В XML - namespace наверное действительно должен быть для формул, дома есть книжка, посмотрю вечером.
А выводиться все это у меня в файл, который потом Word открывает, на экран формулы даже выводить не надо, так что задача эта - повышенной легкости  Улыбаюсь .
Записан

Кто выпил весь кофе!
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #7 : 26-02-2004 08:38 » 

Ilia, если у тебя ворд всё открывает, то просто бери вордовский файл и пиши его в блоб поле. из блоба будешь сохранять на диск и открывать вордом. там вообще ничего делать не придётся. поиск по документу прикрутишь через COM. тебе его по-любому прикручивать, т.к. выводя файл в ворде ты не сможешь никак иначе отслеживать в нём изменения. делай блоб и не сомневайся. связываться с собственным форматом есть смысл только в том случае, если у тебя и движок отрисовки свой. а если используется стандартный - какие могут быть вопросы? Улыбаюсь
Записан

Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 26-02-2004 09:21 » 

x77,
Word у меня открывает только отчетный документ - взамен Crystal Report.
Для отчета программа уже по найденному делает файл rtf сама специально, чтобы особо не нагружать слабенькие клиентские машины - через COM получается очень медленно. Естественно в файл отчета собирается информация разного характера и иногда в отчет включается до 10000 записей.
Перед формированием отчета пользователь на экране видит приличную часть информации, но формул там нет, они появляются только в файле отчета, поэтому особых забот для вывода формул на экран нет.
Строки с формулами встречается в отчете редко и только из-за них наверное нет особого смысла напрягать Word для поиска, т.к. все остальное - стандартные строки, даты и числа - их без проблем и очень быстро ищет сервер базы данных. А если пользователь захочет найти формулу, он ее будет брать из справочника, где по идее должна находиться формула уже в моем формате.
Просто я когда задавал вопрос, думал, а вдруг существуют какие-то хитрые типы данных в базах, которые позволяют содержать форматирование, применимое для формул.  Все таки мне кажется вариант со строкой, в которую будет записана формула в своем формате (или html/xml) неплохое решение Улыбаюсь .
Записан

Кто выпил весь кофе!
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #9 : 26-02-2004 09:26 » new

Ilia, если так, то, видимо, да Улыбаюсь
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines