0

Я хочу создать схему базы данных. У меня есть несколько каналов (Channel_ID VARCHAR) и временные метки, соответствующие времени, когда были произведены измерения для каналов (Timestamp DATETIME).Схема схемы базы данных SQL

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

MEASUREMENTS 
Channel_ID VARCHAR | Timestamp DATETIME | Values ??? 

Как бы я сделать это правильно?

EDIT: количество значений может быть в тысячах.

+0

Каковы «ценности» - Предположительно более 1 значение, если да вы бы создайте строку на индивидуальное значение, указав ее тип через таблицу value_type –

+0

Спасибо за ваш комментарий. Тем временем я понял другое решение. Я мог бы создать вторую таблицу с несколькими столбцами, и каждый столбец в этой таблице имеет уникальный идентификатор измерения (то есть channel_id в сочетании с меткой времени). Каждый из этих столбцов содержит все измеренные значения конкретного измерения. Что ты об этом думаешь? – Ohumeronen

+1

Почти всегда лучше спускаться (строки), чем поперек (столбцы) - насколько это зависит от типов запросов, которые вы хотите запустить - выполнение математики по набору строк тривиально, делая это на * n * столбцах не. Вы, конечно, не хотите иметь дизайн, требующий создания новых столбцов с именами переменных. –

ответ

0

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

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

SELECT * FROM measurements 
WHERE channel_id = 5; 
+0

Спасибо за предложение. Будет ли это решение требовать от меня сохранить фактические значения измерений в виде массивов? Или, если быть более точным: будут ли значения для одного channel_id сохранены в одной отдельной ячейке? – Ohumeronen

+1

Каждое измерение будет отдельным рядом с таблицей измерений.Следуя 1NF, мы хотим, чтобы отдельная ячейка содержала только одну вещь. – Caleb

+1

Ячейка, являющаяся полем в терминологии базы данных. Ниже приведен пример: Строка 1: Идентификатор измерения = 1, Идентификатор канала = 5, измерение = 1000 Строка 2: Идентификатор измерения = 2, Идентификатор канала = 5, измерение = 3000. Извините, я не полностью понимаю измерения и каналы, но я старался максимально точно подойти к моему пониманию. При выполнении команды, аналогичной той, что приведена в приведенном выше ответе, она вернет 2 строки, строку для каждого отдельного измерения, как для канала с идентификатором 5. – Caleb

Смежные вопросы