|
|
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
>зоранее благодарень >а исполнителей по заказу тоже всегда один? Нет конечно :) >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 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 15:49 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
зоранее благодарень ByKiSНе понял, так чтоли? IMHO лучше сделать многие-ко-многим DutiesByOrders создаем ордер tblOrders определяем ответсвенность tblAssignments назначем ответственных tblEmployeesдык у автора так и есть. tblAssignments=tblOrderWorkers (так кажется называется - почему SQL.ru в режиме поста не показывает картинки:( ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 15:52 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
ByKiSЭто гут? Если да, то что делать ключами в tblOrderJobs ?вполне. Судя по примеру, всех может быть несколько. Значит, unique (OrderID ,DutyID, Employee ). По бизнесу, могут быть еще данные - типа доля в доле - два манагера, одному 85% другому 15% манагерских. Контроль за 100% программно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 16:03 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Просто уточнить хочеца - это у меня что, 4НФ вырисовалась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 09:40 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
4НФ это "если в отношении существует нетривиальная многозначная зависимость...." а где она в Вашем случае? Нема.. Кстати МЗ по определению не может существовать в одиночестве - ей нужна пара. Ограничение типа "Для данного Заказа обязательны все Стадии" не есть МЗ, если другие атрибуты зависят комбинации Заказа + Стадия, а не от чисто Заказа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 10:38 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Понятно. А ещё вопрос, будьте добры, если не затруднит, объясните начинающему по поводу Напрашивается отселить в отдельную таблицу ваши 12 параметров. Тогда их может быть хоть 1 хоть 101. Это как реализовать? Что за отдельная таблица и что в ней должно быть? Где хранить названия доп. параметров, значения по умолчанию, и сами присвоенные значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 11:30 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Скорее всего, Программист-Любитель имел ввиду то, что Вы следом и нарисовали. И называется оно EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 12:58 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Слышал о таком, но пока тёмный лес :( пытался вникать, но везде такие базы описываются, что вообще ничего не понимаю (там одна вспомогательная таблица в 20 раз сложнее чем вся моя база) ;) то что я нарисовал следом, не использовал по простой причине - готовую таблицу я нарисовал, а где хранить названия доп. параметров, значения по умолчанию ума не приложу. Подтолкните на мыслетельный процесс, а то он что-то не начинается. Как мне свои несчастные таблички сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 13:07 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Ищите и фильтруйте:) http://www.sql.ru/forum/actualtopics.aspx?search=EAV+select&bid=36 http://www.compress.ru/Archive/CP/2001/8/9/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 14:49 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Вы что думаете я сам не искал и не фильтровал? :) Так? Это конечно упрщённо до примитивного, но сам принцип как? Я верной дорогой иду? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 16:22 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Верной. В том смысле что именно так выглядит альтернатива 12 полям-параметрам в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 17:34 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Вот вы меня вторым предлжением ну просто убили :) Что только в этом смысле верной? На что обращать внимание и какой-нибудь совет будьте добры дайте :) ByKiSЭто конечно упрщённо до примитивного...Ну, если честно, не так уж и упрощено - учитывая примитивность самой моей базы, это почти готовый вариант, так что если не затруднит уделите сколько-нибудь времени. Скоректируйте меня:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 17:40 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Видать не дадите и не скоректируете :( Тогда более конкрентно: 1) По поводу работников . Может их не по ЗаказИД привязывать, а по ЖалюзяИД? Вдь надо ещё и знать кто её изготовил (какя сменя), кто отвёз и т.д. - тут у разных жалюзей одного заказа могут быть разные работники (а для ЖалюзиИД только кто-то один). Или сделать ещё одну подобную таблицу для жалюзей и туда писать? Ведь менеджер/консультант/т.п. у всех жалюзей одного заказа только один. 2) По поводу параметров а что оставить в самой таблице Жалюзи? Только цена и количество? А ширина, высота, цвет тоже идёт доп-параметры? (Кто-то может заказть только механиз для жалюзи - у него нет высоты, только ширина/длина) Буду благодарен за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 09:41 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
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)Ну и история - некотрые параметры возможно меняются во времени. Как говориться, выберите по вкусу:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 10:20 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
ByKiS1) Или сделать ещё одну подобную таблицу для жалюзей и туда писать? Ведь менеджер/консультант/т.п. у всех жалюзей одного заказа только один.ИМХО разумно. ByKiS 2) По поводу параметров а что оставить в самой таблице Жалюзи? Только цена и количество? А ширина, высота, цвет тоже идёт доп-параметры? (Кто-то может заказть только механиз для жалюзи - у него нет высоты, только ширина/длина)Есть эмпирическое правило 80/20. В применении к этому случаю - оставьте то, что заполнено в 80% из 100. Но еще раз EAV - средство масштабирования по числу параметров. Так ли много их ожидается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 10:40 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
авторТак ли много их ожидается?Сколько их ожидается неизвестно - может 2, может 30, а может и 12. EAV не всегда оправдан? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 10:45 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
ByKiS авторТак ли много их ожидается?Сколько их ожидается неизвестно - может 2, может 30, а может и 12. EAV не всегда оправдан?До 30 ИМХО вполне можно обойтись без этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 11:12 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
А как без них? Как я сначала делал (ДопПар1,ДопПар2,ДопПар3...) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 11:16 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Ну да. Кстати, словарь параметров и ограничитель сочетаний типов объетов и параметров в этом случае тоже полезен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 14:35 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Хочу просто уточнить про EAV (правильно ли я понял эту систему) - все объекты тогда надо хранить в одной таблице? То есть все мои "жалюзи", "серии квитанций", "сотрудники", "монтажи" сольются в одну таблицу? И сообственно само сообщение. В данный момент, все БП очень неопределённые и каждый день что-то появляется новое, что-то пропадает. Если делать ТЗ - его надо было бы переписывать каждый день. К примеру, по "клиентам" сейчас надо только ClientID, ClientName, DepartmentID. В ближайшем будущем потребуется CompanyName, CompanyCode, ClientAddress, CreditLimit, PaymentTerms. Что потребуется не в ближайшем будущем (год-два) сказать никто не может. Тоже самое касается и остальных сущностей. Но среди них есть такие, атрибуты которых известны и менятся не будут, скажем "Единицы измерения", "Способ оплаты", "Вылюты", "Оплаты" и тому подобное. В связи с чем два вопроса: 1) Приходится сослаться на сказанное ModelR (тута)До 30 ИМХО вполне можно обойтись без этого. BULK INSERT (Microsoft Access)за стенкой МоделеР говорит, что при общем возможном количестве атрибутов порядка 30-ти - нет смысла заморачиваться на Тенцера и EAV - игра не стоит свеч - это не такие уж простые в реализации подходы... лучшее враг хорошего На теперешний день ещё не продумал схему базы, а первые таблицы уже надо переделывать. Насколько сказанное Вами остаётся верно учитывая сказанное мной в этом сообщении? EAV опарвдает себя в данном случае? Может есть что-то кроме ЕАV? 2) Возможен ли (и будет ли он разумным) вариан использования смешанной системы? Имею ввиду оставить таблицы для некоторых объектов, атрибуты которых меряться не будут, и сделать таблицы по принципу EAV для всего остаоьного? Или оставить часть атрибутов в таблицах, а часть вынести за её пределы (как предлагал Програмист-Любитель) ? Заранее благодарю за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2007, 15:43 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
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 для всего, что со временем не влезет в плоскую часть. Все умножить на историю по необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2007, 10:48 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Помогите, пожалуйста. Вот, что-то вырисовалось. Конечно далеко до совершенства и в дальнейшем будет подлежать пересмотру. Но сроки поджимают, скоро начнётся сезон и надо срочно что-то делать. Гляньте, будьте добры, может вам в глаза сразу броситься что-нибудь не правильное, что приведёт к проблемам? ЗЫ: Если не броситься, то тоже напишете, пожалуйста, чтоб я не ждал ;) . Повторяюсь, сроки очень жмут, весна пришла внезпнее чем обычно ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2007, 14:05 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
По составу таблиц и связям не бросается, в пределах известного о жалюзях. На что еще стоит потратить немного времени - на систему имен. Если таблица с суррогатным ИД называется <X>s, то ее суррогатный ключ <X>ID. Вместо BlindStatusHistory в систему лучше вписывается BlindStatusEvents. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2007, 20:32 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
ModelRПо составу таблиц и связям не бросается, в пределах известного о жалюзях.Ну вот и отлично :) Спасибо. ModelRЕсли таблица с суррогатным ИД называется <X>s, то ее суррогатный ключ <X>ID. Можно пример? Один мой тепершний и как его назвать? ModelRВместо BlindStatusHistory в систему лучше вписывается BlindStatusEvents.Действительно лучше, но попрубуя я сам придумай так чётко её назвать... Косноязычие у меня :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 09:28 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
ByKiS ModelRЕсли таблица с суррогатным ИД называется <X>s, то ее суррогатный ключ <X>ID. Можно пример? Один мой тепершний и как его назвать? Вместо OrderBlinds просто Blinds (других ведь все равно нет), ключ остается BlindID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 18:58 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34418046&tid=1544610]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 547ms |

| 0 / 0 |
