|
|
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
В общем решил как по букве Науки понормализовывать все шо ни попадет под руку - и вот вышло: -Физ-лицо -Представители физлица -банковские счета Физлица -ЧПФЛ -Представители ЧПФЛ -банковские счета ЧПФЛ -Юрлицо -Представители Юрлица -банковские счета Юрлица правда создал еще -Контрагент (тута их денормализовал в кучу :) ) типерь надо составить договор: в котором должны участвовать Контраген, его Представитель и Банковские реквизиты утут и уперся - шо типерь все взад денормализовывать по типу Контрагент? -> ПредставителиКонтрагента, БанковскиеСчетаКонтрАгента ????? Как быть или это я зря начитался всяких букварей??????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 23:47:31 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spВ общем решил как по букве Науки понормализовывать все шо ни попадет под руку - и вот вышло: А почему не упростить всё в одну форму -Физ-лицо -Представители физлица -банковские счета Физлица -ЧПФЛ -Представители ЧПФЛ -банковские счета ЧПФЛ -Юрлицо -Представители Юрлица -банковские счета Юрлица **************** - Лицо - Вид Лица (Физ, ЧПФЛ, Юр) - Представитель Лица - Банковские реквизиты Лица .... Где нормализация то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 23:57:15 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Mr Marmelad - Лицо - Вид Лица (Физ, ЧПФЛ, Юр) - Представитель Лица - Банковские реквизиты Лица Ну да ещё теперь вид будет КонтрАгент: Вид ЛицаЮрЛицо ФизЛицо ЧПФЛ (простите не знаю что это такое) КонтрАгент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 00:06:04 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Mr MarmeladА почему не упростить всё в одну форму - Лицо - Вид Лица (Физ, ЧПФЛ, Юр) - Представитель Лица - Банковские реквизиты Лица .... Где нормализация то? Низзя - у них аттрибуты разные и куча довесов разных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 00:13:26 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Mr Marmelad ЧПФЛ (простите не знаю что это такое) , Частный Предприниматель-Физическое Лицо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 00:15:11 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp Низзя - у них аттрибуты разные и куча довесов разных Ну единственный различительный аттрибут (на Американизме) бдет только: SSN (для частного лица налогово - зависимого своим Такс Номером) EIN (Employee Iditification Number - для юридического лица) По Американским стандартам эти номера конфедициальны. Должны быть забанены и введены посредники - системно генерированые) Значит этот системный номер и Вид Лица - и будет первичным Ключом. Код представителя - Внешный Ключ. Банковский счёт (Код Банка + номер счёта) - ещё один Внешний ключ. Не вижу больше никаких особых различий в аттрибутике. Ну будет там название предприятия / имя человека... Ну и что И там и там должен быть Человек к которому обращаться за подписью. назовите ещё различия? плииииз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 00:31:31 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Mr Marmeladsp Низзя - у них аттрибуты разные и куча довесов разных Ну единственный различительный аттрибут (на Американизме) бдет только: SSN (для частного лица налогово - зависимого своим Такс Номером) EIN (Employee Iditification Number - для юридического лица) По Американским стандартам эти номера конфедициальны. Должны быть забанены и введены посредники - системно генерированые) Значит этот системный номер и Вид Лица - и будет первичным Ключом. Код представителя - Внешный Ключ. Банковский счёт (Код Банка + номер счёта) - ещё один Внешний ключ. Не вижу больше никаких особых различий в аттрибутике. Ну будет там название предприятия / имя человека... Ну и что И там и там должен быть Человек к которому обращаться за подписью. назовите ещё различия? плииииз. Ну это Вы зря не видите - там куча спецыфичных для данных сущностей аттрибутов - иначе бы не было смысла нормализовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 00:40:27 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Mr Marmeladsp Низзя - у них аттрибуты разные и куча довесов разных Ну единственный различительный аттрибут (на Американизме) бдет только: SSN (для частного лица налогово - зависимого своим Такс Номером) EIN (Employee Iditification Number - для юридического лица) По Американским стандартам эти номера конфедициальны. Должны быть забанены и введены посредники - системно генерированые) Значит этот системный номер и Вид Лица - и будет первичным Ключом. Код представителя - Внешный Ключ. Банковский счёт (Код Банка + номер счёта) - ещё один Внешний ключ. Не вижу больше никаких особых различий в аттрибутике. Ну будет там название предприятия / имя человека... Ну и что И там и там должен быть Человек к которому обращаться за подписью. назовите ещё различия? плииииз. лицо -------------- PersonID PersonSalutationID F I O SexID BirthDate Residency INN +++++ -внутренние паспорта -зарубежные -водительские права -пенсионные удостоверения -фактические адреса проживания -контактные телефоны -емайлы -instant messengers -уполномоченные лица -банковские счета юрлицо ---------- EnterpriseID ParentEnterpriseID EDRPOU ShortTitle FullTitle OrgFormID AddressID SiteURL ++++++++++++ -фактические адреса проживания -контактные телефоны -емайлы -instant messengers -уполномоченные лица -банковские счета -безбалансовые подразделения -балансовые подразделения чпфл ------- PrivateEntrepreneurID PersonID INN Series No ActivityCategoryID AddressID IssuedBy SiteURL ++++++++++ -фактические адреса проживания -контактные телефоны -емайлы -instant messengers -уполномоченные лица -банковские счета -безбалансовые подразделения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 00:47:22 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Да я пытаюсь хоть одну систему вспомнить где бы мы объекты трудовой (бизнес) деятельности - читай - стороны контрактов - разводили в три (или более) сущности - ни одной не припомню. Все в одной сущности и потом договор сводится просто к формулировке ЗАКАЗЧИК (объект А со всеми своими аттрибутами) вступает в отношения с ИСПОЛНИТЕЛЕМ (объект Б со всеми такими же аттрибутами) при посредстве КОНТРАГЕНТА (объект В со всеми такими же аттрибутами) для выполнения ЗАКАЗА (Проекта и так далее) СРОК - ляляля (Начало Конец) УСЛОВИЯ - ляляля (пп1 ...пп125) Подписи сторон... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 00:52:37 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Ой а что за бизнес то у Вас... Colleague... Выглядит как контрразведка близко к ФБР УДОСТОВЕРЕНИЕ ЛИЧНОСТИ РУКОВОДИТЕЛЯ (Ответственного Лица) -внутренние паспорта -зарубежные -водительские права -пенсионные удостоверения АДРЕСНАЯ -фактические адреса проживания -контактные телефоны -емайлы -instant messengers [quote:]КОД ОБРАТНЫЙ -уполномоченные лица[/quote] :БАНКОВСКИЕ -банковские счета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 01:00:56 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp Ну это Вы зря не видите - там куча спецыфичных для данных сущностей аттрибутов - иначе бы не было смысла нормализовать Так вот нормализации как раз я у Вас и не увидел. Сплошная ДЕ-Нормализация. Я не говорю Коллега что это плохо. Просто согласитесь - повторение той же сущности (участник бизнеса) в трёх и более таблицах - будет называться ДЕ-НОРМАЛИЗАЦИЕЙ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 01:08:41 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
2 Marmelad, советы в стиле Селко хороши только в теории.SSN не может быть первичным ключем, он не уникален. Нормализация нужна в разумных пределах.Сводить все одну таблицу в данном случае я бы не стал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 10:36:49 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp wrote: > Низзя - у них аттрибуты разные и куча довесов разных Надо наследование делать. Вывести общее, от него наследовать частное. Юрлицо, физлицо, ИЧП - у них должен быть общий предок, субъект хоздеятельности (назвать можно по любому). вот его и в договоры можно совать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 10:46:37 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spутут и уперся - шо типерь все взад денормализовывать по типу Контрагент? -> ПредставителиКонтрагента, БанковскиеСчетаКонтрАгента ?????С чего вы взяли, что это денормализованное представление? Просто надо специфичные атрибуты для каждого типа контрагента - вынести в отдельную таблицу. тут такая структура уже обсуждалась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 11:07:48 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Mr Marmeladsp Ну это Вы зря не видите - там куча спецыфичных для данных сущностей аттрибутов - иначе бы не было смысла нормализовать Так вот нормализации как раз я у Вас и не увидел. Сплошная ДЕ-Нормализация. Я не говорю Коллега что это плохо. Просто согласитесь - повторение той же сущности (участник бизнеса) в трёх и более таблицах - будет называться ДЕ-НОРМАЛИЗАЦИЕЙ Насколько я понимаю нормализацию - это разнесение аттрибутов, относящихся к разным сущностям по разным талицам - где же у меня денормализация??? даже контактные телефоны - это не одно и то же у них у всех, т.к. назначение у них в принципе разное: на предприятии это - секретарь, рабочий, факс, а для лица - домашний, ну и т.д. И как Вы себе представляете единую таблицу с аттрибутами и ФизЛица И ЮрЛица и ЧПФЛ? - или необходимо как в той пьесе - тут мы не читаем, тут мы рыбу заворачивали, а тут ваще ничего не надо!? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 11:23:24 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Mr MarmeladОй а что за бизнес то у Вас... Colleague... Выглядит как контрразведка близко к ФБР не знаю как у Вас, но для страховой компании эти данные все нужны - и если мы работаем круче чем ФБР - то в жоп... ту ФБР! ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 11:24:52 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
MasterZiv sp wrote: > Низзя - у них аттрибуты разные и куча довесов разных Надо наследование делать. Вывести общее, от него наследовать частное. Юрлицо, физлицо, ИЧП - у них должен быть общий предок, субъект хоздеятельности (назвать можно по любому). вот его и в договоры можно совать. Я так и сделал - у меня есть 2 сущности еще: Контрагент --------------- PersonID PrivateEntrepreneurID EnterpriseID СубъектХозДеятельности ---------------------------- EnterpriseID PrivateEntrepreneurID но в таком случае все ихние множественные аттрибуты получаетца тоже надо делать через наследование?? ТелефоныКонтрагента, ПредставителиКонтрагента, Банковские реквизитыКонтрагента, Структурные подразделенияКонтрАгента ?????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 11:29:29 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Belyspутут и уперся - шо типерь все взад денормализовывать по типу Контрагент? -> ПредставителиКонтрагента, БанковскиеСчетаКонтрАгента ?????С чего вы взяли, что это денормализованное представление? Просто надо специфичные атрибуты для каждого типа контрагента - вынести в отдельную таблицу. тут такая структура уже обсуждалась. блин ну сколько уже можно говорить на данном форуме что для EAV(который там обсуждаецца) нужен уже готовый движок - иначе это будет геморрой на всю оставшуюся жизнь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 11:32:30 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Belyspутут и уперся - шо типерь все взад денормализовывать по типу Контрагент? -> ПредставителиКонтрагента, БанковскиеСчетаКонтрАгента ?????С чего вы взяли, что это денормализованное представление? Просто надо специфичные атрибуты для каждого типа контрагента - вынести в отдельную таблицу. тут такая структура уже обсуждалась. кстати там /topic/480889&pg=3 есть схемка в которой мои сущности и выделены Лицо, Компания и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 11:41:07 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
про EAV речь вообще не идет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 11:43:28 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp, да еще один тезис забыл в некоторых договорах должны участвовать разные сучности - в одних только физлица в других только СубъектыХозДеятельности, в третьих только Предприятия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 11:52:18 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
iscrafmпро EAV речь вообще не идет. ну как же там не идет - там обсуждается единый ObjectID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 11:52:58 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Belyspутут и уперся - шо типерь все взад денормализовывать по типу Контрагент? -> ПредставителиКонтрагента, БанковскиеСчетаКонтрАгента ?????С чего вы взяли, что это денормализованное представление? Просто надо специфичные атрибуты для каждого типа контрагента - вынести в отдельную таблицу. тут такая структура уже обсуждалась. и тут возникает вопрос: как я этого гибрида на клиенте должен буду отображать??? утут читаем, утут не читаем - это от другой сучности, утут ваще не смотрите пока!?? так у меня есть Предприятие - на клиенте есть объект, соответствующий этой сучности с конечным и заранее известным набором свойств - его можно однозначно отобразить и обработать ввод данных а в этой схеме как - если допустим структурные подразделения относяцца только к СХД, а самостоятельные(балансовые) подразделения исключительно только к Предприятиям Как в единой той структуре контролировать эти ограничения? как их отображать/неотображать на клиенте???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 12:01:30 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Mr MarmeladДа я пытаюсь хоть одну систему вспомнить где бы мы объекты трудовой (бизнес) деятельности - читай - стороны контрактов - разводили в три (или более) сущности - ни одной не припомню. Все в одной сущности и потом договор сводится просто к формулировке ЗАКАЗЧИК (объект А со всеми своими аттрибутами) вступает в отношения с ИСПОЛНИТЕЛЕМ (объект Б со всеми такими же аттрибутами) при посредстве КОНТРАГЕНТА (объект В со всеми такими же аттрибутами) для выполнения ЗАКАЗА (Проекта и так далее) СРОК - ляляля (Начало Конец) УСЛОВИЯ - ляляля (пп1 ...пп125) Подписи сторон... ну я такое видел в 1С - там пишецца Наименование, а подним понимаецца и название Предприятия и Название ЧП и ФИО !)) Правильно я понял Вашу мысль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 13:19:54 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spMr Marmeladsp Ну это Вы зря не видите - там куча спецыфичных для данных сущностей аттрибутов - иначе бы не было смысла нормализовать Так вот нормализации как раз я у Вас и не увидел. Сплошная ДЕ-Нормализация. Я не говорю Коллега что это плохо. Просто согласитесь - повторение той же сущности (участник бизнеса) в трёх и более таблицах - будет называться ДЕ-НОРМАЛИЗАЦИЕЙ Насколько я понимаю нормализацию - это разнесение аттрибутов, относящихся к разным сущностям по разным талицам - где же у меня денормализация??? Неправильно понимаешь. Нормализация, это устранение аномалий обновления данных при МИНИМАЛЬНОМ числе отношений. А ты тут понахреначил... в 3 раза больше чем нужно. То чем ты занимаешься, это выделение атрибутов необязательных для заполнения в отдельные таблицы. Приём относящийся сугубо к реализации БД, который по необходимости применялся для экономии места к прямоугольным таблицам-файлам, в которых размер полей и записей фиксированный. В современных БД пустые поля почти (а иногда и совсем) не занимают места, и экономить тут нечего. sp даже контактные телефоны - это не одно и то же у них у всех, т.к. назначение у них в принципе разное: на предприятии это - секретарь, рабочий, факс, а для лица - домашний, ну и т.д. И как Вы себе представляете единую таблицу с аттрибутами и ФизЛица И ЮрЛица и ЧПФЛ? - или необходимо как в той пьесе - тут мы не читаем, тут мы рыбу заворачивали, а тут ваще ничего не надо!? ) А что тут представлять то. Просто таблица со всеми этими атрибутами. Так СУБД Оракл поступает, когда в одной таблице должны храниться разнотипные объекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 13:46:56 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
expla Неправильно понимаешь. Нормализация, это устранение аномалий обновления данных при МИНИМАЛЬНОМ числе отношений. А ты тут понахреначил... в 3 раза больше чем нужно. То чем ты занимаешься, это выделение атрибутов необязательных для заполнения в отдельные таблицы. Приём относящийся сугубо к реализации БД, который по необходимости применялся для экономии места к прямоугольным таблицам-файлам, в которых размер полей и записей фиксированный. В современных БД пустые поля почти (а иногда и совсем) не занимают места, и экономить тут нечего. sp даже контактные телефоны - это не одно и то же у них у всех, т.к. назначение у них в принципе разное: на предприятии это - секретарь, рабочий, факс, а для лица - домашний, ну и т.д. И как Вы себе представляете единую таблицу с аттрибутами и ФизЛица И ЮрЛица и ЧПФЛ? - или необходимо как в той пьесе - тут мы не читаем, тут мы рыбу заворачивали, а тут ваще ничего не надо!? ) А что тут представлять то. Просто таблица со всеми этими атрибутами. Так СУБД Оракл поступает, когда в одной таблице должны храниться разнотипные объекты. Да у Вас просто каща и в базе в голове тогда получицца!!!!!!!!! тогда для всей базы нужна одна таблица - и туда все напихать, а кто таблички тут рисует тот не правильно нормализацию понимает!!!!!!!!! :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 14:15:40 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp Да у Вас просто каща и в базе в голове тогда получицца!!!!!!!!! тогда для всей базы нужна одна таблица - и туда все напихать, а кто таблички тут рисует тот не правильно нормализацию понимает!!!!!!!!! :)) 1. С одной таблицей можно обойтись только в предельно простом случае. Если случай чуть сложнее, наверняка потребуется устранить аномалии обновления данных, вот тогда и придётся выполнять вертикальную декомпозицию отношений, с целью их нормализации. Короче, "не следует множить сущности без необходимости" (Occam). 2. Я не говорю, что хранение разнотипных объектов в одной таблице, это просто как 0. Иначе бы Оракл не стал делать объектную опцию для своей СУБД. Но это вполне нормальный приём, который применяет даже гигант индустрии Оракл. Во всяком случае в реляционной БД, заводить отдельную таблицу для объектов каждого типа и ещё одну таблицу для их общих атрибутов, унаследованных от базового типа, сложнее, чем рулить одной таблицей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 14:34:00 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
[quot expla2. Я не говорю, что хранение разнотипных объектов в одной таблице, это просто как 0. Иначе бы Оракл не стал делать объектную опцию для своей СУБД. Но это вполне нормальный приём, который применяет даже гигант индустрии Оракл. Во всяком случае в реляционной БД, заводить отдельную таблицу для объектов каждого типа и ещё одну таблицу для их общих атрибутов, унаследованных от базового типа, сложнее, чем рулить одной таблицей.[/quot] Вы можете без теоретических выкладок на данном простом примере проиллюстрировать Вашу мысль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 14:35:54 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
авторЯ не говорю, что хранение разнотипных объектов в одной таблице, это просто как 0. Иначе бы Оракл не стал делать объектную опцию для своей СУБД. Но это вполне нормальный приём, который применяет даже гигант индустрии Оракл. Да, шуму было много, но и только. автор Во всяком случае в реляционной БД, заводить отдельную таблицу для объектов каждого типа и ещё одну таблицу для их общих атрибутов, унаследованных от базового типа, сложнее, чем рулить одной таблицей. Весьма спорное утверждение.Здесь читаем, здесь не читаем, а здесь я рыбу заворачивал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 14:48:50 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spВы можете без теоретических выкладок на данном простом примере проиллюстрировать Вашу мысль? Имеем базовый тип "Лицо" и два его подтипа Физ_Лицо и Юр_Лицо. Код: plaintext 1. 2. 3. 4. Типы Физ_Лицо и Юр_Лицо наследуют атрибуты типа Лицо и добавляют свои специализированные атрибуты. В ORСУБД можем создать таблицу для хранения всех подтипов Лицо: Код: plaintext В реляционной СУБД можем создать таблицу для хранения всех подтипов Лицо: Код: plaintext 1. 2. 3. 4. 5. 6. Но можно и так. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ИМХО, Obj_ЛИЦА и ВСЕ_Лица проще в управлении. Для изменения данных достаточно одного SQL запроса, для выборки не нужен join, тогда как с триадой Лица,Физ_Лица,ЮР_Лица нужно как минимум два SQL запроса и часто будет нужен join. На счёт рыбы, так это вопрос стандартов именования и документирования полей. Сделайте имена полей "говорящими", и никаких проблем не будет. После того как приложения БД разработаны, имена полей уже никого не будут интересовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 15:40:21 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
expla Но можно и так. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. но ведь и при такой реализации (которую я и использовал, но не до конца) просле того как приложение запущено уже неважно что там больше joinov ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 15:56:37 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
explaВо всяком случае в реляционной БД, заводить отдельную таблицу для объектов каждого типа и ещё одну таблицу для их общих атрибутов, унаследованных от базового типа, сложнее, чем рулить одной таблицей. Вот уж действительно, не следует умножать сущностей без необходимости. У Контрагента есть Представитель. У Контрагента есть Банковские реквизиты (не у Представителя - потому что у него их может быть много). Лучше бы этого Контрагента назвать Стороной по договору. Представитель относится к определенному типу, у каждого типа свои атрибуты. Примерно так. Ничего никуда наследовать не надо, потом один геморрой. Это все ИМХО, а все желающие могут понаступать на грабли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 16:14:20 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
expla Но можно и так. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. По ситуации. Я бы <атрибуты типа Лицо> лучше выкинул. Да Вы сами подумайте, какие там атрибуты могут быть :) ИНН и т.п.? Лучше в раздельных таблицах это держать, чем в атрибутах Лица. В крайнем случае создать еще таблицу Налогоплательщик и внести туда :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 16:18:42 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Если только интересуют физики и юрики, сделать четные и нечетные ID без всяких лиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 16:41:59 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spно ведь и при такой реализации (которую я и использовал, но не до конца) просле того как приложение запущено уже неважно что там больше joinov Лишие join'ы сильно влияют на производительность системы. Но выбор реализации конструкции наследования типов выходит за рамки данного форума. Нужно смотреть на конкретную СУБД и другие технические показатели, как то объём данных, методы доступа к таблицам, требования к производительности и д.р.. Ведь можно забить на ссылочную целостность и сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. где ID заполнять из общего счётчика. И т.д. и т.п. На самом деле ссылка из Договора на Лицо не есть лучшее решение. По сути, эта ссылка вычисляемая, если непосредственно в Договоре указаны реквизиты сторон. Если ограничиться только ссылками, такое вычисление должен будет выполнять оператор, который заводит договор. Если в договор включить реквизиты сторон, то такое вычисление может сделать машина и сохранить результат для дальнейшего использования. При изменении даных Лица, машина сможет проконтролировать и пересчитать ссылки, сообщить о том, что в договор нужно внести изменения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 16:46:18 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SeVa2 Marmelad, советы в стиле Селко хороши только в теории.SSN не может быть первичным ключем, он не уникален????? . Нормализация нужна в разумных пределах.(!) Сводить все одну таблицу в данном случае я бы не стал Абсолютно согласен с Вами Коллега по теме Нормализация. Всегда нужна разумная середина. Не соглашусь по теме SSN - по условию этот номер уникален. Если бы можно было себе представить себе такую "неуникальность". Нет - как Вы себе представляете уплату налогов на один и тот же номер двумя разными лицами... Я бы конечно не возражал если бы такое было возможно. Первым бы стоЯл в очереди за "развенчание" такого случая. Но... Налоговая инспекция Соединённых Штатов имеет пожалуй один из наилучших IT в мире. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 16:47:43 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Mr MarmeladНе соглашусь по теме SSN - по условию этот номер уникален. Использование внешних идентификаторов внутри системы не есть хорошая идея. Я не сомневаюсь в уникальности SSN внутри системы налоговой службы США, однако вне этой системы значение SSN может быть временно неизвестно (чувак забыл карточку дома), не определено для конкретного лица (например, он россиянин и не стоит на учёте в налоговой службе США), когда-то во время ввода данных совсем другого человека оператор ошибся и теперь система орёт, что вновь вводимый SSN принадлежит другому лицу, и т.д. Практически, для задач идентификации внешних объектов должны использоваться несколько атрибутов в разных комбинациях, любой из которых может быть неизвестен или содержать ошибки. Например для ФИз лица, это могут быть паспортные данные, включая места регистрации, анкетные данные, данные водительского удостверения, биометрические даные и т.д. Для банков очень важно идентифицировать клиентов как можно точнее, для розничного магазина данные клиента вообще не интересны, если он платит кэшем, если картой, то могут проверить паспорт, подпись, попросить ввести PIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 17:08:04 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spну я такое видел в 1С - там пишецца Наименование, а подним понимаецца и название Предприятия и Название ЧП и ФИО !)) Правильно я понял Вашу мысль? Ну если уж глубоко капать по НОРМАЛИЗАЦИИ то - сначала я бы сделал (здесь уже предлагалось) Сущность "Объект Хоз Деятельности" Там бы определил все Деловые аттрибуты - "Наименование" ( может быть нормализовано глубже - 1-N у предприятия могут быть много имён) "Вид Предприятия" "Руководители" - отношения к "Персональным" .... Потом бы сделал "В Лице" - Персональную сущность. К Персональной сущности отнёс бы "Пол" "Год Рождения" "Семейное Положение" "Имя" (может быть нормализовано даже 1-N потому как у меня может быть много имён а сущность одна) .....- все "Анкетные" Данные. Те аттрибуты которые не могут относиться к "Хоз Деятельности". Потом одел бы "Банковскую Сущность" - и отношения ее к "Хоз Деятелям" и к "Персональной Сущности" То же сделал бы с "Адресом Всуе" - и отношение N-M к "Хоз Деятелем" и "Персоналом" В Адресе самом куча своих подадресов - и телефонов... Вот ЭТО была бы НОРМАЛИЗАЦИЯ в стиле 1С - я никогда не видел эту ПО но понимаю ее логику как логику ВЕРТИКАЛИ - OLTP системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 17:10:39 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
expla Использование внешних идентификаторов внутри системы не есть хорошая идея. Не просто плохая идея а запрещённая законом. Реализация ее идёт на уровне генерации уникальной системной идентификации к которой (можно сразу а можно и в последствии) подцепить этот самый SSN. Наличие его в системе не афишируется но так или иначе оно всегда есть. Проверяется и перепроверяется десятки раз. Особенно в системах страхования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 17:17:23 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
авторАбсолютно согласен с Вами Коллега по теме Нормализация. Всегда нужна разумная середина. Не соглашусь по теме SSN - по условию этот номер уникален. Если бы можно было себе представить себе такую "неуникальность". Нет - как Вы себе представляете уплату налогов на один и тот же номер двумя разными лицами... Я бы конечно не возражал если бы такое было возможно. Первым бы стоЯл в очереди за "развенчание" такого случая. Но... Налоговая инспекция Соединённых Штатов имеет пожалуй один из наилучших IT в мире. К сожалению, коллега,и в одном из лучших IT не все так гладко.У меня тоже было желание сделать SSN PK, но когда были проанализированны данные(порядка 700 000 записей лет за70-80) в реальной базе, такое желание пропало.Выяснилось, что есть дубликаты и у одного человека может быть несколько номеров.Думал, что это связано с ошибками ввода,но получил четкий ответ: это реальные ситуации и на старуху бывает проруха. Затем и в требованиях было четко прописано, что SSN НЕ МОЖЕТ ЯВЛЯТЬСЯ УНИКАЛЬНЫМ ПРИЗНАКОМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 17:17:59 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SeVaК сожалению, коллега,и в одном из лучших IT не все так гладко. ...Выяснилось, что есть дубликаты и у одного человека может быть несколько номеров. Совершенно верно. И Именно так - У ОДНОГО человека может быть несколько SSN Но не наоборот. Не можт быть одного номера у двух людей. Любой случай дубликата - а система разработана в 30-х годах когда записи велись вручную - рассматривается особенно. На уровне Совета Старейшин. Начиная с 2002 года SSN вообще ДОЛЖЕН быть вынесен в отдельный (недоступный) аттрибут да ещё и за пределы системы. Мы его не используем обычно. Использование его необходимо - в Медицине, Банковских (Финансовых), Страховых и Государственных системах. Там оно черезвычайно регламентировано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 17:29:49 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Система была не только страховая и финансовая,как и дубликаты не только в 30годах,но и гораздо позже.Гладко бывает только в букварях у Селко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 17:49:42 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SeVaГладко бывает только в букварях у Селко. Дааа уж... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 17:54:18 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Dogenexpla Но можно и так. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. По ситуации. Я бы <атрибуты типа Лицо> лучше выкинул. Да Вы сами подумайте, какие там атрибуты могут быть :) ИНН и т.п.? Лучше в раздельных таблицах это держать, чем в атрибутах Лица. В крайнем случае создать еще таблицу Налогоплательщик и внести туда :) а в догов в поле ДругаяСторона что вы вставлять будете??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 17:56:17 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
автора в догов в поле ДругаяСторона что вы вставлять будете??? ID, что еще.Созаем view или процедуру SELECT ID, NULL ParentID, FullName,PartyType FROM Физ UNION ALL SELECT ID, ParentID, FullName,PartyType FROM Юр и используем ее в клиенте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 18:10:41 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
ID должен быть уникальный в пределах БД.Добиться этого можно разными способами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 18:12:48 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
explaspно ведь и при такой реализации (которую я и использовал, но не до конца) просле того как приложение запущено уже неважно что там больше joinov Лишие join'ы сильно влияют на производительность системы. Но выбор реализации конструкции наследования типов выходит за рамки данного форума. Нужно смотреть на конкретную СУБД и другие технические показатели, как то объём данных, методы доступа к таблицам, требования к производительности и д.р.. Ведь можно забить на ссылочную целостность и сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. где ID заполнять из общего счётчика. И т.д. и т.п. На самом деле ссылка из Договора на Лицо не есть лучшее решение. По сути, эта ссылка вычисляемая, если непосредственно в Договоре указаны реквизиты сторон. Если ограничиться только ссылками, такое вычисление должен будет выполнять оператор, который заводит договор. Если в договор включить реквизиты сторон, то такое вычисление может сделать машина и сохранить результат для дальнейшего использования. При изменении даных Лица, машина сможет проконтролировать и пересчитать ссылки, сообщить о том, что в договор нужно внести изменения. А вот эта идея мне кажется стоящей для рассмотрения, на первый взгляд она может решить все проблемы, но необходимо посмотреть внимательней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 18:12:49 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp пишет: > но в таком случае все ихние множественные аттрибуты получаетца тоже надо > делать через наследование?? Что значить ? Нет, они просто будут у главного предка, т.е. и у всех его наследников тоже, и с одинаковым механизмом работы с ними. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 19:05:37 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp пишет: > ну как же там не идет - там обсуждается единый ObjectID А обычное наследование , без EAV, вы не приемлите ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 19:06:59 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SeVa пишет: > Если только интересуют физики и юрики, сделать четные и нечетные ID без > всяких лиц паржал. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 19:10:02 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
expla пишет: > Лишие join'ы сильно влияют на производительность системы. Видимо, тут забыли добавить частицу/приставку НЕ. Следует читать: "Лишие join'ы НЕсильно влияют на производительность системы" Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 19:11:32 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
MasterZiv sp пишет: > но в таком случае все ихние множественные аттрибуты получаетца тоже надо > делать через наследование?? Что значить ? Нет, они просто будут у главного предка, т.е. и у всех его наследников тоже, и с одинаковым механизмом работы с ними. Проблема с наследованиемв том что основные аттрибуты сущностей находятся в наследниках (в таблице КонтрАгенты будут храниться только ссылки на описание ФизЛица, ЮрЛица и ЧП) а общие аттрибуты будут в предках что вызывает проблемы при обработке данных: при редактировании/просмотре записи Контрагент мы будем видеть закладки с табличными представлениями Банковских счетов, Представителей, Контактной информацией, а к примеру чтобы посмотреть паспортные данные лица - я должен нажать пимпу на форме Контрагента, чтобы открыть форму ФизЛица и только на ней я могу посмотреть на закладке Паспорта текущие данные о паспорте граджанина или гражданки Я уже не говорю о проблемах при создании у Контрагента Представителей - этот объект должен поступать по принципу тут читаем, тут не читаем, тут мы рыбу заворачивали - например представители ФизЛица в качестве основания могут иметь исключительно доверенность, а у предприятия либо Устав, либо Доверенность В то время как объект ПредставителиПредприятия или ПредставителиФизлица легко контролируют такую ситуацию на уровне структур данных и на уровне клиентского кода Вот вам и проблемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 19:21:22 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Mr MarmeladНе соглашусь по теме SSN - по условию этот номер уникален.Не знаю как в США, но у нас в болотистой местности филиал в регионе будет иметь тот же самый ИНН, что и основная организация. Что делает этот ИНН непригодным к использованию в качестве ключа для контрагента. Для SP : в приведенной мной ссылке - нет никакого EAV. Просто ко всем таблицам, которые вы нарисовали (физ лицо, юр лицо) добавляется еще таблица "Объект" (у вас это контрагент), которая их связывает. Что касается ограничений целостности на уровне БД - то и этот вопрос решаемый созданием дополнительных уникальных ключей по двум полям (OBJECT_ID и TYPE_ID) и использование FK на эту пару. В добавление - если для поля в какой-то таблице использовать CHECK constraint вида TYPE_ID = 13, то тем самым решается проблема "в это поле можно вставлять только Физлиц". Если на эту проблему не заморачиваться на уровне БД, то проверку правильности присвоения ссылок можно вынести на уровень приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 19:56:22 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spПроблема с наследованиемв том что основные аттрибуты сущностей находятся в наследниках (в таблице КонтрАгенты будут храниться только ссылки на описание ФизЛица, ЮрЛица и ЧП) а общие аттрибуты будут в предках что вызывает проблемы при обработке данных: при редактировании/просмотре записи Контрагент мы будем видеть закладки с табличными представлениями Банковских счетов, Представителей, Контактной информацией, а к примеру чтобы посмотреть паспортные данные лица - я должен нажать пимпу на форме Контрагента, чтобы открыть форму ФизЛица и только на ней я могу посмотреть на закладке Паспорта текущие данные о паспорте граджанина или гражданкиНу как бы вам сказать... 1) Интерфейс можно сделать ТАКОЙ КАК НАДО, а не такой как привыкли делать некоторые. одна таблица, одна закладка - это не догма . 2) Сделайте несколько VIEW "Все физлица", "Все Юр лица" и используйте их. 3) У вас всеравно будут разные формы для Юрлиц и Физлиц. Скорее всего разные, потому что работа с ними разная проходит. Поэтому не вижу смысла вобще создавать форму "Контрагент непонятно какой". Для контрагента определенного типа система должна открывать правильную форму. Вот и все. spЯ уже не говорю о проблемах при создании у Контрагента Представителей - этот объект должен поступать по принципу тут читаем, тут не читаем, тут мы рыбу заворачивали - например представители ФизЛица в качестве основания могут иметь исключительно доверенность, а у предприятия либо Устав, либо Доверенность В то время как объект ПредставителиПредприятия или ПредставителиФизлица легко контролируют такую ситуацию на уровне структур данных и на уровне клиентского кода.На уровне клиентского кода - вобще нет никаких проблем контроля. Ни в одном из вариантов. Просто контроль может быть неверный :) Что касается контроля на уровне БД. Если Вы хотите сделать FK от договоров к контрагенту, но чтобы он обязательно был Физлицом - сделайте это FK не на таблицу "контрагент", а на таблицу "Физлица" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 20:08:37 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp пишет: > Проблема с наследованиемв том что основные аттрибуты сущностей находятся > в наследниках (в таблице КонтрАгенты будут храниться только ссылки на > описание ФизЛица, ЮрЛица и ЧП) а общие аттрибуты будут в предках что > вызывает проблемы при обработке данных: Ну, нет там никаких особых проблем. > при редактировании/просмотре записи Контрагент мы будем видеть закладки > с табличными представлениями Банковских счетов, Представителей, > Контактной информацией, а к примеру чтобы посмотреть паспортные данные > лица - я должен нажать пимпу на форме Контрагента, чтобы открыть форму > ФизЛица и только на ней я могу посмотреть на закладке Паспорта текущие > данные о паспорте граджанина или гражданки А что , сразу форму физлица нельзя открыть ? > Вот вам и проблемы Да надуманные какие-то проблемы. Надо учить формы работать и с наследниками тоже и быть адаптивными к тому, какой класс объекта они редактируют, да. Ну и что ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 20:35:56 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Bely1) Интерфейс можно сделать ТАКОЙ КАК НАДО, а не такой как привыкли делать некоторые. одна таблица, одна закладка - это не догма . 2) Сделайте несколько VIEW "Все физлица", "Все Юр лица" и используйте их. это не кошерно, учили не так! p.s. на самом деле +1. Не пойму в чем проблема вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 21:39:42 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
iscrafmBely1) Интерфейс можно сделать ТАКОЙ КАК НАДО, а не такой как привыкли делать некоторые. одна таблица, одна закладка - это не догма . 2) Сделайте несколько VIEW "Все физлица", "Все Юр лица" и используйте их. это не кошерно, учили не так! p.s. на самом деле +1. Не пойму в чем проблема вообще. Поясню: у меня каждый клиентский объект работает сосвоей сущностью в базе: т.е он отрисовывает грид и открывает форму для сущности, аесли я работаю с Контрагентом и в его гриде пытаюсь открыть запись другого объекта - то это как-то не кашерно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 21:50:40 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp Проблема с наследованиемв том что основные аттрибуты сущностей находятся в наследниках (в таблице КонтрАгенты будут храниться только ссылки на описание ФизЛица, ЮрЛица и ЧП) а общие аттрибуты будут в предках что вызывает проблемы при обработке данных Проблема в том, что вы неправильно понимаете сами принципы наследования (основы так сказать). В это им вся проблема. Общие атрибуты хранятся как раз в базовой (родительской) таблице. А второстепенные, уточняющие,индивидуальные и т.п. хранятся в наследниках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 22:33:15 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spiscrafmBely1) Интерфейс можно сделать ТАКОЙ КАК НАДО, а не такой как привыкли делать некоторые. одна таблица, одна закладка - это не догма . 2) Сделайте несколько VIEW "Все физлица", "Все Юр лица" и используйте их. это не кошерно, учили не так! p.s. на самом деле +1. Не пойму в чем проблема вообще. Поясню: у меня каждый клиентский объект работает сосвоей сущностью в базе: т.е он отрисовывает грид и открывает форму для сущности, аесли я работаю с Контрагентом и в его гриде пытаюсь открыть запись другого объекта - то это как-то не кашерно! никто не мешает сделать так, чтобы при любой схеме физической организации БД 1. Отображать объекты разных типов в одном гриде 2. Отображать объекты разных типов в разных гридах 3. открывать форму редактирования/просмотра свойств объекта из одного гида или из нескольких 4... Вы скажите в чем проблема. В организации БД или в интерфейсе? Потому что ни в первом ни во втором случае проблем нет, все давно решено и повсеместно используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 22:39:06 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
iscrafmsp Проблема с наследованиемв том что основные аттрибуты сущностей находятся в наследниках (в таблице КонтрАгенты будут храниться только ссылки на описание ФизЛица, ЮрЛица и ЧП) а общие аттрибуты будут в предках что вызывает проблемы при обработке данных Проблема в том, что вы неправильно понимаете сами принципы наследования (основы так сказать). В это им вся проблема. Общие атрибуты хранятся как раз в базовой (родительской) таблице. А второстепенные, уточняющие,индивидуальные и т.п. хранятся в наследниках. а когда нет общих основных??? имя, фамилия и отчество или паспорта - являются общими??? вот и я их не стал делать общими просто вы невнимательно читаете мои посты! я уже понял надо обозначить структуру данных и ее обсуждать - проблема у меня пока в том что нет рисовалки, а msql рисует громадные картинки :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 22:44:43 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spя уже понял надо обозначить структуру данных и ее обсуждать - проблема у меня пока в том что нет рисовалки, а msql рисует громадные картинки :( ну если проблема только в этом, то конечно. p.s. есть такое понятие как наименование, в принципе. Для одних это название юрлица, для других это ФИО, для третьих кличка. Вы лучше не ставьте в упрек невнимательное чтение ваших постов, а внимательно читаейте то, что вам уже здесь понасоветовали. Полезней будет для решения задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 22:49:11 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spВ общем решил как по букве Науки понормализовывать все шо ни попадет под руку - и вот вышло: -Физ-лицо -Представители физлица -банковские счета Физлица -ЧПФЛ -Представители ЧПФЛ -банковские счета ЧПФЛ -Юрлицо -Представители Юрлица -банковские счета Юрлица правда создал еще -Контрагент (тута их денормализовал в кучу :) ) типерь надо составить договор: в котором должны участвовать Контраген, его Представитель и Банковские реквизиты утут и уперся - шо типерь все взад денормализовывать по типу Контрагент? -> ПредставителиКонтрагента, БанковскиеСчетаКонтрАгента ????? Как быть или это я зря начитался всяких букварей??????? Звиняюсь, я видать что-то пропустил.. О какой нормализации идет речь? Если нормализация, то вспомним определение, если негде вспомнить.. то что-то типа – «все атрибуты должны зависеть от одного ключа и ни как иначе, все что может или зависит, или может быть внести неоднозначность – идет лесом, т.е. в другую таблицу».. что-то типа этого :) А по тому: лица отдельно, можно включить к ним признак (физ –юр – бомж и т.д.), но это только дополнение.. ибо «лицо» оно и есть лицо и не что больше, а если это что-то иное.. тогда и звать его иначе, «фирма» например.. «Представители физлица» - это что за звери? Тоже лица? Тогда в первой таблице, иначе думаем с определением но в единственном числе, т.к. набор есть множественное число а запись есть в единственном.. Банковские счета.. Опять туда же.. не множественное число а единственное. И что что их много, но каждый счет это отдельная тема с кучей атрибутов возможных и т.д. возможно это просто 20-ти значный код не суть.. В любом случае – это отдельная таблица. Ну и по остальному также.. Или, это уже таблицы связей? Тогда, эти триплеты не канают.. ибо нет возможность однозначно сопоставить зависимости. Возможно я что-то пропустил или не понял. Но есть изумительное средство – view которое непонятно как, но решает проблемы вызывающие желание дерномализовать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 23:02:18 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
stells2все что может или зависит. все что может или зависит от чего то еще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 23:05:53 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
И так начнем - я обозначу структуру как я ее вижу, а вы поправьте там где я упаду пьяным ) ФизЛицо ------------- ID Физлица ...аттрибуты лица... ЮрЛицо ------------------ ID ЮрЛица ...аттрибуты юрлица ЧП ------------------- ID ЧП ID Физлица ...аттрибуты ЧП.. ПаспортаФизлица --------------------- ID Паспорта ID Физлица ... аттрибуты паспорта... ПенсионныеУдостоверения ------------------------- ID Удостоверения ID Физлица ...аттрибуты физлица... БалансовыеПодразделенияЮрЛица -------------------------------------- ID БалансовогоПодразделения ID ЮрЛица ...аттрибуты... КОНТРАГЕНТ ------------------------ ID Контрагента ID Физлица ID ЮрЛица ID ЧП СубъектХозДеятельности - СХД --------------------------- ID Субъекта ID ЮрЛица ID ЧП ФактическиеАдресаКонтрагента ---------------------------------- ID ФактичАдреса ID Контрагента ID Адреса - ссылка на экземпляр сущности Адрес ТелефоныКонтрагента ---------------------------------- ID ТелефонаКонтрагента ID Контрагента ID Телефона - ссылка на экземпляр сущности телефон БезбалансовыеПодразделенияКонтрАгента ------------------------------------------- ID Подразделения ID Контрагента ...аттрибуты... Банки ---------------------- ID Банка ...аттрибуты... БанковскиеРеквизитыКонтрагента -------------------------------------- ID Реквизита ID Контрагента ID Банка ...аттрибуты... ПредставителиКонтрагента -------------------------------- ID Представителя ID Контрагента ДокументыПредставителя ----------------------------- ID Документа ID Представителя ID Устава ID Доверенности Устав ---------------- ID Устава Дата выдачи = 01.01.1900 Срок действия = 01.01.3000 Довенренности ------------------------- ID Доверенности ID Контрагента ID Физлица Номер Серия Дата выдачи Срок действия И тут появляются вопросы: -для СХД также необходима информация: ФактическиеАдреса, Телефоны, БезбалансовыеПодразделения, БанковскиеРеквизиты, Представители - создавать дублирующие структуры???? -как в ПредставителиКонтрагента для Физлица и ЧП пресечь на корню даже предложение о документе Устав?????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 23:06:04 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Хочу допечатать недопечатки ПредставителиКонтрагента -------------------------------- ID Представителя ID Контрагента ID Физлица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 23:18:42 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spКОНТРАГЕНТ ------------------------ ID Контрагента ID Физлица ID ЮрЛица ID ЧП Нчнем с этого. ID Физлица,ID ЮрЛица,ID ЧП - в топку. Остается только ID Контрагента В соответствующих таблицах: ФизЛицо, ЮрЛицо, ЧП - первичный ключ: ID Контрагента, а не свой собственный. PS: Всетаки, внимательно почитайте и разберитесь со скриптами создания таблиц в этой теме . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 11:15:33 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
В довесок еще в контрагента надо добавить поле "ТИП контрагента", чтобы можно было легко определить кто у нас кто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 11:17:43 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
BelyВ довесок еще в контрагента надо добавить поле "ТИП контрагента", чтобы можно было легко определить кто у нас кто. Вот тут не согласен - зачем мне тип контрагента если заполненное конкретное поле само за себя говорит что за тип контрагента В такой схеме получается что несколько разных наследников могут ссылаться на одного контрагента - что для данной системы есть низзя!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 12:57:39 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
BelyspКОНТРАГЕНТ ------------------------ ID Контрагента ID Физлица ID ЮрЛица ID ЧП Нчнем с этого. ID Физлица,ID ЮрЛица,ID ЧП - в топку. Остается только ID Контрагента В соответствующих таблицах: ФизЛицо, ЮрЛицо, ЧП - первичный ключ: ID Контрагента, а не свой собственный. PS: Всетаки, внимательно почитайте и разберитесь со скриптами создания таблиц в этой теме . Интересная идея - никогда так не думал о наследовании!!!! Надо покумекать - слишком уж нестандартно но многообещающе! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 12:59:34 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spИнтересная идея - никогда так не думал о наследовании!!!! Надо покумекать - слишком уж нестандартно но многообещающе! НАКОНЕЦ-то НАЧАЛИ ЧИТАТЬ ТО ЧТО ВАМ ПИШУТ! А прошло-то всего-то чуть более суток ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 14:58:45 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
BelyspИнтересная идея - никогда так не думал о наследовании!!!! Надо покумекать - слишком уж нестандартно но многообещающе! НАКОНЕЦ-то НАЧАЛИ ЧИТАТЬ ТО ЧТО ВАМ ПИШУТ! А прошло-то всего-то чуть более суток Ничего подобного!!!! это было написано в первый раз в таком понятном виде !!!!! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 17:07:04 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
BelyspКОНТРАГЕНТ ------------------------ ID Контрагента ID Физлица ID ЮрЛица ID ЧП Нчнем с этого. ID Физлица,ID ЮрЛица,ID ЧП - в топку. Зачем так стразу в топку. Вариант sp, один из способов реализации наследования. К стати, пока в оракле наследование не поддерживалось, такой подход был описан в документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 17:08:56 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
explaЗачем так стразу в топку. Вариант sp, один из способов реализации наследования. К стати, пока в оракле наследование не поддерживалось, такой подход был описан в документации.1) Как мы будем интерпретировать запись, если у нас заполнено сразу три поля? 2) Если у нас появится новый тип - будем добавлять новое поле? А если этих типов 50 ? Как там насчет нормализации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 17:12:11 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
авторИнтересная идея - никогда так не думал о наследовании!!!! Надо покумекать - слишком уж нестандартно но многообещающе! Все это давно известно.Полистай 2ю главу в букваре "Data Model Resource Book". В общем виде все твои сущности там рассмотрены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 17:17:32 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
BelyexplaЗачем так стразу в топку. Вариант sp, один из способов реализации наследования. К стати, пока в оракле наследование не поддерживалось, такой подход был описан в документации.1) Как мы будем интерпретировать запись, если у нас заполнено сразу три поля? 2) Если у нас появится новый тип - будем добавлять новое поле? А если этих типов 50 ? Как там насчет нормализации? 1) так не заполняйте сразу три поля. Ограничения целостности то на что? Наконец, лишние значения можно просто игнорировать используя приоритеты. К стати, в вашем варианте нет гарантии, что Контрагент существует, а соответсвующие ФЛ, ЧП и т.п. отсутствуют - нет и никакими декларативными ограничениями целостности вы эту проблему не решите. А в отвергнутом варианте всё это легко решается внешними ключами и проверками на записи. 2) Ну что поделаешь... Всё равно на новый тип систему придётся затачивать хоть так, хоть эдак. Количество типов не имеет значения пока СУБД позволяет добавлять поля в таблицу и никакого нарушения НФ тут нет. Или вы считаете, что нормализация, это когда количество колонок в таблице уменьшается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 17:57:00 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
explaНаконец, лишние значения можно просто игнорировать используя приоритеты.Если сделали из ЧП организацию, то до данных человека уже не добраться в интерфейсе. Так чтоли? Так себе решеньице... explaК стати, в вашем варианте нет гарантии, что Контрагент существует, а соответсвующие ФЛ, ЧП и т.п. отсутствуют - нет и никакими декларативными ограничениями целостности вы эту проблему не решите. А в отвергнутом варианте всё это легко решается внешними ключами и проверками на записи.Советую и Вам почитать это обсуждение . В этой модели все зависит как далеко хочется пойти в настройке constraint-ов в БД, а что решите контролировать уже на клиенте. explaКоличество типов не имеет значения пока СУБД позволяет добавлять поля в таблицу и никакого нарушения НФ тут нет. Или вы считаете, что нормализация, это когда количество колонок в таблице уменьшается?Я считаю, что значение атрибута ID Физлица зависит от значений атрибутов ID ЮрЛица и ID ЧП . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 19:25:47 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SeVaавторИнтересная идея - никогда так не думал о наследовании!!!! Надо покумекать - слишком уж нестандартно но многообещающе! Все это давно известно.Полистай 2ю главу в букваре "Data Model Resource Book". В общем виде все твои сущности там рассмотрены А где бы ее посмотреть ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 00:17:45 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
spА где бы ее посмотреть ? :) Покупай и смотри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 00:57:48 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
BelyspА где бы ее посмотреть ? :) Покупай и смотри Нифигаж сибе!!! а что это у нее цена как у телевизора??? или комуто на жисть не хватает??? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 01:50:56 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Предлагаю структуру - Таблица 1: ИДКоннтрагента, ИдТипКонтрагента, НазваниеКонтрагента Таблица 2: ИдТипКонтрагента, НазваниеТипаКонтрагента Таблица 3: ИдКонтрагента, ИдРеквизитаКонтрагента, ОписаниеРеквизитаКонтрагента Таблица 4: ИдТипКонтрагента, ИдРеквизитаКонтрагента, НазваниеРеквизитаКонтрагента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 08:05:11 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
RodionATПредлагаю структуру - Таблица 1: ИДКоннтрагента, ИдТипКонтрагента, НазваниеКонтрагента Таблица 2: ИдТипКонтрагента, НазваниеТипаКонтрагента Таблица 3: ИдКонтрагента, ИдРеквизитаКонтрагента, ОписаниеРеквизитаКонтрагента Таблица 4: ИдТипКонтрагента, ИдРеквизитаКонтрагента, НазваниеРеквизитаКонтрагентаЗачем было писать столько буков. Написали бы просто: EAV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 11:24:23 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
авторНифигаж сибе!!! а что это у нее цена как у телевизора??? или комуто на жисть не хватает??? :) Проще покупать в pdf, дешевше и быстрее.Если десантом заброшен и не слышал o P2P,я перешлю тебе на почту(ограничения на размер есть?).Нарисуй сначала логическую схему, а затем решай каким образом реализовывать генерализацию.Твой случай частный, можно обойтись только тремя таблицами для основных сущностей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 11:51:22 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Проверь почту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 12:12:53 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SeVa, и в pdf искал и на P2P. На амазоне можно твёрдую книгу купить с доплатой за электронный доступ. В почту файл может не влезть. Кинь, пзл. в почту ссылочку на торрент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 13:34:09 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SeVaПроверь почту Спасибо большое, получил!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 13:36:16 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 15:39:52 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
BelyRodionATПредлагаю структуру - Таблица 1: ИДКоннтрагента, ИдТипКонтрагента, НазваниеКонтрагента Таблица 2: ИдТипКонтрагента, НазваниеТипаКонтрагента Таблица 3: ИдКонтрагента, ИдРеквизитаКонтрагента, ОписаниеРеквизитаКонтрагента Таблица 4: ИдТипКонтрагента, ИдРеквизитаКонтрагента, НазваниеРеквизитаКонтрагентаЗачем было писать столько буков. Написали бы просто: EAV А что такое EAV? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 15:40:30 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
RodionATА что такое EAV? EAV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 22:51:22 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Эммм. А можно поинтересоваться - юрлица/физлица и т.п. у вас вне договора не существуют? И если на одно лицо несколько договоров - данные будут создаваться несколько раз? Если не так, то вариантов реализации отдельных таблиц мало: либо разграничение по диапазонам идентификаторов, либо общая таблица для общих атрибутов (аля наследование), либо составные ключи. В первом случае тяжело сопоставлять что есть что, в последних двух - тяжко проверить уникальность. ИМХО, EAV сюда пихать не стоит - чистейший оверкилл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2008, 12:11:14 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Sinixлибо общая таблица для общих атрибутов (аля наследование), ... в последних двух - тяжко проверить уникальность.В чем именно тяжесть проверки уникальности? Это вобще будет PK/FK на уровне БД - она и будет проверять. Или вы про что-то другое говорите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2008, 00:55:45 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Да об этом уже выше писалось - надо как-то гарантировать, чтобы ID разнотипных сущностей не пересекались. Если не использовать непересекающиеся диапазоны, то можно ввести поле - тип сущности - в общую таблицу и проверку в CHECK(через функцию) | TRIGGER: чтобы сущность с вносимым ID существовала (если она существует) только в таблице, соответствующей конкретному типу. Или использовать GUID :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2008, 04:22:09 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Sinix, займитесь лучше проектированием транзакций. Правильные транзакции всегда оставляют за собой правильные данные. FK и PK нужно рассматривать как механизм защиты данных от разрушения в результате параллельного выполнения конкурирующих транзакций (одна удаляет PK, другая в то же время добавляет FK). Строить на FK правила проверки правильности данных пустая трата времени (данные легко проверить простыми SQL запросами). Ваши FK лишь не позволят работать неправильным транзакциям, которых не должно быть в системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2008, 15:00:53 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
explaSinix, займитесь лучше проектированием транзакций. Правильные транзакции всегда оставляют за собой правильные данные. FK и PK нужно рассматривать как механизм защиты данных от разрушения в результате параллельного выполнения конкурирующих транзакций (одна удаляет PK, другая в то же время добавляет FK). Строить на FK правила проверки правильности данных пустая трата времени (данные легко проверить простыми SQL запросами). Ваши FK лишь не позволят работать неправильным транзакциям, которых не должно быть в системе. та-та ?) Умиляют категоричесие суждения про лёгкость поверки запросами и про правильные транзакции. Вы случаем не путаете транзакции с запросами? Подучите матчасть, плиииз. Как нам помогут транзакции, когда в одной транзакции создаётся общая сущность с ID=1 и для неё создаются details в таблицах юрлиц и физлиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2008, 07:39:47 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Про нормализацию как таковую. Сначала надо попытаться сделать, как учат в книгах. Необходимо иметь перед глазами схему. Рекомендую Excel. А когда дело дойдет до запросов, отчетов, сами поймете, что надо денормализовывать. Если в запросе связывается более трех таблиц, то, мне кажется, надо сделать шаг назад и добавить лишние поля. Например, в таблице накладных держать не только ID покупателя, но и его адрес и т.д. Иначе падает производительность. Конечно, придется обновлять ненормализованные поля уже на уровне приложения, но что делать... Я с этим сталкивался при разработке систем товарного учета. Порядка ста таблиц в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2008, 12:09:55 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SinixКак нам помогут транзакции, когда в одной транзакции создаётся общая сущность с ID=1 и для неё создаются details в таблицах юрлиц и физлиц? Вот и придумайте как построить транзакцию, чтобы всё было пучком. Возможно, блокирвки придётся навешивать и т.п. А я пока матчасть почитаю. Как сделаете, доложите, пзл.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2008, 14:17:40 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SinixКак нам помогут транзакции, когда в одной транзакции создаётся общая сущность с ID=1 и для неё создаются details в таблицах юрлиц и физлиц? Это пример неправильной транзакции, которая оставляет за собой противоречивые данные. Ещё пример неправильной транзакции, транзакция которая выполняет дебетовую проводку, но "забывает" выполнить кредитовую (вы конечно можете отказаться от принципа двойной записи, но не факт, что жертва будет оправданной). Вообще, вы пытаетесь смоделировать в реляционной БД понятие связи, которого нет в реляционной модели. Мы всегда можем взять произвольные отношения и соеденить их произвольным образом, так что понятие связи после ER модели фактически утрачивается в реляционной БД и вновь возникает только в SQL запросах и методах. FK только указывает на возможность наличия связи, но в БД может быть много логических связей, которые невозможно описать в терминах FK, даже привлекая вспомогательные структуры. Если вам так важно сохранить понятие связи (в данном случае, как бы сказать..., полиморфной) на уровне БД, переходите на объектные или объектно-реляционные БД, в них всё это уже придумано и реализовано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2008, 16:09:46 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
По порядку. 2 vbgd: 1) ранняя оптимизация зло. 2) изменение структуры данных ради оптимизации зло Единственное, чего можно добиться денормализацией - повышение производительности select запросов. (опечатка оператора была). Это должно отражаться в накладной? Если нет - то какой адрес настоящий? Если да, то потребуется писать триггер на обновление у таблицы "заказчики" и обновлять в нём все "кэшированные" адреса. Если у вас в накладных хранятся данные и из другой таблицы - вам придётся писать триггеры и на эти таблицы. В результате одна операция правки адреса утопит в блокировках (если это блокировочник) половину БД. Да, здесь выигрыш от денормализации будет сопоставим с построением составного индекса по ключу заказчика/адресу. Адрес может быть просто включённым полем. Всё просто :) 2 expla: Для начала давайте договоримся: Запрос - обращение пользователя к СУБД, содержащее в себе несколько выражений DML/DDL Транзакция - средство обеспечения ACID для пользовательского запроса. Вы не можете никак вмешаться в алгоритм работы транзакции. Максимум, что вам удастся - порулить блокировками - опять-таки через ващ запрос. Крактко: Транзакция не может быть некорректной, некорректным может быть только запрос. Как я буду проверять корректность запроса - заранее не скажу. Может, триггеры. Может, проверки на столбце через функцию. Смотреть надо. Но то что дело реализуемое - эт точно. 2 mcureenab: Про неправильность транзакций - выше. Вам что, всем по одному недоучебнику что-то рассказывали ?:) // сорри, не удержался. Про "нетривиальность" связи. Скажите, а ОО(Р)СУБД как-то иначе реализуют такие проверки? Уличная магия, да? :) Про непригодность ограничений: не, вы точно какой-то не тот учебник курили. Кто вам сказал, что ER-диагармма - наше всё? У ER есть свои недостатки и преимущества, но вот описывать в ней концептуальную модель - брр :) Скажите, а как вы отслеживаете корректность данных? Своя логика в каждом запросе? Что будет, если всего в одном запросе будет допущена ошибка в проверке ограничений? P.S. Я ничего не пытаюсь использовать и реализовывать. Подняли тему, я пришёл и сказал своё мнение. Закрыли тему? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 04:38:51 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Sinix 2 expla: Для начала давайте договоримся: Запрос - обращение пользователя к СУБД, содержащее в себе несколько выражений DML/DDL Транзакция - средство обеспечения ACID для пользовательского запроса. Вы не можете никак вмешаться в алгоритм работы транзакции. Максимум, что вам удастся - порулить блокировками - опять-таки через ващ запрос. Кратко: Транзакция не может быть некорректной, некорректным может быть только запрос. Sinix, Вы - про транзакции СУБД ("системные") , а expla - про "бизнес-транзакции": Мартин Фаулер "Архитектура корпоративных программных приложений" Команды, составляющие транзакцию, могут быть адресованы приложением к СУБД (системные транзакции) или пользователем к приложению (бизнес-транзак- ции) ... Транзакция базы данных — это группа SQL-команд, обрамленная инструкциями начала и завершения. .. Однако смысл системных транзакций остается скрытым для пользователей бизнес- систем. Например, с точки зрения посетителя банковского Web-портала, транзакция состоит из процедуры регистрации, выбора счета, задания суммы, определения вида опе- рации и щелчка на кнопке ОК. Подобная последовательность действий называется бизнес-транзакцией (business transaction) и должна обладать теми же свойствами ACID, что и аналогичная системная транзакция. Если пользователь прерывает выполнение сцена- рия до щелчка на кнопке ОК, любые изменения в состоянии системы подлежат безус- ловной отмене; если транзакция завершается успешно, все ее промежуточные результаты фиксируются на уровне системы только после щелчка на кнопке ОК. Для поддержки свойств ACID бизнес-транзакции необходимо выполнить ее целиком в рамках одной системной транзакции. К сожалению, бизнес-транзакция зачастую пре- дусматривает обработку многих запросов, поэтому для ее реализации потребуется длин- ная (long) системная транзакция. Но во многих случаях эффективность таких транзакций оставляет желать лучшего. ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 13:00:47 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Когда я говорил про транзакции, то имел в виду "Транзакция базы данных — это группа SQL-команд, обрамленная инструкциями начала и завершения". 2 Sinix , в твоей терминологии те же яйца только вид с боку - тоже запрос со свойствами ACID. Меняем запрос - меняем транзакцию. 2 АнатоЛой , что то Фаулер зарапортовался. Бизнес транзакция не обязана 1:1 соотноситься с транзакцией БД. Если в бизнес транзакции выделить ряд целостных промежуточных состояний, то только переходы между этими состояниями придётся выполнять в рамках транзакции БД. Так бизнес транзакция "заключение договора" не обязана выполняться в рамках одной транзакции БД, которая сосотоит из insert into ЗАКАЗЧИК, insert into ДОГОВОР и commit. Мы можем зарегистрировать заказчика - сделать insert into ЗАКАЗЧИК, commit, потом через некоторое время зарегистрировать договор - insert into ДОГОВОР и commit. Понятно, что при таком подходе наличие в БД заказчика с которыми не заключен договор нужно считать нормальным явлением, и учитывать это обстоятельство в запросах. Если угодно, можно время от времени выполнять сборку мусора, как это принято в современных средах, типа Java и C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 14:32:21 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
expla что то Фаулер зарапортовался. Бизнес транзакция не обязана 1:1 соотноситься с транзакцией БД. Про Фаулера сказть не могу: я же не всё цитировал - да и цитата из перевода, а не из оригинала. Дальше по тексту видно, что речь именно о "бизнес транзакция не обязана 1:1 соотноситься с транзакцией БД" - у куча вариантов реализации... Это просто при вырывании из большего контекста так грубо получилось, что ФаулерДля поддержки свойств ACID бизнес-транзакции необходимо выполнить ее целиком в рамках одной системной транзакции. По большему куску текста "необходимо" там звучит как "можно было бы" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 15:17:35 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Sinix. Про "нетривиальность" связи. Скажите, а ОО(Р)СУБД как-то иначе реализуют такие проверки? Уличная магия, да? :) Для нашего случая там есть понятие подтипа. Положим есть абстрактный супертип A (лицо), и два его прямых подтипа B (физлицо) и C (юрлицо). Объект одновременно не может быть двух типов B (физлицо) и C (юрлицо). За этим следит ОРСУБД. SinixСкажите, а как вы отслеживаете корректность данных? Своя логика в каждом запросе? А как иначе? Приложение получает на вход какие то данные, проверяет их целостность, обрабатывает и сохраняет в БД целостные данные, которые естественно проходят все проверки. Выходит проверки на уровне СУБД избыточны, это не более чем assert. А по вашему, выходит. Приложение получает на вход какие то данные, обрабатывает (может быть падает или порождает неопределённый результат) и пытается сохранить в БД. Если у СУБД хватит ума проверить данные, то поднимется исключение, а обработка данных просто пройдёт впустую, если ума не хватит (в БД практически невозможно описать все инварианты системы, и тем более постусловия операций), или неопределённый результат случайно пройдёт проверку, то в БД поимеем кривые данные. SinixЧто будет, если всего в одном запросе будет допущена ошибка в проверке ограничений? Зачем глупые вопросы задавать? Как и при любой ошибке в программе - некорректный результат. Но не факт, что даже самые хитрые ограничения целостности БД поймают эту ошибку. Так что сосредоточтесь на разработке правильных транзакций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 15:44:38 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SinixПо порядку. 2 vbgd: 1) ранняя оптимизация зло. 2) изменение структуры данных ради оптимизации зло 1 Я не говорил РАННЯЯ оптимизация. 2 Зло - понятие субъективное. А еще есть обычные часы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 16:40:07 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Для отдельных товарищей: Вы знаете, если мы даже в терминологии не можем договориться... Давайте некорректную аналогию - запрос - программа, транзакция - одна из фич рантайма, допустим сбор мусора. Нельзя запрос называть транзакцией. Во-первых вводите собеседника в заблуждение, во-вторых показываете отсутствие фундаментальных знаний. // последнее, пожалуйста, не воспринимайте на свой личный счёт, ладно? :) 2 expla expla Для нашего случая там есть понятие подтипа. Положим есть абстрактный супертип A (лицо), и два его прямых подтипа B (физлицо) и C (юрлицо). Объект одновременно не может быть двух типов B (физлицо) и C (юрлицо). За этим следит ОРСУБД. Проверка наследования всё равно ведь будет. И я сомневаюсь, что она может быть реализована более эффективно, чем поиск по индексу. expla А как иначе? Приложение получает на вход какие то данные, проверяет их целостность, обрабатывает и сохраняет в БД целостные данные, которые естественно проходят все проверки. Выходит проверки на уровне СУБД избыточны, это не более чем assert. А по вашему, выходит. Приложение получает на вход какие то данные, обрабатывает (может быть падает или порождает неопределённый результат) и пытается сохранить в БД. Если у СУБД хватит ума проверить данные, то поднимется исключение, а обработка данных просто пройдёт впустую, если ума не хватит (в БД практически невозможно описать все инварианты системы, и тем более постусловия операций), или неопределённый результат случайно пройдёт проверку, то в БД поимеем кривые данные. Ребят, понимаете в чём дело. Ваша самая-самая распрекрасная система гроша ломанного не стоит без данных. Потому защищать эти данные надо очень-очень хорошо, в том числе и от ошибок в коде. При всех недостатках органичений СУБД, без них надёжной системы не будет. Потому что их вы никак не обойдёте. Потому что вы можете гарантировать, что эти проверки будут соблюдаться для каждого запроса. Если у вас не универсальных ограничений, вы можете только надеяться, что проверки будут осуществляться во всех запросах, и что никто не забудет их в будущем. Естественно, ограничения не должны быть единственным средством обеспечения надёжности. Но без них реально тяжко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2008, 04:38:03 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SinixДля отдельных товарищей: Вы знаете, если мы даже в терминологии не можем договориться... Давайте некорректную аналогию - запрос - программа, транзакция - одна из фич рантайма, допустим сбор мусора. Для особо одарённых... 1. Транзакция это не фича, а последовательность действий/запросов отвечающая требованиям ACID (есть ещё куча определений, в том числе и ваше, которые говорят о том же другими словами). Что бы не плодить понятия, транзакцией можно называть как формальный алгоритм (design time), если угодно "класс транзакций", так и фактическое действие (run time). Как правило из контекста понятно, о чём идёт речь. 2. Фича, это способность СУБД выполнять запросы транзакционно. Транзакционность действий ещё не гарантирует выполнение ACID. Неправильный уровень изоляции, кривой запрос или commit не на своём месте запросто могут поломать свойства ACID. Sinix Нельзя запрос называть транзакцией. Во-первых вводите собеседника в заблуждение, во-вторых показываете отсутствие фундаментальных знаний. // последнее, пожалуйста, не воспринимайте на свой личный счёт, ладно? :) Ну так не называй транзакцию запросом. Тебя за язык никто не тянет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2008, 15:47:07 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
SinixПри всех недостатках органичений СУБД, без них надёжной системы не будет. Ерунда. Абсолютно надёжных систем вообще не существует и не может сущетствовать. Достаточно надёжные системы, некоторые из них эксплуатируются до сих пор, создавались ещё до появления поддержки проверки ограничений целостности на уровне СУБД, до возникновения СУБД как класса ПО, и даже до возникновения ЭВМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2008, 15:58:12 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Sinix expla Для нашего случая там есть понятие подтипа. Положим есть абстрактный супертип A (лицо), и два его прямых подтипа B (физлицо) и C (юрлицо). Объект одновременно не может быть двух типов B (физлицо) и C (юрлицо). За этим следит ОРСУБД. Проверка наследования всё равно ведь будет. И я сомневаюсь, что она может быть реализована более эффективно, чем поиск по индексу. Не сомневайся, потому что и без проверки можно обойтись. Точнее проверку можно выполнить ещё на этапе компиляции запроса, проконтролировать типы и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2008, 16:02:51 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp ... SexID ... Посмеялся отдуши. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2009, 03:14:49 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
expla Так что сосредоточтесь на разработке правильных транзакций. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2009, 04:30:11 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Папа Игорьsp ... SexID ... Посмеялся отдуши. Спасибо. Вдогонку. Таблица Sex будет иметь ровно четыре записи со значениями: "Ме", "Жо", "Ме и Жо", "Ни Ме, ни Жо". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2009, 05:51:04 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
Папа ИгорьПапа Игорьsp ... SexID ... Посмеялся отдуши. Спасибо. Вдогонку. Таблица Sex будет иметь ровно четыре записи со значениями: "Ме", "Жо", "Ме и Жо", "Ни Ме, ни Жо". ага, а еще смешнее когда для них еще хотят хранить варианты для других языков!!!! оборжацца!!!! вы их тоже в уме держать будуту или программерам клиенцкой части будете в нужных местах подсказывать!!!??? )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 14:25:38 |
|
||
|
Донормализовывался - караул!!! )
|
|||
|---|---|---|---|
|
#18+
sp...ага, а еще смешнее когда для них еще хотят хранить варианты для других языков!!!! оборжацца!!!! вы их тоже в уме держать будуту или программерам клиенцкой части будете в нужных местах подсказывать!!!??? )))) Здравствуйте! Выражаю сомнение в том, что Ваш проект выйдет за пределы родного государства. Судя по старту. В любом случае - успехов! (без иронии) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2009, 21:28:14 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1543490]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
576ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
98ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 920ms |

| 0 / 0 |
