|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как правильно создать таблицы?
Здравствуйте!Подскажите как правильно создать таблицы для хранения данных? У меня есть имя варианта расчета, исходные данные ,расчет и результат расчета. Я хотел сохранить в таблицах имя, исходные данные и результат расчета. Имя это уникальное текстовое или цифровое значение. Исходные данные это набор числовых данных (статический) . А выходные данные это данные в виде таблицы (статической) 6x10. Т. е все исходные и результирующие привязаны к имени варианта расчета. Т. е каждому варианту расчета соответствует свой набор исходных и результирующих данных.
Я сделал в первом приближении,но не понятно как правильно. Таблицы paradox. |
#2
|
|||
|
|||
Ну, я бы сказал, что это вообще плохая идея - сохранять подобные данные в БД. По умолчанию, порядо строк в возвращаемом результате при запросе данных из БД не регламентирован. Т.е. придется делать дополнительные телодвижения что бы гарантированно получить строки в нужном порядке. Да и кол-во колонок в таблице не динамическое.
Отсюда получается, что один вариант надо хранить в одной строке, в одной ячейке в сериализованном виде. Ну а т.к. у тебя все соотношения 1-к-1, то достаточно одной таблицы для этого: Код:
create table dataTable ( ID AUTOINC PRIMARY KEY, NAME VARCHAR(100), SRC_DATA BLOB, RES_DATA BLOB ); PS. А вообще, коли все-равно надо делать сериализацию/десериализацию, то необходимости тянуть за собой БД я особой не вижу. Проще написать свой маленький классик и хранить все в файле/файлах - хочешь, можешь сделать все варианты в одном файле, хочешь - каждый вариант в своем файле. |
#3
|
|||
|
|||
Я создал табл 1 c проектами с полями id и nameproj , таблицу 2 с исходными данными с полями id A,D,C и т.д (поля с данными которые попадают из edit). Если первая связана со второй, т. е при занесении записи (имени проекта) в первую таблицу автоматически через id заполняются поля таблицы 2. Не ясно как как связать таблицу с результатами с таблицей 1, т. е что бы было понятно какой результат расчета какому проекту принадлежит.
Последний раз редактировалось Maks19, 20.06.2019 в 18:28. |
#4
|
|||
|
|||
Надо добавить еще одно поле:
Код:
PROJECT_ID INTEGER REFERENCE Таблица1.ID, |
#5
|
|||
|
|||
Добавить поле в таблицу 1 и связать с id таблицы 3? Т. е табл 1 главная,а 3 подчиненная?
Т. к результат массив из 6 столбцов и 10 строк то как представить их в таблице 3? В конечном счете мне нужно сохранить в таблице массив значений A[i], В[i],C[i], и т. д где i=0,..6 |
#6
|
|||
|
|||
Прочти же, юный падаван, мой первый комментарий!
Особенно замечание по поводу порядка строк при выборке данных из таблицы. А так, да. Таблица 1 является главной. Соответвенно многие строки из подчиненной таблицы могут ссылаться на одну строку главной. |
#7
|
|||
|
|||
Цитата:
|
#8
|
|||
|
|||
Это значит, что, например, при наличии 2х строк для выборки, один раз ты получишь из в порядке 1-2, а следующий раз - в порядке 2-1. Т.е. для того, что бы всегда получать их в нужном тебе порядке, тебе придется совершать дополнительные телодвижения.
Сериализация - это превращение объекта в одно значение с возможностью последующей десериализации, т.е. восстановление исходного объекта. В твоем случае объект - это массив 6х10 (для выходных данных). В этом случае это значение (очень длинное, к слову) можно сохранить в одно поле одной записи. |
#9
|
|||
|
|||
А нельзя сделать, чтобы в записях хранилось через интервал 6 строк результат вычислений? Т. е одному проекту соответствует 6 строк, второму 6 строк и т. д?
А какие дополнительные "телодвижения" ? |
#10
|
|||
|
|||
все можно сделать. вопрос только в том, нужно ли.
Я вообще не понимаю зачем тебе БД в этом случае... |
#11
|
|||
|
|||
Цитата:
И еще вариант, под каждый проект динамически создавать таблицу? |
#12
|
|||
|
|||
Тебе нужно Autoincrement поле, тогда можно будет сортировать по этому полю при выборке. Ну и все эти записи должны ссылаться на одну запись в главной таблице.
|
#13
|
|||
|
|||
А каким образом сортировать? Не понятно.
|
#14
|
|||
|
|||
В запросе добавляешь ORDER BY:
Код:
SELECT * FROM SrcTable WHERE PROJECT_ID = :PID ORDER BY ID ASC |
#15
|
|||
|
|||
А сам запрос он использованием Query делать? У меня 3 набора Table 1,Table 2, Table 3 для трех таблиц было. Table 3 не нужен?
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|