|
|
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Есть таблица заказы. Потребовалось донолнительно вводить информацию о монтаже (кто смонтировал, когла смонтировал и т.д.) - монтазников может быть несколько. Вопрос эту информацию лучше добавлять в таблицу "заказы" (сделав дополнительные поля "Монтажник1", "Монтажник2", "Монтажник3", "ДатаМонтажа" и т.д.) или создать отдельную таьлицу? Какие будут плюсы/минусу того или другого варианта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2007, 12:06 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
ByKiSЕсть таблица заказы. Потребовалось донолнительно вводить информацию о монтаже (кто смонтировал, когла смонтировал и т.д.) - монтазников может быть несколько. Вопрос эту информацию лучше добавлять в таблицу "заказы" (сделав дополнительные поля "Монтажник1", "Монтажник2", "Монтажник3", "ДатаМонтажа" и т.д.) или создать отдельную таьлицу? Какие будут плюсы/минусу того или другого варианта? Однозначно: если стремишься следовать реляционному стандарту, то делать примерно такие таблицы Код: plaintext 1. 2. 3. 4. Плюсы: любое количество монтажников (от 0 до бесконечности) без пересоздания таблицы "Заказы", возможность частичного закрытия заказа Минусы: дополнительное время (обычно незначительное) на выборку данных из связанных таблиц... У Вашего первоначального варианта плюсы: "все данные в одном месте", а минус: сложность масштабирования структуры (если монтажников будет 2, то одно поле - лишнее; если монтажников когда-то будет 4 или 5 /будет монтаж в два этапа и т.д., то потребуется менять структуру таблицы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2007, 12:42 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
"монтазников может быть несколько" сколько конкретно? Если сколько угодно, то тут же всплывёт ограничение на количество колонок в таблице и вопрос решится в пользу дополнительной таблицы. Монтажники выполняют однотипные работы, или каждый определённый вид работ в фиксированном технологическом процессе? Если последнее, то лучше говорить о работах и кто их исполнял, чем о монтажнике(n). Тогда, наверное, лучше будет отмечать выполнение работ непосредственно в записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2007, 13:12 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
В силу большой неконкретности задачи, остановлюсь на первом варианте (доп. таблица). Спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2007, 13:17 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Конечно надо выбирать вариант с ипользованием промежуточной таблицы и исходя из ограничений предметной области в зависимости от типа работы задавать ограничения на кол-во монтажников,на их квалификацию и исходя из этих ограничений строить вводилку монтажников (причем выйдет очень эффектно-для каждого типа работ можно в зав-ти от кол-ва монтажников строить список их привязки к работе). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2007, 15:08 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Вот после двух месяцев непомерных трудов, ошибок и изучений нарисовалась такая схема базы... Очень хотелось бы услышать недостатки и замечания. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 12:38 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Напрашивается отселить в отдельную таблицу ваши 12 параметров. Тогда их может быть хоть 1 хоть 101. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 13:49 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Только это??? ;) Спасибо, ято нашли время. Только уточните что значит отселить? Ещё одна таблица с 12 полями? Или типа BlindIDAdditionalParameterNameAdditionalParametrValue1Ширина ткани15801Тип направляющихPA351Тип касетыVEGA1ДекорCOLONIAL3502Количество баластов52Тип струныПластик3Тип ленты127мм Или типа как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 14:00 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Справочник типов атрибутов (сейчас их 12) + таблица значения атрибутов в увязке с PK той таблицы, где они сечас торчат кучкой. Про хранение объектов и атрибутов в универсальной таблице много можно найти поиском по форуму Проектирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 16:10 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
2 ByKiS В табл. TblPayments поле PaymentType. В то же время в табл. TblPaymentsTypes есть поле PaymentTypeID. Почему вы предпочли хранить сам тип вместо его ID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 18:52 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Название поля там PaymentType, но хранится integer. Также, как и в tblOrders в Customer хранится СustomerID из tblCustomers. Или я не понял замечания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 18:57 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Такая таблица Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2007, 19:01 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Кстати, у вас нет единого стиля именования полей - то у вас FK с суффиксом ID (как в таблице-справочнике), то без... Я бы сделал везде как таблиуе-спрравочнике с суффиксом ID... Пускай безобразно, но единообразно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 08:38 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительПускай безобразно, но единообразно! Пасибо, учту! Читаю Реддика ;) Ещё вопрос по сарвочнику работников: Каждый работник может выступать в роли манагера или (и) монтажника, или (и) консултанта. Привидилась вчера перед сном такие две схемы. Подскажите которая правильнее была бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2007, 09:47 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительВерхняя. А в "манагер" и "консультант" в таблице заказов вставлять ИД_сотрудника или ИД_работника ? Стоко времени прошло, а ло меня всё не доходит :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 09:50 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Можно и так и так, но ест некоторый нюанс в последующем использовании. Если вставить ИД_Сотрудника, то из заказа легко можно будет получить информацию о должности, но для выковыривания фамилии нужно будет подключить еще таблицу Работники. Наоборот, если хранить ИД_Работника, то его фаимилия будет доставаться проще, а должность - наоборот через еще одно дополнительное соединение таблиц. По смыслу и идеологически правильнее первое, так как с заказом работает конкретное должностное лицо и с должностью и с фамилией. Еще в такого рода таблицах ОБЯЗАТЕЛЬНО надо сразу делать историю - при перемещении людей с должности на должность запросы по старым данным будут работать неверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 10:32 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Ситуация вот какая - манагер получает зарплату 5% от заказа, консультант - 2%, замерщик - 1% и т.д. Эти поля (манагер, консультант... - обязательные, т.к. клиента всегда надо проконсультировать, обмерить и выполнить заказ). Заказ можно анулировать - это может только руководитель проекта (на схеме его нет, но он есть). Если меджер принёс свой заказ то он должен получить и за консультанта и за менеджера, т.е. некоторые манагера могут выступать и в роли манагера и в роли консультанта. Руководитель проекта тоже может другу подарить жалюзю - значит он тоже может выступать и роли манатера и в роли консультанта. Некоторые операции может выполнитть только директор. Ещё есть Быков и другие акционеры, которые суются в дела фирмы и могут выступать под ролью директора, руководителя, манагера и т.д. В конце месяца вся сумма за все заказы должна быть поделена между сотрудниками (потому и не могут быть пустые поля) и посчитана зарплата. Может тут вообще надо по другому делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 10:53 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Если часты явления, когда сотрудники в заказах имеют разные должности, то лучше в таблице заказов сделать и ID должности и ID сотрудника и на момент формирования заказа сохранять туда значения по текущей ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 13:22 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Не понял, так чтоли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 15:10 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
ByKiSНе понял, так чтоли? IMHO лучше сделать многие-ко-многим DutiesByOrders создаем ордер tblOrders определяем ответсвенность tblAssignments назначем ответственных tblEmployees ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 15:16 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
зоранее благодареньIMHO лучше сделать многие-ко-многим DutiesByOrdersКак многие ко многим? Заказ то один... Поясните, а то я теперь ещё больше не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 15:23 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
ByKiS зоранее благодареньIMHO лучше сделать многие-ко-многим DutiesByOrdersКак многие ко многим? Заказ то один... Поясните, а то я теперь ещё больше не понял. а исполнителей по заказу тоже всегда один? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 15:38 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
>Не понял, так чтоли? ИМХО гут. Еще уникальность duty_id + order_id. Ведь в данном заказе лишь один манагер, один консультант и т.д.? 2 Программист-Любитель В свете последних разъяснений история наверно не нужна - сотрудника не обязательно назначать на должность манагера чтобы он исполнял роль манагера в заказе. Хотя может с консультантами другая история. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 15:41 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Понятно, переименую. А вот наприрмер "OrdersBlindsAccessories" и "BlindAccessories" (справочник) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 19:01 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Можно пользоваться самим придуманными префиксами и суффиксами в именах таблиц. DIC_<ИмяСущности> - стандартный справочник, куда пользователю не приходится добавлять данные, например интервалы времени: день, неделя, месяц, квартал TBD_<ИмяСущности> - тоже справочник, но наполняемый пользователем. Например справчник должностей TAB_<ИмяСущности> - обычная таблица данных TCR_<ИмяПервойСущностиИмяВторойСущности> - хранение связи многие-ко-многим. ИмяПервойСущностиИмяВторойСущности вполне можно заменить на ИмяСвязиПоСмыслу SUM_<ИмяСущностиУточнениеКакСвернули> - промежуточные просуммированные (свернутые даннфе) PVT_<ИмяСущностиУточнениеКакТрансформировали> - тоже насчитаные и сохраненные перекрестные запросы. Суффикс History - <ИмяТаблицы>History - если храниться срез данных с датой фиксации среза. Также можно придерживаться стандартной системы именования полей. Чем больше таблиц в базе, тем больше вероятность что вы выработате какую-то свою систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 09:12 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительЧем больше таблиц в базе, тем больше вероятность что вы выработате какую-то свою систему. +1 самое главное - записать все сокращения и систему сокращений на бумажку и повесить над столом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 09:31 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
ModelR....А как организуется клиентская часть с такой схемой? Если не затруднит, глянеть на мой вопрос за стенкой . Может подскажите в каком направлении идти, а то что-то чем дальше - тем меньше я понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 09:40 |
|
||
|
Где держать данные?
|
|||
|---|---|---|---|
|
#18+
ByKiS ModelR....А как организуется клиентская часть с такой схемой? Вот скриншот одной популярной программы. Слева группы, справа элементы группы, внизу закладки с подробностями (связанными 1:M с элементом) про элемент. Достаточно удобно ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 13:28 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1544610]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 540ms |

| 0 / 0 |
