powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Где держать данные?
25 сообщений из 56, страница 1 из 3
Где держать данные?
    #34295564
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица заказы. Потребовалось донолнительно вводить информацию о монтаже (кто смонтировал, когла смонтировал и т.д.) - монтазников может быть несколько. Вопрос эту информацию лучше добавлять в таблицу "заказы" (сделав дополнительные поля "Монтажник1", "Монтажник2", "Монтажник3", "ДатаМонтажа" и т.д.) или создать отдельную таьлицу? Какие будут плюсы/минусу того или другого варианта?
...
Рейтинг: 0 / 0
Где держать данные?
    #34295724
ByKiSЕсть таблица заказы. Потребовалось донолнительно вводить информацию о монтаже (кто смонтировал, когла смонтировал и т.д.) - монтазников может быть несколько. Вопрос эту информацию лучше добавлять в таблицу "заказы" (сделав дополнительные поля "Монтажник1", "Монтажник2", "Монтажник3", "ДатаМонтажа" и т.д.) или создать отдельную таьлицу? Какие будут плюсы/минусу того или другого варианта?
Однозначно: если стремишься следовать реляционному стандарту, то делать примерно такие таблицы
Код: plaintext
1.
2.
3.
4.
Заказы(ID заказа, № заказа, дата заказа, <другие необходимые поля>)
Монтажи(id заказа, дата завершения монтажа, <другие необходимые поля>)
Наряды(id заказа, id сотрудника, дата наряда, № наряда,<другие необходимые поля>)
Сотрудники(id cотрудника, ФИО, <другие необходимые поля>)

Плюсы: любое количество монтажников (от 0 до бесконечности) без пересоздания таблицы "Заказы",
возможность частичного закрытия заказа
Минусы: дополнительное время (обычно незначительное) на выборку данных из связанных таблиц...

У Вашего первоначального варианта
плюсы:
"все данные в одном месте",
а минус:
сложность масштабирования структуры (если монтажников будет 2, то одно поле - лишнее; если монтажников когда-то будет 4 или 5 /будет монтаж в два этапа и т.д., то потребуется менять структуру таблицы)
...
Рейтинг: 0 / 0
Где держать данные?
    #34295906
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"монтазников может быть несколько" сколько конкретно? Если сколько угодно, то тут же всплывёт ограничение на количество колонок в таблице и вопрос решится в пользу дополнительной таблицы.
Монтажники выполняют однотипные работы, или каждый определённый вид работ в фиксированном технологическом процессе? Если последнее, то лучше говорить о работах и кто их исполнял, чем о монтажнике(n). Тогда, наверное, лучше будет отмечать выполнение работ непосредственно в записи.
...
Рейтинг: 0 / 0
Где держать данные?
    #34295930
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В силу большой неконкретности задачи, остановлюсь на первом варианте (доп. таблица).
Спасибо за помощь.
...
Рейтинг: 0 / 0
Где держать данные?
    #34296466
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно надо выбирать вариант с ипользованием промежуточной таблицы и исходя из ограничений предметной области в зависимости от типа работы задавать ограничения на кол-во монтажников,на их квалификацию и исходя из этих ограничений строить вводилку монтажников (причем выйдет очень эффектно-для каждого типа работ можно в зав-ти от кол-ва монтажников строить список их привязки к работе).
...
Рейтинг: 0 / 0
Где держать данные?
    #34374048
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот после двух месяцев непомерных трудов, ошибок и изучений нарисовалась такая схема базы... Очень хотелось бы услышать недостатки и замечания. Заранее благодарен.
...
Рейтинг: 0 / 0
Где держать данные?
    #34374406
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напрашивается отселить в отдельную таблицу ваши 12 параметров. Тогда их может быть хоть 1 хоть 101.
...
Рейтинг: 0 / 0
Где держать данные?
    #34374468
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только это??? ;)

Спасибо, ято нашли время. Только уточните что значит отселить? Ещё одна таблица с 12 полями?
Или типа
BlindIDAdditionalParameterNameAdditionalParametrValue1Ширина ткани15801Тип направляющихPA351Тип касетыVEGA1ДекорCOLONIAL3502Количество баластов52Тип струныПластик3Тип ленты127мм
Или типа как?
...
Рейтинг: 0 / 0
Где держать данные?
    #34375028
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Справочник типов атрибутов (сейчас их 12) + таблица значения атрибутов в увязке с PK той таблицы, где они сечас торчат кучкой. Про хранение объектов и атрибутов в универсальной таблице много можно найти поиском по форуму Проектирование.
...
Рейтинг: 0 / 0
Где держать данные?
    #34375640
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ByKiS
В табл. TblPayments поле PaymentType. В то же время в табл. TblPaymentsTypes есть поле PaymentTypeID. Почему вы предпочли хранить сам тип вместо его ID?
...
Рейтинг: 0 / 0
Где держать данные?
    #34375655
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Название поля там PaymentType, но хранится integer. Также, как и в tblOrders в Customer хранится СustomerID из tblCustomers. Или я не понял замечания?
...
Рейтинг: 0 / 0
Где держать данные?
    #34375668
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая таблица
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE [dbo].[tblPayments](
	[PaymentID] [int] IDENTITY( 1 , 1 ) NOT NULL,
	[OrderID] [int] NOT NULL,
	[Date] [datetime] NOT NULL,
	[PaymentNotes] [nvarchar]( 50 ) COLLATE Lithuanian_CI_AS NULL,
	[PaymentAmount] [decimal]( 18 ,  2 ) NULL,
	[PaymentType] [int] NOT NULL,
 CONSTRAINT [PK_Mokejimai] PRIMARY KEY CLUSTERED 
(
	[PaymentID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
...
Рейтинг: 0 / 0
Где держать данные?
    #34376359
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, у вас нет единого стиля именования полей - то у вас FK с суффиксом ID (как в таблице-справочнике), то без... Я бы сделал везде как таблиуе-спрравочнике с суффиксом ID...

Пускай безобразно, но единообразно!
...
Рейтинг: 0 / 0
Где держать данные?
    #34376521
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительПускай безобразно, но единообразно!
Пасибо, учту! Читаю Реддика ;)

Ещё вопрос по сарвочнику работников:
Каждый работник может выступать в роли манагера или (и) монтажника, или (и) консултанта. Привидилась вчера перед сном такие две схемы. Подскажите которая правильнее была бы.
...
Рейтинг: 0 / 0
Где держать данные?
    #34376785
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верхняя.
...
Рейтинг: 0 / 0
Где держать данные?
    #34377335
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тут?
...
Рейтинг: 0 / 0
Где держать данные?
    #34414644
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительВерхняя.
А в "манагер" и "консультант" в таблице заказов вставлять ИД_сотрудника или ИД_работника ?
Стоко времени прошло, а ло меня всё не доходит :(
...
Рейтинг: 0 / 0
Где держать данные?
    #34414745
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и так и так, но ест некоторый нюанс в последующем использовании.

Если вставить ИД_Сотрудника, то из заказа легко можно будет получить информацию о должности, но для выковыривания фамилии нужно будет подключить еще таблицу Работники.

Наоборот, если хранить ИД_Работника, то его фаимилия будет доставаться проще, а должность - наоборот через еще одно дополнительное соединение таблиц.

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

Еще в такого рода таблицах ОБЯЗАТЕЛЬНО надо сразу делать историю - при перемещении людей с должности на должность запросы по старым данным будут работать неверно.
...
Рейтинг: 0 / 0
Где держать данные?
    #34414795
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация вот какая - манагер получает зарплату 5% от заказа, консультант - 2%, замерщик - 1% и т.д. Эти поля (манагер, консультант... - обязательные, т.к. клиента всегда надо проконсультировать, обмерить и выполнить заказ). Заказ можно анулировать - это может только руководитель проекта (на схеме его нет, но он есть). Если меджер принёс свой заказ то он должен получить и за консультанта и за менеджера, т.е. некоторые манагера могут выступать и в роли манагера и в роли консультанта. Руководитель проекта тоже может другу подарить жалюзю - значит он тоже может выступать и роли манатера и в роли консультанта. Некоторые операции может выполнитть только директор. Ещё есть Быков и другие акционеры, которые суются в дела фирмы и могут выступать под ролью директора, руководителя, манагера и т.д.
В конце месяца вся сумма за все заказы должна быть поделена между сотрудниками (потому и не могут быть пустые поля) и посчитана зарплата.
Может тут вообще надо по другому делать?
...
Рейтинг: 0 / 0
Где держать данные?
    #34415422
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если часты явления, когда сотрудники в заказах имеют разные должности, то лучше в таблице заказов сделать и ID должности и ID сотрудника и на момент формирования заказа сохранять туда значения по текущей ситуации.
...
Рейтинг: 0 / 0
Где держать данные?
    #34415858
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял, так чтоли?
...
Рейтинг: 0 / 0
Где держать данные?
    #34415877
Фотография зоранее благодарень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSНе понял, так чтоли?

IMHO лучше сделать многие-ко-многим DutiesByOrders

создаем ордер tblOrders
определяем ответсвенность tblAssignments
назначем ответственных tblEmployees
...
Рейтинг: 0 / 0
Где держать данные?
    #34415898
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зоранее благодареньIMHO лучше сделать многие-ко-многим DutiesByOrdersКак многие ко многим? Заказ то один...
Поясните, а то я теперь ещё больше не понял.
...
Рейтинг: 0 / 0
Где держать данные?
    #34415966
Фотография зоранее благодарень
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiS зоранее благодареньIMHO лучше сделать многие-ко-многим DutiesByOrdersКак многие ко многим? Заказ то один...
Поясните, а то я теперь ещё больше не понял.

а исполнителей по заказу тоже всегда один?
...
Рейтинг: 0 / 0
Где держать данные?
    #34415976
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Не понял, так чтоли?

ИМХО гут. Еще уникальность duty_id + order_id. Ведь в данном заказе лишь один манагер, один консультант и т.д.?

2 Программист-Любитель

В свете последних разъяснений история наверно не нужна - сотрудника не обязательно назначать на должность манагера чтобы он исполнял роль манагера в заказе. Хотя может с консультантами другая история.
...
Рейтинг: 0 / 0
25 сообщений из 56, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Где держать данные?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]