Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Свойство объекта - список, как запроектировать?


Автор: Nickolaz 22.6.2016, 13:45
Доброго времени суток.

Столкнулся с тем, что не могу представить как спроектировать реляционную модель представления данных для класса. 

В программе имеется класс, например тако, для простоты объяснения:
Код

public class Measurement {
    private int ID;
    private int DESCRIPTION;
    private int STARTDATE;
    private int PERIOD;
    private List<Float> mFirstArray;
    private List<Float> mSecondArray;
}

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

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

    int ID;
    int DESCRIPTION;
    int STARTDATE;
    int PERIOD;
    int mFirstArray; (FK)
    int mSecondArray; (FK)

Но как описать список? Если сделать его внешним ключом, тогда сущности firstArray и mSecondArray со свойствами:
Код

ID
VALUE1
VALUE2
...
кол-во "точек"

При такой реализации в таблице firstArray по строкам хранились-бы все массивы данных и мы ссылались-бы на них из основной таблицы.
Но кол-во точек не известно заранее и сделать такую таблицу не получится, но как по другому, не понимаю, подскажите пожалуйста

Типа данных - массив в СУБД нет, есть только varchar и-то который нужно ограничивать размером байт или символов.

Подскажте пожалуйста, как реализуется хранение свойства класса типа список в реляционной модели данных?

Автор: Akina 22.6.2016, 17:04
Это у тебя в программе они - списки. А с точки зрения SQL-сервера это тупо множественный атрибут. И нормализуется он так же тупо дополнительной таблицей, где хранится ссылка на экземпляр сущности и значение экземпляра атрибута. Ежели сильно надо - то ещё и порядковый номер этого экземпляра (впрочем, если порядок имеет значение, и действия с данными выходят за рамки SELECT, то это уже дерево, и подход к хранению соответствующий).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)