Любопытную аналогию нам даёт микроэлектроника, где переход на микросервисы (ИС) в 70-е на текущий момент привёл к появлению невообразимых по сложности монолитов CPU/GPU.
1. У вас получается широченная таблица, большая часть которой большую часть времени вообще не нужна
2. Вы обязательно огребаете 100500 проблем из за NULL'able полей (а по-другому нельзя)
3. Рано или поздно вы придёте к ситуации когда полей снова не хватает
4. Имена полей у вас совершенно идиотские и не несут в себе вообще никакой семантики
5. В похожих ситуациях разные разработчики используют разные (по порядку) поля что ещё больше добавляет хаоса
6. Вы не можете вести никакой внятной индексной политики
Я могу и дальше продолжать, но жалко времени. Просто примите как данность (я занимаюсь проектированием БД почти четверть века): никогда так не делайте. Совсем никогда.
Смотрите: если вы храните формы в БД значит, вероятнее всего, при работе они формируются динамически. Любой вменяемый специалист по интерфейсам скажет вам что динамическая генерация UI — это путь в ад.
Но если очень хочется или по-другому никак не получается то, навскидку, есть два основных варианта (в условиях когда форма действительно может быть произвольной): вариация на тему EAV или JSON. В принципе (это к моему изначальному вопросу) вы с этими данными будете делать ровно две вещи: класть их в БД (целиком для одной формы) и читать их оттуда (ровно так же — целиком для одной формы). Поэтому на сегодняшний день я бы, пожалуй, смотрел в сторону JSON'а.
Для начала нужно разобраться что вы понимаете под «видами» измерений: показания из разных источников (датчиков в исходном примере) или показания разных типов (время, целое число, число с плавающей запятой, текст и т.п.).
Общая идея крайне проста — обобщать и разделять :) В случае условий в начале статьи (несколько датчиков опрашиваются одновременно с заданной периодичностью) у вас получается одна таблица, в которой у вас описаны ваши датчики (тип, название, время фактического существования, возможно ещё что-то), вторая таблица — измерения (собственно моменты времени, на которые вы получаете показатели) и третья, ссылающаяся на первые две, в которой будут лежать значения полученные с соответствующего датчика в указанный момент времени.
В первой таблице — по одной записи на каждый датчик.
Во второй таблице — по одной записи на каждый факт снятия показаний.
В третьей таблице — по несколько записей на каждый факт снятия показаний (в зависимости от того, с какого количества датчиков снимались данные).
Я прошу прощения, а сделать вариант не с одной таблицей (в которой пытаться хранить вообще всё на свете), а, скажем, с тремя (Типы датчиков, Измерения, Значения) — не позволила религия или отсутствие достаточной квалификации в проектировании БД? Или тогда бы статьи не получилось и было бы скучно и просто?
Хотя бы тем, что деньги — не конечная цель, а всего лишь промежуточный этап и сами по себе не несут вообще никакой ценности.
Впрочем я уже начал жалеть что ввязался в эту дискуссию. Выглядит так, будто я кого-то пытаюсь убедить в том, что идея работать 24 часа в сутки для того чтобы заработать 100500 денег — как минимум убогая. На самом деле мне наплевать. Если кто-то хочет убиваться ради того, что считает ценным — это его право (даже если я считаю это нелепым).
Я просто не сразу понял что сейчас вы «занимаетесь ерундой за миску с похлебкой». Сочувствую. Но если это так, то даже если вы будете работать 25 часов в сутки (и для этого вставать на час раньше) вы не заработаете 50 млрд.
«Совершенно несомненно» это о том, что в нём содержится несомненная истина.
По поводу «могут не только лишь все» — это парафраз одного довольно известного мыслителя современности. Для него русский язык действительно не совсем родной.
Моё высказывание совершенно несомненно. Но да, в системное и абстрактное мышление могут не только лишь все. Поэтому кому-то требуется проверять все варианты.
Это прекрасно если у вас уже есть мешок с деньгами (кстати вовсе не для всего он нужен). Но вы, судя по всему, собрались его заработать.
— Устроился на вторую работу, денег стало гораздо больше
— Что, прилично платят?
— Нет, но тратить стало совершенно некогда!
Сентенцию про «мир во всём мире» я не очень понял. Вы настолько могущественны, что в состоянии обеспечить такое? Тогда зачем вам вообще деньги?!
— Вырастить троих детей
— Посадить 100000 деревьев
— Переплыть океан
— Объехать всю Европу
— Построить школу в деревне
— Увидеть восход солнца высоко в горах и закат в открытом море
Достаточно?
Я мог бы, навскидку, накидать вам несколько десятков причин, но вы, похоже, все их посчитаете ничтожными по сравнению с горой долларов (или любых других денежных знаков по вкусу), которые можно будет навалить на вашу могилу.
2. Вы обязательно огребаете 100500 проблем из за NULL'able полей (а по-другому нельзя)
3. Рано или поздно вы придёте к ситуации когда полей снова не хватает
4. Имена полей у вас совершенно идиотские и не несут в себе вообще никакой семантики
5. В похожих ситуациях разные разработчики используют разные (по порядку) поля что ещё больше добавляет хаоса
6. Вы не можете вести никакой внятной индексной политики
Я могу и дальше продолжать, но жалко времени. Просто примите как данность (я занимаюсь проектированием БД почти четверть века): никогда так не делайте. Совсем никогда.
Конечно. Они дают реальные эмоции, впечатление и смысл в жизни.
А насчёт умирать — умирают, рано или поздно, все: бедные, богатые, нищие духом и святые.
Но если очень хочется или по-другому никак не получается то, навскидку, есть два основных варианта (в условиях когда форма действительно может быть произвольной): вариация на тему EAV или JSON. В принципе (это к моему изначальному вопросу) вы с этими данными будете делать ровно две вещи: класть их в БД (целиком для одной формы) и читать их оттуда (ровно так же — целиком для одной формы). Поэтому на сегодняшний день я бы, пожалуй, смотрел в сторону JSON'а.
Общая идея крайне проста — обобщать и разделять :) В случае условий в начале статьи (несколько датчиков опрашиваются одновременно с заданной периодичностью) у вас получается одна таблица, в которой у вас описаны ваши датчики (тип, название, время фактического существования, возможно ещё что-то), вторая таблица — измерения (собственно моменты времени, на которые вы получаете показатели) и третья, ссылающаяся на первые две, в которой будут лежать значения полученные с соответствующего датчика в указанный момент времени.
В первой таблице — по одной записи на каждый датчик.
Во второй таблице — по одной записи на каждый факт снятия показаний.
В третьей таблице — по несколько записей на каждый факт снятия показаний (в зависимости от того, с какого количества датчиков снимались данные).
Примерно так (дальше уже можно накручивать).
Впрочем я уже начал жалеть что ввязался в эту дискуссию. Выглядит так, будто я кого-то пытаюсь убедить в том, что идея работать 24 часа в сутки для того чтобы заработать 100500 денег — как минимум убогая. На самом деле мне наплевать. Если кто-то хочет убиваться ради того, что считает ценным — это его право (даже если я считаю это нелепым).
По поводу «могут не только лишь все» — это парафраз одного довольно известного мыслителя современности. Для него русский язык действительно не совсем родной.
Не благодарите.
— Устроился на вторую работу, денег стало гораздо больше
— Что, прилично платят?
— Нет, но тратить стало совершенно некогда!
Сентенцию про «мир во всём мире» я не очень понял. Вы настолько могущественны, что в состоянии обеспечить такое? Тогда зачем вам вообще деньги?!
— Посадить 100000 деревьев
— Переплыть океан
— Объехать всю Европу
— Построить школу в деревне
— Увидеть восход солнца высоко в горах и закат в открытом море
Достаточно?