|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
Какой вариант для хранения данных выбрать?10.10.2008, 15:05. Показов 5001. Ответов 32
Метки нет (Все метки)
Есть прога. Работает с БД (не суть важно для вопроса с какой). Программа принимает различные данные от пользователя. Номер контракта, дом телефон и т. д.. Все эти данные потом должна заноситься в БД.
Планирую в таблице примерно такую структуру: | №_контракта | дом_тел | . . . | . . . Но есть еще такие данные как виды выполняемых работ. В чем загвоздка. Например, для телефона я создаю одно поле (как видно выше) и все тип-топ. Но дело в том, что выполняемых работ может быть несколько (это задает пользователь), то есть, количество полей под это дело, нам уже заранее неизвестно. Плюс каждой выполняемой работе соответствует своя сумма денег. Ее тоже нужно хранить. Пока мне в голову приходит только: сделать одно поле для выполняемых работ. Задать ему определенный формат. Например, сначала текст "вид работы", потом какой нибудь специальный знак, а за ним цена работы. Тогда нужно читать строку, парсить... Бррр. Дублировать записи не пойдет. Создавать для каждой выполненной работы отдельное поле тоже. Т. к., будет куча пустых полей. Да еще цена... Что можно еще придумать?
0
|
|
| 10.10.2008, 15:05 | |
|
Ответы с готовыми решениями:
32
Подскажите какой вариант выбрать Какой оптимальный вариант хранения записей с одинаковыми значениями? Какой вариант хранения данных о пользователях лучше? |
|
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
|
|
| 10.10.2008, 15:11 | |
|
А таблицу с видами и стоимостью работ сделать и привязать ее к основной по внешнему ключу - не вариант?
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 10.10.2008, 15:15 [ТС] | |
|
дело в том, что виды работ не фиксированы. Стоимость тоже вводится самим пользователем.
Например. Есть контракт номер 0000, ему выполнили работу 1, работу 2 и 3. стоимость 1 - 100, 2 - 200, 3 - 300. И есть контракт 1111, ему выполнили работу 1 стоимостью уже 350, а не 100, как в предыдущем, работу 5 стоимостью 400. Имена работ: 1, 2, 3, 5 вводятся пользователем и могут быть любыми. Что мы тогда должны хранить в еще одной таблице?
0
|
|
|
Администратор
87855 / 53176 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|
| 10.10.2008, 15:15 | |
|
Структура базы должна быть такой.
Таблицы: Пользователи, Контракты, Работы Таблица Контракты ссылается на таблицы Пользователи (бизнес-правило о контрактах пользователя) и таблицу Работы (бизнес-правило о работах по контракту). В случае, если по контракту может осуществляться несколько работ, то вводится таблица связей, содержащая записи со ссылками на контракт и выполняемые по нему работы с их стоимостью. Если контракт может выполняться несколькими пользователями, то тоже вводится соответствующая таблица связей.
0
|
|
|
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
|
|
| 10.10.2008, 15:17 | |
|
Думаю что надо хранить эти данные ввиде связанных таблиц
например в одной таблице хранятся все данные о работнике плюс его ID ( primery key) и для каждого рабочего создаем дочернюю таблицу, в которой будет также храниться ID рабочего и данные о выполняемых работах
0
|
|
|
Администратор
87855 / 53176 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|
| 10.10.2008, 15:18 | |
|
0
|
|
|
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
|
||
| 10.10.2008, 15:24 | ||
|
0
|
||
|
Администратор
87855 / 53176 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
||
| 10.10.2008, 15:26 | ||
|
Читайте пост 4.
0
|
||
|
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
|
|
| 10.10.2008, 15:31 | |
|
0
|
|
|
Администратор
87855 / 53176 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
||
| 10.10.2008, 15:32 | ||
|
Таким образом, структура базы будет следующей. Таблицы: Пользователи, Контракты, Работы и таблица связей Пользователь - Контракт - Работа - Стоимость работы (числовое поле).
0
|
||
|
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
|
|
| 10.10.2008, 15:40 | |
|
Анализируязагвоздку Vourhey, прихожу к выводу, что достаточно так:
Таб1 (№ контракта (PK), дом. тел,.....,...) Таб2 (№ контракта (FK), работа, сумма ) ни больше ни меньше...
0
|
|
|
Администратор
87855 / 53176 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|||
| 10.10.2008, 15:46 | |||
|
Добавлено через 1 минуту 45 секунд Емае, люди, не позорьтесь)) Изучите хотя бы основы проектирования баз данных.
0
|
|||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 10.10.2008, 15:54 [ТС] | ||
|
| job_name | cost | Где будет номер контракта? Хотя, сделать тогда примерно так вторую таблицу: | contract_num | job_name | cost | Соответственно, в первой у нас тоже будут номера контрактов, но записи не будут повторяться. Вобщем, что-то в таком роде тогда: Инфа о заказчике: | contract_num | phone_num | surname | Инфа о работах: | contract_num | job | cost | норм? Я системщик. Понимание БД у мя несколько своеобразное ))) Добавлено через 1 минуту 53 секунды Блин, я опоздал. Angry_Bobo, мнения сошлись. Добавлено через 32 секунды mik-a-el, я не могу придумать, как здесь без дублирования номеров контрактов. ИМХО, никак.
0
|
||
|
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
|
||
| 10.10.2008, 15:59 | ||
|
Инфа о заказчике: act_id| contract_num | phone_num | surname | Инфа о работах: act_id| job | cost | где act_id первичный ключ в инфе о заказчиках и внешний в инфе о работах... соотв. связь м/д таблицами по полю act_id
0
|
||
|
Администратор
87855 / 53176 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
||
| 10.10.2008, 16:07 | ||
|
Angry_Bobo, ответьте на мои вопросы по структуре базы, а то я уже устал смеяться, читая ваши посты
![]() Добавлено через 2 минуты 50 секунд Есть 3 таблицы: данные о пользователях (ИД, номер телефона, адрес и т.п.), данные о контрактах (ИД, суть контракта) и данные о работах (ИД название работы, суть работы). Есть таблица, задающая связи между пользователем (внешний ключ на ИД пользователя), контрактом (внешний ключ на ИД контракта) и работой (внешний ключ на ИД работы) и задающая стоимость этой связки. Эта структура покрывает весь ваш функционал. Блин, элементарная задача, а ошибок понаделано... Добавлено через 2 минуты 50 секунд Angry_Bobo, хотелось бы выслушать доводы против этой структуры и за вашу
0
|
||
|
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
|
||
| 10.10.2008, 16:14 | ||
0
|
||
|
Администратор
87855 / 53176 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|
| 10.10.2008, 16:16 | |
|
Но это не значит, что нужно допускать подобные просчеты при проектировании базы. Или вы всегда так относитесь к проектированию баз?
Я таки жду ответы на свои вопросы.
0
|
|
|
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
|
|
| 10.10.2008, 16:42 | |
|
Я вообще думал, что по постановке,нужно запихать все в одну таблицу и поэтому аккуратно предложил такой вариант. А с точки зрения нормализации, mik-a-el , вы абсолютно правы и с такой моделью я вполне согласен...
0
|
|
|
Администратор
87855 / 53176 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|
| 10.10.2008, 16:44 | |
|
Да, мы наверно по-разному поняли суть задачи. Я понял то, что необходимо создать базу, где необходимо хранить данные о пользователях, их контрактах, работах и стоимости работ. Собственно и структура базы была под именно такую задачу.
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 10.10.2008, 17:06 [ТС] | |
|
Да дело в том, что о заказчиках речи вообще нет. Здесь главное - это номер контракта.
0
|
|
| 10.10.2008, 17:06 | |
|
Помогаю со студенческими работами здесь
20
Какой лучше выбрать формат для хранения векторов (массив float) в БД Какую базу данных выбрать для локального хранения Какой вариант выбрать ? Как выбрать внешний жесткий диск для хранения данных? Необходимо выбрать структуру (список, К-Ч дерево и т.д) для хранения данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|