powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Где держать данные?
25 сообщений из 56, страница 2 из 3
Где держать данные?
    #34416017
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>зоранее благодарень
>а исполнителей по заказу тоже всегда один?
Нет конечно :)

>ModelR
>ИМХО гут
А как же моя таблица мотажей (с которой начился топик?:)
Раз у меня в схеме началось вырисовываться что-то более менее человеческое (мне так показалось), может она не нужна уже? Если сделать так - Сделать таблицу куда запихивать всех кто приложил руки к заказу и указывать к чему именно приложил?

tblOrders
OrderID PK
OrderNo

tblEmployees
Employee PK
EmployeeName

tblDuties
DutyID PK
DutyName

tblOrderJobs
OrderID FK
DutyID FK
Employee FK

типо так
OrderDutyEmployee1КонсультантБыков1МанагерБыков1МонтажникИванов1МонтажникПетров2КонсультантСидоров2МанагерБыков3МанагерСидоров

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

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

создаем ордер tblOrders
определяем ответсвенность tblAssignments
назначем ответственных tblEmployeesдык у автора так и есть. tblAssignments=tblOrderWorkers (так кажется называется - почему SQL.ru в режиме поста не показывает картинки:( ).
...
Рейтинг: 0 / 0
Где держать данные?
    #34416086
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSЭто гут? Если да, то что делать ключами в tblOrderJobs ?вполне. Судя по примеру, всех может быть несколько. Значит, unique (OrderID ,DutyID, Employee ).
По бизнесу, могут быть еще данные - типа доля в доле - два манагера, одному 85% другому 15% манагерских. Контроль за 100% программно.
...
Рейтинг: 0 / 0
Где держать данные?
    #34417339
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто уточнить хочеца - это у меня что, 4НФ вырисовалась?
...
Рейтинг: 0 / 0
Где держать данные?
    #34417522
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4НФ это "если в отношении существует нетривиальная многозначная зависимость...." а где она в Вашем случае? Нема.. Кстати МЗ по определению не может существовать в одиночестве - ей нужна пара. Ограничение типа "Для данного Заказа обязательны все Стадии" не есть МЗ, если другие атрибуты зависят комбинации Заказа + Стадия, а не от чисто Заказа.
...
Рейтинг: 0 / 0
Где держать данные?
    #34417713
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно. А ещё вопрос, будьте добры, если не затруднит, объясните начинающему по поводу
Напрашивается отселить в отдельную таблицу ваши 12 параметров. Тогда их может быть хоть 1 хоть 101.
Это как реализовать? Что за отдельная таблица и что в ней должно быть? Где хранить названия доп. параметров, значения по умолчанию, и сами присвоенные значения?
...
Рейтинг: 0 / 0
Где держать данные?
    #34418046
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего, Программист-Любитель имел ввиду то, что Вы следом и нарисовали. И называется оно EAV.
...
Рейтинг: 0 / 0
Где держать данные?
    #34418089
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слышал о таком, но пока тёмный лес :( пытался вникать, но везде такие базы описываются, что вообще ничего не понимаю (там одна вспомогательная таблица в 20 раз сложнее чем вся моя база) ;)
то что я нарисовал следом, не использовал по простой причине - готовую таблицу я нарисовал, а где хранить названия доп. параметров, значения по умолчанию ума не приложу. Подтолкните на мыслетельный процесс, а то он что-то не начинается. Как мне свои несчастные таблички сделать?
...
Рейтинг: 0 / 0
Где держать данные?
    #34418529
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищите и фильтруйте:)
http://www.sql.ru/forum/actualtopics.aspx?search=EAV+select&bid=36
http://www.compress.ru/Archive/CP/2001/8/9/
...
Рейтинг: 0 / 0
Где держать данные?
    #34418952
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы что думаете я сам не искал и не фильтровал? :)
Так?
Это конечно упрщённо до примитивного, но сам принцип как? Я верной дорогой иду? :)
...
Рейтинг: 0 / 0
Где держать данные?
    #34419248
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верной. В том смысле что именно так выглядит альтернатива 12 полям-параметрам в таблице.
...
Рейтинг: 0 / 0
Где держать данные?
    #34419274
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вы меня вторым предлжением ну просто убили :) Что только в этом смысле верной? На что обращать внимание и какой-нибудь совет будьте добры дайте :)
ByKiSЭто конечно упрщённо до примитивного...Ну, если честно, не так уж и упрощено - учитывая примитивность самой моей базы, это почти готовый вариант, так что если не затруднит уделите сколько-нибудь времени. Скоректируйте меня:)
...
Рейтинг: 0 / 0
Где держать данные?
    #34420311
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видать не дадите и не скоректируете :(

Тогда более конкрентно:
1) По поводу работников . Может их не по ЗаказИД привязывать, а по ЖалюзяИД? Вдь надо ещё и знать кто её изготовил (какя сменя), кто отвёз и т.д. - тут у разных жалюзей одного заказа могут быть разные работники (а для ЖалюзиИД только кто-то один). Или сделать ещё одну подобную таблицу для жалюзей и туда писать? Ведь менеджер/консультант/т.п. у всех жалюзей одного заказа только один.
2) По поводу параметров а что оставить в самой таблице Жалюзи? Только цена и количество? А ширина, высота, цвет тоже идёт доп-параметры? (Кто-то может заказть только механиз для жалюзи - у него нет высоты, только ширина/длина)

Буду благодарен за совет.
...
Рейтинг: 0 / 0
Где держать данные?
    #34420468
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSВот вы меня вторым предлжением ну просто убили :) Это просто к тому, что выбор альтернативы пока не очевиден. Возможно, резервирование N полей решает все проблемы c параметрами жалюзей на 10 лет вперед.
Но коль и параметров, и типов ожидается неопределенно много и связи между ними множественные, то собственно по EAV.
1)Один параметр может быть применим к нескольким типам объектов. Лучше
отдельно
словарь параметров:
Parameters(Prm_id,Prm_name,Prm_type,Prm_defaultvalue) PK(Prm_id) Unique(Prm_name)

сочетания типов объетов и параметров:
BlindTypeParameters (BTP_id, Prm_id,BlindType_id, PrmBT_defaultvalue) PK(BTP_id) Unique(Prm_id,BlindType_id)

И костяк из 5 таблиц: Словарь типов объектов, словарь параметров, ограничитель сочетаний типов объетов и параметров, таблица объектов и таблица значений собственно на месте. Иногда можно обойтись без ограничителя, но в вашем случае это будет слишком грубая схема.

Дальнейшее развитие:
2)остался открытым вопрос о контроле комбинаций (Blind_Id, Prm_Id) в таблице значений SelledBlindParameters - я бы переименовал ее в SelledBlindParamValues - на соответсвие ограничителю BlindTypeParameters. Можно делать процедурно - все равно для работы с EAV-структурами, а то и с базой вообще, пишется некое API. Но за счет дополнительного расхода памяти можно и декларативно.
3)Для значений сделать несколько полей по типам значений: NumberValue, DateValue... - уйти от свертки/развертки значений в строку.
4)Добавить интеллекта в части единиц измерения. Пока предполагается, что единица измерения - часть наименования.
5)Значения могут быть ссылками на объекты. Параметры такого типа уже суть связи.
6)Ну и история - некотрые параметры возможно меняются во времени.

Как говориться, выберите по вкусу:)
...
Рейтинг: 0 / 0
Где держать данные?
    #34420560
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiS1) Или сделать ещё одну подобную таблицу для жалюзей и туда писать? Ведь менеджер/консультант/т.п. у всех жалюзей одного заказа только один.ИМХО разумно. ByKiS
2) По поводу параметров а что оставить в самой таблице Жалюзи? Только цена и количество? А ширина, высота, цвет тоже идёт доп-параметры? (Кто-то может заказть только механиз для жалюзи - у него нет высоты, только ширина/длина)Есть эмпирическое правило 80/20. В применении к этому случаю - оставьте то, что заполнено в 80% из 100. Но еще раз EAV - средство масштабирования по числу параметров. Так ли много их ожидается?
...
Рейтинг: 0 / 0
Где держать данные?
    #34420586
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТак ли много их ожидается?Сколько их ожидается неизвестно - может 2, может 30, а может и 12.
EAV не всегда оправдан?
...
Рейтинг: 0 / 0
Где держать данные?
    #34420732
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiS авторТак ли много их ожидается?Сколько их ожидается неизвестно - может 2, может 30, а может и 12.
EAV не всегда оправдан?До 30 ИМХО вполне можно обойтись без этого.
...
Рейтинг: 0 / 0
Где держать данные?
    #34420751
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как без них? Как я сначала делал (ДопПар1,ДопПар2,ДопПар3...) ?
...
Рейтинг: 0 / 0
Где держать данные?
    #34421778
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да. Кстати, словарь параметров и ограничитель сочетаний типов объетов и параметров в этом случае тоже полезен.
...
Рейтинг: 0 / 0
Где держать данные?
    #34427908
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу просто уточнить про EAV (правильно ли я понял эту систему) - все объекты тогда надо хранить в одной таблице? То есть все мои "жалюзи", "серии квитанций", "сотрудники", "монтажи" сольются в одну таблицу?

И сообственно само сообщение.

В данный момент, все БП очень неопределённые и каждый день что-то появляется новое, что-то пропадает. Если делать ТЗ - его надо было бы переписывать каждый день. К примеру, по "клиентам" сейчас надо только ClientID, ClientName, DepartmentID. В ближайшем будущем потребуется CompanyName, CompanyCode, ClientAddress, CreditLimit, PaymentTerms. Что потребуется не в ближайшем будущем (год-два) сказать никто не может. Тоже самое касается и остальных сущностей. Но среди них есть такие, атрибуты которых известны и менятся не будут, скажем "Единицы измерения", "Способ оплаты", "Вылюты", "Оплаты" и тому подобное.

В связи с чем два вопроса:

1) Приходится сослаться на сказанное
ModelR (тута)До 30 ИМХО вполне можно обойтись без этого.
BULK INSERT (Microsoft Access)за стенкой МоделеР говорит, что при общем возможном количестве атрибутов порядка 30-ти - нет смысла заморачиваться на Тенцера и EAV - игра не стоит свеч - это не такие уж простые в реализации подходы...
лучшее враг хорошего
На теперешний день ещё не продумал схему базы, а первые таблицы уже надо переделывать. Насколько сказанное Вами остаётся верно учитывая сказанное мной в этом сообщении? EAV опарвдает себя в данном случае? Может есть что-то кроме ЕАV?

2) Возможен ли (и будет ли он разумным) вариан использования смешанной системы? Имею ввиду оставить таблицы для некоторых объектов, атрибуты которых меряться не будут, и сделать таблицы по принципу EAV для всего остаоьного? Или оставить часть атрибутов в таблицах, а часть вынести за её пределы (как предлагал Програмист-Любитель) ?

Заранее благодарю за помощь.
...
Рейтинг: 0 / 0
Где держать данные?
    #34430591
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiSХочу просто уточнить про EAV (правильно ли я понял эту систему) - все объекты тогда надо хранить в одной таблице? То есть все мои "жалюзи", "серии квитанций", "сотрудники", "монтажи" сольются в одну таблицу?Нет, для каждого достаточно крупного класса - свои таблицы значений - это нормально. Теоретически, все можно впихнуть в обобщенную модель из 4 таблиц. Это даже полезное для развития навыков проектирования БД упражнение, но у Вас наверняка есть и более актуальные дела. ByKiS

И сообственно само сообщение.

В данный момент, все БП очень неопределённые и каждый день что-то появляется новое, что-то пропадает. Если делать ТЗ - его надо было бы переписывать каждый день. К примеру, по "клиентам" сейчас надо только ClientID, ClientName, DepartmentID. В ближайшем будущем потребуется CompanyName, CompanyCode, ClientAddress, CreditLimit, PaymentTerms. Что потребуется не в ближайшем будущем (год-два) сказать никто не может. Тоже самое касается и остальных сущностей. Но среди них есть такие, атрибуты которых известны и менятся не будут, скажем "Единицы измерения", "Способ оплаты", "Вылюты", "Оплаты" и тому подобное.
Пока это все достаточно типичные ситуации - организационная структура, должности и люди, адрес/средство связи, действующие лица и их роли в отношениях ByKiS
В связи с чем два вопроса:

1) Приходится сослаться на сказанное
ModelR (тута)До 30 ИМХО вполне можно обойтись без этого.
BULK INSERT (Microsoft Access)за стенкой МоделеР говорит, что при общем возможном количестве атрибутов порядка 30-ти - нет смысла заморачиваться на Тенцера и EAV - игра не стоит свеч - это не такие уж простые в реализации подходы...
лучшее враг хорошего
На теперешний день ещё не продумал схему базы, а первые таблицы уже надо переделывать. Насколько сказанное Вами остаётся верно учитывая сказанное мной в этом сообщении? EAV опарвдает себя в данном случае? Может есть что-то кроме ЕАV?

2) Возможен ли (и будет ли он разумным) вариан использования смешанной системы? Имею ввиду оставить таблицы для некоторых объектов, атрибуты которых меряться не будут, и сделать таблицы по принципу EAV для всего остаоьного? Или оставить часть атрибутов в таблицах, а часть вынести за её пределы (как предлагал Програмист-Любитель) ?Да, так и делают. Начиная с некоторого уровня сложности в системе невозможно иметь только один вариант. По принципу "и пиво тоже" дают возможность в родной таблице в плоском виде хранить наиболее общие и интенсивно эксплуатируемые параметры (ОРГАНИЗАЦИЯ - Название, юридическа форма) плюс ролевые таблицы, подтипы для более специальной информации (КЛИЕНТ - кредитные лимиты, скидки). И там и там можно предусмотреть резервные поля и механизм их настройки. Плюс EAV для всего, что со временем не влезет в плоскую часть.
Все умножить на историю по необходимости.
...
Рейтинг: 0 / 0
Где держать данные?
    #34437397
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, пожалуйста. Вот, что-то вырисовалось. Конечно далеко до совершенства и в дальнейшем будет подлежать пересмотру. Но сроки поджимают, скоро начнётся сезон и надо срочно что-то делать. Гляньте, будьте добры, может вам в глаза сразу броситься что-нибудь не правильное, что приведёт к проблемам?
ЗЫ: Если не броситься, то тоже напишете, пожалуйста, чтоб я не ждал ;) . Повторяюсь, сроки очень жмут, весна пришла внезпнее чем обычно ;)
...
Рейтинг: 0 / 0
Где держать данные?
    #34438842
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По составу таблиц и связям не бросается, в пределах известного о жалюзях.

На что еще стоит потратить немного времени - на систему имен.
Если таблица с суррогатным ИД называется <X>s, то ее суррогатный ключ <X>ID.
Вместо BlindStatusHistory в систему лучше вписывается BlindStatusEvents.
...
Рейтинг: 0 / 0
Где держать данные?
    #34439267
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRПо составу таблиц и связям не бросается, в пределах известного о жалюзях.Ну вот и отлично :) Спасибо.

ModelRЕсли таблица с суррогатным ИД называется <X>s, то ее суррогатный ключ <X>ID. Можно пример? Один мой тепершний и как его назвать?

ModelRВместо BlindStatusHistory в систему лучше вписывается BlindStatusEvents.Действительно лучше, но попрубуя я сам придумай так чётко её назвать... Косноязычие у меня :)
...
Рейтинг: 0 / 0
Где держать данные?
    #34441689
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ByKiS ModelRЕсли таблица с суррогатным ИД называется <X>s, то ее суррогатный ключ <X>ID. Можно пример? Один мой тепершний и как его назвать?
Вместо OrderBlinds просто Blinds (других ведь все равно нет), ключ остается BlindID.
...
Рейтинг: 0 / 0
25 сообщений из 56, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Где держать данные?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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