Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Массивы в Базе данных. [D5, Paradox]


Balkon ©   (2004-04-12 15:52:00) 

Приветствую, Мастера. Создаю приложение и базу(впервые:)), которая должна хранить параметры и результаты неких экспериментов. Некоторые из результатов эксперимента являются численными массивами.

Каждая запись в моей таблице хранит сведения об одном эксперименте. С сохранением параметров простого типа проблем нет. Но вот в полях какого типа можно хранить массивы? Пока что обхожусь заведением отдельного поля соответствующего типа для каждого элемента массива. :) Для тестирования приложения этого хватает. Но для нормального рабочего приложения понимаю, что это не правильно.

Каким образом (в полях какого типа) обычно хранятся массивы действительных/целых чисел в базе данных (Парадокс)?

Спасибо.


Balkon   (2004-04-12 17:35:00) [1]

Спасибо!


Vlad   (2004-04-12 17:34:00) [2]


> Balkon   (12.04.04 17:30) [8]

Достаточно ввести просто ключевое автоинкрементное поле, т.е. сортировка таблицы будет проходить по нему и все элементы массива будут отображаться в том порядке,в к-ром ты их добавлял в таблицу. Т.е. детальная таблица будет иметь вид: (Автоинкрементное_поле, №лабы, значение)


Balkon   (2004-04-12 17:30:00) [3]

Теперь надеюсь, я правильно понял. :)

Еще вопрос, если не утомил.

А как быть с упорядоченностью значений эксперимента? Читал, вроде, что в Парадокс таблице записи упорядочиваюся по значению ключевого поля.
Обеспечит ли введение ключевого(например автоинкрементного типа) поля то, чтобы элементы массива, который сохранен в таблице, сохраняли порядок, при работе с БД? Или для того, чтобы не потерять порядок следования значений ввести еще поле, содержащее номер элемента экспериментального массива?


Vlad   (2004-04-12 17:09:00) [4]


> Balkon   (12.04.04 17:05) [6]

Опять не так.
Есть у тебя главная таблица. Каждая запись - отдельная лаба.
Есть подчиненная таблица, с полями (№ лабы, значение)
Вот и все. Связка таблиц по полю №лабы, таким образом для каждой лаб. работы ты можешь записать сколько угодно значений массива.


Balkon   (2004-04-12 17:05:00) [5]

Спасибо опять. (Массивы используются одномерные)

Получается, что каждой записи из главной таблицы должен соответствовать столбец из детальной?

Т.е. в при добавлении новой записи в мастер-таблицу, я должен создать в детальной новый столбец(поле), назвав его , например,"LabNumber###" в соответствии с номером эксперимента ### из главной таблицы и занести в записи 1..N значения элементов массива(длиной N), добавляя их если нужно. А затем (при просмотре базы данных) при обращении к какойлибо записи из главной таблицы, нужно в детальной найти поле с именем FieldByName('LabNumber###') и с помощью методов First, Next... поочередно, перебрать значения .


Vlad   (2004-04-12 16:34:00) [6]


> Но в таком случае вопрос. Если заранее длина массивов с
> результатами эксперимента не известна и меняется от записи
> к записи, то нужно в RunTime добавлять(удалять, елси из
> таблицы удаляется самая длинная запись) необходимые поля?

Известна или не известна, какая разница, элементы массива (если он одномерный) располагаешь не в виде столбцов, а в виде записей.
Сколько эл-тов массива - столько записей.
Плюс поле с идентификатором для связки с мастер-таблицей.


Johnmen   (2004-04-12 16:33:00) [7]

>длина массивов с результатами эксперимента не известна

В детальной таблице это должно соответствовать количеству записей, а не полей...


Balkon   (2004-04-12 16:30:00) [8]

Спасибо.

>Ты про реляционные БД что нибудь слышал? :) Читаю на досуге книженцию Гофмана, Хомоненко.

>Заведи столько детальных таблиц, сколько срезов результата надо.

Правильно ли я понял?:

Мне нужно, скажем, завести две таблицы и для каждого эксперимента в первой(главной) сохранять основные параметры, а во второй (подчиненной)заведу, кроме ключевого и поля связи, N однообразных ,например действительных, полей для хранения результатов эксперимента (элементов действительного массива).

Но в таком случае вопрос. Если заранее длина массивов с результатами эксперимента не известна и меняется от записи к записи, то нужно в RunTime добавлять(удалять, елси из таблицы удаляется самая длинная запись) необходимые поля?

зы Просьба ногами не пинать и не издеваться :). Добросовестно читаю пару книжек по Делфи, базам данных и пытаюсь разобраться.


Johnmen   (2004-04-12 15:56:00) [9]

1. Заведи столько детальных таблиц, сколько срезов результата надо.
2. Или используй поле типа BLOB


Vlad   (2004-04-12 15:55:00) [10]


> Balkon   (12.04.04 15:52)  

Зачем такой изврат ? Таблица - и есть массив.

> Каким образом (в полях какого типа) обычно хранятся массивы
> действительных/целых чисел

Ты про реляционные БД что нибудь слышал ? Их умные люди придумали чтобы не извращаться с массивами.


Наверх

Титульная страница Поиск, карта сайта Написать письмо