|
|
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Попробовала реализовать небольшую часть структуры БД (Oracle 10g) контрагентов. таблица contractor содержит в себе основные юридические данные о фирме (с типами полей еще буду разбираться, в поисках максимальной длины по юр. данным (если кто точно знает и подскажет- спасибо), скорее всего что то нужно перенести в number). contactor_region связывает таблицу contractor со справочником ОКАТО (1 contractor ко многим ОКАТО) и отображает регионы в которых осуществляет деятельность contractor. contractor_contact содержит список контактов (работников) с их координатами, и связана с таблицей contractor (1 contractor ко многим contractor_contact). В планах реализовать возможность синхронизации с контактами в Microsoft OutLook (добавлять в мою программу контактов из OutLook , или же в OutLook из моей программы) и возможно данный функционал потребует пересмтра структуры данной таблицы. contract_service, contract_encashment, contract_rent содержат набор уникальных характеристик (договора обслуживания, аренды, ...) и определяют критерии взаимодействия моей компании с contractor. У 1 contractor может быть несколько различных типов договоров с моей компанией. (количество таблиц= типам договоров и их количество больше 3х). P.S. в некоторых таблицах я использовала суррогатный ключ ID там где он казалось бы и не нужен - привыкла работать с суррогатными ключами: удобнее при осуществлении Insert/update/delete where id=:id. не уверена в своем подходе: общий справочних контрагентов с общими юр. данными и отдельные таблицы на каждый вид договора. (по логике (в большинстве случаев) в одном запросе будет участвовать только одна таблица договоров.) Интересует также правило наименования колонок, к примеру что более предпочтительно: juridical_name, trade_name, name или name_juridical, name_trade, name? (на мой взгляд 1 вариант имеет больше пользы когда много полей начинающихся на trade, juridical - человек работает с приставкой juridical и ему нужны поля только с ней и он выбирает из всплывающей подсказки данные поля, 2 вариант предпочтительнее когда человек не слишком хорошо знает структуру БД и ищет name, а всплывающая подсказка информирует его о том что есть различные типы name. Но возможно я ошибась) PowerDesigner открыла только сегодня, это мой первый опыт (попытка) спроектировать БД. Буду признательна если укажете на мои ошибки. Заранее признательна всем за помощь и конструктивную критику и дискуссию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2010, 20:54 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
ой уже сама ошибки нашла: в таблицах contract_service, contract_encashment, contract_rent поле id -PK и не хватает поля idk_contractor -FK на contractor. И еще маленький вопросик: имеет смысл выносить правовую форму организации в отдельное поле, или даже в справочник- кто по опыту может сказать какой из вариантов более предпочтителен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2010, 21:02 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
Расскажите, что и для чего проектируете. Для курсовой - нормально, для продакшн - никуда не годится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2010, 22:10 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
guest_20040621 даже не знаю: вообще для себя - практикуюсь, но необходимость в подобной подделки в конторе назрела: если удачно выйдет сдам в эксплуатацию (еще армик на не дружественном мне .Net писать, так же исключительно для собственного развития. использую данный проект для изучения недружественных мне технологий). Охотно принимаю любую конструктивную критику- в реале к сожалению нес кем посоветоваться (нет под рукой профессионалов Бд-строения-(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2010, 22:19 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
Не знаю, что и сказать, SunnyGirl. Похоже, мир перевернулся: девушка вечером второго января задает вопрос о проектировании баз данных. Причем, "для себя". Это... с одной стороны, достойно уважения. С другой - нельзя себя так не любить. Судя по суррогатным ключам, правильные понятия о проектировании есть. Плохо, что тема, которую вы выбрали, достаточно объемна. Если вы воспользуетесь поиском по форуму, то получите представление об основных проблемах, которые вам предстоит решать: мультиязычность, история изменений, контроль доступа, справочники, фрактальность. Есть смысл начать со справочников (тем более, что ваша первая таблица содержит ОКАТО). Проблема в том, что ОКАТО - это административно-территориальное деление, и вы не сможете "в лоб" использовать эту структуру для регистрации контрагентов, расположенных за пределами России. Даже если есть явное ограничение - контрагенты только из России - вы можете столкнуться с тем, что среди клиентов будут филиалы или представительства зарубежных компаний, и, возможно, некоторые задачи будет необходимо решать с головными лавками. О внешних кодах: следует различать их принадлежность (с учетом предыдущего абзаца или без оного). Вендор и назначение ИНН никак не связано с вендором и назначением БИК. Для того, чтобы понять, стоит ли регистрировать коды в одной и той же таблице, сопоставьте их юридическому лицу: если код однозначно связан с юридическим лицом и связь эта неизменна на протяжении всего существования юридического лица, можете смело регистрировать их в той же таблице. На всякий случай: я таких кодов не знаю. Названия и организационно-правовые формы. Если уверены, что в базе данных будут только резиденты (т. е. если считаете, что два предыдущих абзаца я написал напрасно), можно воспользоваться соответствующим справочником организационно-правовых форм. Если выберете этот вариант, не забудьте, что они имеют свойство меняться. Особенности регистрации названий лавок (с учетом локализации или без нее) традиционны и обсуждались часто. Если у вас нет возможности строгого контроля данных (например, соответствия названия учредительным документам), используйте упрощенную запись названий параллельно с основной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2010, 23:29 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
guest_20040621девушка вечером второго января задает вопрос о проектировании баз данных. ... С другой - нельзя себя так не любить.Из-за проблем с визой не смогла улететь с друзьями кататься в flimslaaks-е, вот вечерами завистливо просматриваю фотки, которые мне регулярно присылают (дразнятся- приедут, тоже мучить буду). А встреча НГ в незнакомой компании в клубе рай- надолго отбило желание клубится. (да и сорочаны сейчас превращен в быдло пати - никакого удовольствия находится: приехала, окинула взглядом и уехала- только зря промоталась ..) guest_20040621которые вам предстоит решать: мультиязычность, история изменений, контроль доступа, справочники мультиязычность - нет такой проблемы. история изменений - update user_id на любое изменение и в таблицу истории по триггеру. контроль доступа - 3х звенка- на уровне серверной логике, + все работы с данными через процедуры, где возможно реализация проверки ( но то что свой велосипед изобретать придется - в курсе: сейчас ограничение либо только смотреть/либо все) справочники - все что опирается на законы и задокументированы и регламентировано - буду тянуть из правовых баз. Ну а с остальными: бить по рукам -)) guest_20040621стоит ли регистрировать коды в одной и той же таблице, сопоставьте их юридическому лицу: если код однозначно связан с юридическим лицом и связь эта неизменна на протяжении всего существования юридического лица, можете смело регистрировать их в той же таблице. вы правы, подумаю о разбивки таблицы contractor на contractor_name (содержащие товарный знак, имя.... + через которую останется связь со всеми остальными таблицами в неизменной, пока, форме) и на contractoк_ juridical. Осталось поразмыслить и придумать механизм ведения истории изменений (переносить в таблицу истории с удалением записи в основной или выставлять период действия данных) юридических данных у компании(вполне возможно что у одной торговой марки будет несколько юридичиских организаций) guest_20040621Если у вас нет возможности строгого контроля данных (например, соответствия названия учредительным документам), используйте упрощенную запись названий параллельно с основной. Сегодня днем гляну 1С - посмотрю как они реализовали данный механизм- может подчеркну для себя что то интересное и полезное-))) guest_20040621 - огромное спасибо за дельные советы, подсказки и совершенно оправданную критику в мой адрес ( люблю разумную критику в свой адрес- помогает бороться с изъянами ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2010, 01:40 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
> мультиязычность - нет такой проблемы. Про суслика рассказывать не буду, это пошло, но галку себе поставьте. Проблема будет. > возможно что у одной торговой марки будет несколько юридичиских организаций А торговые марки откуда? Вы же вроде говорили только про юрлица? > Сегодня днем гляну 1С Напрасно потратите время. > за дельные советы Это были... хм... затравки для сомнений. ;) Ваше описание задачи слишком расплывчато. Понятно, что предела совершенству нет, но и ненужный оверхед - напрасная трата времени. Критерий качества любой структуры данных у меня один: сохранение возможности ее развития без радикальных изменений. Если пользуетесь внешними источниками, хорошим тоном будет описывать их явным образом, если добавляете данные из классификатора (например), будет правильным предусмотреть необходимость регулярной синхронизации соответствующего справочника с первоисточником с регистрацией изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2010, 02:24 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
В реальности часто появляется необходимость иметь/хранить информацию об отношениях юрлиц в порядке подчиненности. Холдинги, бранчи, филиалы, головные компании и пр. Причем все это находится в динамике и меняется время от времени - банки и компании поглощают друг друга, сливаются, открывают новые отделения. Что качается контактов - здесь тоже может быть важна история. Перемещение по должностям, переход в другую компанию (с клиентской базой ). Если будете формировать исходящие текстовые документы вам понадобиться такая мелочь как склонение по падежам. На фамилии людей можно найти готовый код, неплохо справляющийся с задачей, названия организаций в падежах придется хранить. Подумайте, имеет ли смысл сразу закладываться и на такие кейсы. По крайней мере, если не будете реализовывать в первой очереди, постарайтесь оставить побольше возможностей на развитие в этих направлениях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2010, 20:29 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
guest_20040621Похоже, мир перевернулся: девушка вечером второго января задает вопрос о проектировании баз данных. Причем, "для себя"+1 SunnyGirl P.S. в некоторых таблицах я использовала суррогатный ключ ID там где он казалось бы и не нужен - привыкла работать с суррогатными ключами: удобнее при осуществлении Insert/update/delete where id=:id.Для таких таблиц типа свойства объекта Х я задаю составной первичный ключ типа xID, ID и стало быть DML будет where id=:id and xID=:xID. SunnyGirl не уверена в своем подходе: общий справочних контрагентов с общими юр. данными и отдельные таблицы на каждый вид договора. (по логике (в большинстве случаев) в одном запросе будет участвовать только одна таблица договоров.)Недавно был топик про наследование на примере грузовых и легковых автомобилей с общими полями. Если есть требования уникальности(типа ИНН) или поиска(типа по имени) необходима таблица с общими полями. SunnyGirl Интересует также правило наименования колонокТо есть что лучше префиксы или суффиксы. Поверьте, это проблема типа каким должен быть подоконник - вровень со стенкой или выпирать. Лишь бы он не вровень выпирал (с) Равшан. SunnyGirl контроль доступа - 3х звенка- на уровне серверной логике, + все работы с данными через процедуры, где возможно реализация проверки ( но то что свой велосипед изобретать придется - в курсе: сейчас ограничение либо только смотреть/либо все) Просто примите как факт что база данных будет использоватся не только вашей серверной логикой. программы приходят и уходят, а данные остаются. SunnyGirl Осталось поразмыслить и придумать механизм ведения истории изменений (переносить в таблицу истории с удалением записи в основной или выставлять период действия данныхПридумывать ничего не надо, все уже придумано до вас. Если исторические данные нужны сравнительно редко то их лучше помещать в доп.таблицу с полями dfrom dto. Если к каждому запросу требуется дата (а тариф для абонента такого типа в этом году был ...) тогда поля dfrom dto добавляются в основную таблицу. guest_20040621> Сегодня днем гляну 1С Напрасно потратите время.Еще один взгляд на то как можно решать проблему лишним не будет. Другое дело что надо самостоятельно понять почему был выбран данный подход, какие у него достоинства/недостатки. Рекомендую на первом этапе не пытаться предугадать что еще может поменятся, а просто реализовать "как есть". Затем начать моделировать ситуацию - а что если у нас появится новый XXX или выйдет постановление о YYY или потребуется синхронизировать с ZZZ, какие изменения в базу данных и приложение придется вносить. А если и не появится, не выйдет, и не потребуется сколько будет стоить заранее реализовать такую возможность. Еще один немаловажный фактор - простота . Начинающие любят хитрые гибкие навороченные решения. guest_20040621Критерий качества любой структуры данных у меня один: сохранение возможности ее развития без радикальных измененийЯ для себя вывел другой критерий - баланс или гармония. Некрасивые самолеты не летают (с) А. Туполев ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2010, 20:34 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
> Еще один взгляд на то как можно решать проблему лишним не будет. Перелопатить гору дерьма в надежде найти жемчужину? > баланс или гармония. Это просто - от легкой гармонии на фоне фенотропила до абсолютной посредством [отредактировано цензурой]. А модель без внутренних ограничений - это сложно. Одна смешная ошибка - и вместо рефакторинга имеете перманентный геморрой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 01:09 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
SunnyGirl Сегодня днем гляну 1С - посмотрю как они реализовали данный механизм- может подчеркну для себя что то интересное и полезное-))) бОльшую часть творчества 1С надо запихивать в "так делать не надо" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 18:42 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
Контактов может быть много - лучше отдельно Contacts (type, data) - ведь может кроме мыла и факса еще что-нибудь понадобиться... Также лучше сразу учитывать, что одна организация может работать через разные юридические лица (при этом, баланс, скажем, у них общий) PS. Админ в клубе рай... Мои соболезнования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 18:58 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
Sevickлучше отдельно Contacts (type, data) - ведь может кроме мыла и факса еще что-нибудь понадобиться... учту, спасибо. но справочник контактов буду делать чуть позже, после того как разберусь в структуре данных контактов OutLook (хочу реализовывать синхронизацию) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 21:03 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
Sevick Также лучше сразу учитывать, что одна организация может работать через разные юридические лица (при этом, баланс, скажем, у них общий) Вот это более важно, ибо просто ошибка. TradeName может принадлежать много INN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2010, 00:13 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
Sevick, можно добавить, что и счетов в разных банках у конторы может быть много. Как бы я не знаю зачем вам это надо, но эти данные можно получить непосредственно из договоров. И как правило только там они наиболее достоверны. Вообще говоря, первичный учёт ИНН ведёт налоговая, первичный учёт банковских счетов ведут банки. Сами организации заводят договора. В договоре прописывают юридические и платёжные реквизиты организации. Если вдруг окажется, что организация (или её директор, или ...) уже имеет другие договора с вашей конторой и это существенно для бизнеса, можно объдинить эти договора в персональное дело этой организации (или её директор, или ...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2010, 01:00 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
> справочник контактов буду делать чуть позже, после того как разберусь в структуре данных контактов OutLook Насколько я знаю, ни один почтовый клиент не дружит с историей изменений, так что придется выбирать, что важнее. Не знаю, для какой цели вам нужна синхронизация, но путь вы выбрали самый сложный из имеющихся. Есть куча open source софта с готовой синхронизацией с Evolution, например. С веб-интерфейсом, контактами, календарями и пр. хозяйством. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2010, 01:35 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
Попробовал поставить этот Evaluation. Не для новичков занятие. Даже не запустился после инсталляции. Есть какой нибудь форум для ламеров, которым нужно познакомится с результатом, а не с процессом инсталляции ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2010, 22:43 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
> Попробовал поставить этот Evaluation Попробуйте не делать по четыре ошибки в слове "пиво". Evolution. > Не для новичков занятие. Во всех известных мне дистрибутивах он есть в стандартной поставке. Если есть вопросы, есть смысл начать искать ответы на projects.gnome.org/evolution/ или профильных форумах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2010, 23:31 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
E.. - это для Вас свершившийся шаг Эволюции, а для меня это неудавшаяся попытка Оценки. Я скачивал Вин версию, т.к. изучение Линукса не входило в жизненные планы. Знаю дистрибьютора GroupWise, может он даст внятную оценку E... на уровне ламера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2010, 11:34 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
> неудавшаяся попытка Оценки. Начните с любого юзер-френдли дистрибутива (например, Ubuntu). Вы удивитесь, насколько просто и удобно работать с Linux. Серьезно. Evolution - это не обязательно конечная цель. Уже вышел Nexus One, так что все будет быстро меняться (не в России, к сожалению). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2010, 14:44 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
guest_20040621Уже вышел Nexus One, так что все будет быстро меняться Новость у гугла не очень удалась, имхо. Wired NewsПоздравляю, Google! Вы истратили неназванные миллионы долларов на то, чтобы произвести очередной iPhone, только двумя годами позже (чем Apple) 1. Новый смартфон оснащен процессором Qualcomm с частотой 1 гигагерц? 2. Nexus One станет первым мобильным телефоном, который компания Google разработала сама? 3. Это устройство HTC работающее на процессоре Snapdragon, последняя версия операционной системы Android? Так что же это такое? Очередной пузырь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2010, 14:57 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
авторТак что же это такое? Очередной пузырь? а я себе уже такой заказала на ebay за 700 с небольшим $ А то iPhone уж больно попсовый стал ... (на и вроде не отличишь старую модель за 200 баксов от новой за 1000) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2010, 15:04 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
SunnyGirlавторТак что же это такое? Очередной пузырь? а я себе уже такой заказала на ebay за 700 с небольшим $ А то iPhone уж больно попсовый стал ... (на и вроде не отличишь старую модель за 200 баксов от новой за 1000) я ноутбуками пользуюсь, для звонков телефоном, а для фото - фотокамерой. Старомодный наверное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2010, 15:16 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
Модератор: Господа, по-моему обсуждение используемых коммуникаторов не является профильным для этого форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2010, 17:11 |
|
||
|
Контрагенты (проектировка структуры БД)
|
|||
|---|---|---|---|
|
#18+
если ещё актуально... по моему подход в корне не верен, приводим к нормальным формам. обязательно первым делом исключить расчетные счета в отдельную таблицу, там связь один ко многим. все правовые формы и прочие - в справочники! лучше накачать общероссийских классификаторов(ОКАТО, ОКОПФ, ОКОГУ и тд их дофига) и вести их, а не придумывать свой велосипед. на коды(ИНН, КПП и прочие) повесить тригеры на ввод новых по проверкам контрольных чисел(алгоритмы есть в инете). У меня контрагенты окружены где-то 30-ю справочниками! так что лучше выносить как можно больше данных в справочники. И ещё. Если Вы собираетесь записывать туда уже существующих контрагентов(успех зависит от количества) то лучше их чистить и обрабатывать сразу. если интересно могу поискать скрипты. Кроме контрагентов есть ещё справочники какие(МТР, оборудование, договоры)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 21:52 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36406370&tid=1542896]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
199ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 509ms |

| 0 / 0 |
