|
|
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Сущности клиент и договор связь один ко многим. У клиента с течением времени могут изменятся атрибуты адрес, фио, паспортные данные. В договоре данные атрибуты должны остаться неизменными. Подскажите как правильно организовать структуру базы данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 08:09 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Как вариант Сущность клиентКодДата регистрацииВсякие параметры которые не меняются... ДоговорыКод клиентаКодВсякие параметры для договора... А изменяемые атрибуты клиента оформляются как-то так... Атрибут N у клиентовКод клиентаДата измененияВсякие параметры для атрибута N... ---------- Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 08:38 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Нужны три таблицы: Клиенты, Реквизиты клиентов (с атрибутом [период]), Договоры с клиентами. В реквизитах клиентов храните те реквизиты, которые могут со временем менятся. В Договорах реквизиты хранить не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 09:16 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
storysoftВ договоре данные атрибуты должны остаться неизменными. Подскажите как правильно организовать структуру базы данных? Помнить состояние клиента на дату договора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 09:18 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
тынць _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 10:40 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
У договора есть дата. У реквизитов есть интервал актуальности (действует от...до). Для конкретного договора не проблема вытащить актуальный для него реквизит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 11:02 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
>>. У реквизитов есть интервал актуальности (действует от...до). Смысл плодить лишнее? Проще "действует от", и за интервалами следить не нужно, и заполнять проще. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 11:36 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev Проще "действует от", и за интервалами следить не нужно, и заполнять проще тынць ( http://samouchka.net/ebooks/database/bdoracle/17681-oracle.-proektirovanie-baz-dannykh.html]Глава 7. " Обработка временных данных " ) > > > Posted via ActualForum NNTP Server 1.4 > > Тема <http://www.sql.ru/forum/actualthread.aspx?tid=649987> Ответить > <http://www.sql.ru/forum/actualpost.aspx?tid=649987> Сообщение > <http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=649987&msg=6972445> > -- _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 13:31 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
>> тынць (Глава 7. "Обработка временных данных") Это уж разработчику решать, как... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 13:54 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Ex_SoftKirill Razuvaev Проще "действует от", и за интервалами следить не нужно, и заполнять проще тынць ( http://samouchka.net/ebooks/database/bdoracle/17681-oracle.-proektirovanie-baz-dannykh.html]Глава 7. " Обработка временных данных " ) К этому стоит добавить еще то, что в книге примеры для Oracle 7. А на дворе уже 11g гуляет. Не то, что бы много чего поменялось, но возможностей у Oracle с тех пор поприбавилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 13:57 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Вообще-то подразумевалось: на практике исключать столбец DATE_TO не рекомендуется, так как это приведет к необходимости использовать очень сложный и неэффективный SQL-код вне контекста СУБД и, уж тем более, каких-либо версий... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 14:16 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
>> на практике исключать столбец DATE_TO не рекомендуется, так как это >> приведет к необходимости использовать очень сложный и неэффективный >> SQL-код И давно запрос с поиском максимальной даты, меньшей определенной, стал сложным? А эффективность - она правильной индексацией обеспечивается... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 14:52 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Ex_SoftВообще-то подразумевалось: на практике исключать столбец DATE_TO не рекомендуется, так как это приведет к необходимости использовать очень сложный и неэффективный SQL-код вне контекста СУБД и, уж тем более, каких-либо версий...На заборе много чего написано... Про эффективность, реально померянную и оцененную: История одна дата vs две. Что лучше? Так что не все так однозначно, как в книжке пишут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 15:07 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev И давно запрос с поиском максимальной даты, меньшей определенной, стал сложным? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 15:13 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Bely Про эффективность, реально померянную и оцененную: История одна дата vs две. Что лучше? Не показательно... Табличка всего одна... А если много? BTW, MasterZiv (на самом деле конечно не такой он и сложный, но если его вложить в другие запросы которые уже реально с данными работать будут, будет совсем невесело) Bely Так что не все так однозначно, как в книжке пишут. У нас, как раз, ситуация "с точностью до наоборот": на практике дошли к тому, что позже в букварях прочитали... _________________ "Helo, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 15:35 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Ex_Soft Kirill Razuvaev И давно запрос с поиском максимальной даты, меньшей определенной, стал сложным? Покажите Ваш несложный запрос с поиском максимальной даты хотя бы для выше указанного... А почему именно в таком виде все должно обязательно быть с точки зрения проектирования? Может достаточно ограничиться только датой "От", а в договоре сохранять ссылку на периодические реквизиты? То есть, запрос последней строки будет обычным select top 1 order by, а потом уже никаких подзапросов не будет, просто прямой join на периодический реквизит, с которым связан договор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 15:38 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов А почему именно в таком виде все должно обязательно быть с точки зрения проектирования? Ну... Нам так надо... Так спроектировали... Что-то криминальное? Сергей Васкецов Может достаточно ограничиться только датой "От", а в договоре сохранять ссылку на периодические реквизиты? То есть, запрос последней строки будет обычным select top 1 order by, а потом уже никаких подзапросов не будет, просто прямой join на периодический реквизит, с которым связан договор. Предлагаете винегрет (В.1. + В.2.)? _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 15:54 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Ex_SoftПредлагаете винегрет Скорее просто указываю, что из отсутствия поля "До" еще не следуюет, что придется колупаться с подзапросами типа select max или not exists вместо Ваших between. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 15:59 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов из отсутствия поля "До" еще не следуюет, что придется колупаться с подзапросами типа select max или not exists вместо Ваших between А смысл скрещивать ужа и ежа, в принципе, IMHO, вполне самодостаточных варианта: 1. Ид на актуальную info 2. временнЫе параметры попутно внося специфичные для каждого грабли в общий котел и еще больше все усложняя? P.S. Вариант 1 сдесь вообще не обсуждался. Видать его даже за вариант не считают... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 16:16 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Ex_SoftА смысл скрещивать ужа и ежа Да это пусть автор думает. Я в подобной ситуации сделал бы ссылку в договоре на актуальные параметры, в которых дата была бы просто как второе поле уникального ключа. И все проверки есть, и блокировка правки заюзанного легко делается, и запросы простые. В общем, тут же нет причин все усложнять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 19:49 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецовблокировка правки заюзанного легко делаетсяКак? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 20:14 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Ex_Softи таких join'ов с десяток... Покажите Ваш несложный запрос с поиском максимальной даты хотя бы для выше указанного...Речь о том, что ссылку на нужную версию периодических реквизитов можно получить запросом типа: Код: plaintext 1. IMHO, такие выборки быстрее between. Да и разрывы/перекрытия диапазонов больше шансов получить при многопользовательской работе и одновременной правке реквизитов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 21:39 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Т.е., таки, сходимся к комбинированному варианту: Код: plaintext 1. 2. 3. 4. 5. 6. 7. не тяжеловато ли будет а-ля: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Даже не уверен, что отработает... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 22:08 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
>> не тяжеловато ли будет а-ля: Ну, полный список всех договоров со всеми (!) join'ами - редкое явление... или ошибка проектирования :-) >> Даже не уверен, что отработает... Куда ж оно денется... В конце концов, можно куда-нибудь завернуть по частям, в просмотры, процедуру... IMHO, такой вариант "периодики" даже визуально контролировать проще... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 11:01 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev Ну, полный список всех договоров со всеми (!) join'ами - редкое явление... отчетность Kirill Razuvaev или ошибка проектирования а как тогда по другому (если без смайла)? Kirill Razuvaev в процедуру... Ну и как потом если что-то сводное? Особенно, если select from stored_procedure нЭт? Kirill Razuvaev Куда ж оно денется... Не... Ну это - понятно... Только, вот, если один сервак вообще на все и вся и юзверов порядочно - то, если честно, сомнение гложет... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 11:18 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
>> Не... Ну это - понятно... Только, вот, если один сервак вообще на все и >> вся и юзверов порядочно - то, если честно, сомнение гложет... Покой нам только снится... (c) Насколько я понимаю, between тоже не самая легкая операция. "Все фигня кроме пчел, пчелы тоже фигня - но их МНОГО! " (с) :-) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 11:40 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Че-то не выходит каменный цветок Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. GenIdNameRecordModify1'Ленин Владимир Илич''20090320'2'Ленин Владимир Ильич''20090321'3'Сталин Иосиф Виссарионович''20090326' Пытаюсь даже просто получить актуальные версии Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 12:07 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
я несколько другое имел ввиду: Код: plaintext 1. 2. 3. 4. 1; 384; ООО "Орион"; 26-jan-2009 2; 385; ООО "Мастер"; 16-feb-2009 1; 387; ООО "Орион+"; 05-mar-2009 Дальше, желая получить название контрагента с ID=1 на 27.03.09 выполняем запрос: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 12:32 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Так что-ли Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. И это только получили Contragent.GenId на дату... Сдаецо мне пчелы нам дадут прикурить... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 12:34 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev я несколько другое имел ввиду Просто вместо моих двух ContragentMaster+ContragentDetail одна денормализированная Contragent... В остальном - все понятно... Но, все же, - настораживает... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 12:40 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
>> И это только получили Contragent.GenId на дату... По сути - да. >> Сдаецо мне пчелы нам дадут прикурить... А чем between ближе к антиникотиновой кампании? Куча join'ов больших таблиц жизни не облегчит Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 12:40 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev between Вы, пожалуйста, не подумайте, что я between'овский фундаменталист и с криками between-акбар с пеной у рта до последнего защищаю его. По большому счету - мне просто необходимо оптимальное решение. Вне зависимости на чем оно будет зиждеца. Одна голова хорошо, а много - уже некрасиво Что-то а-ля BTW, посмотрел я на max(GenId) && <Date - а что получиться, если нуна будет задним числом что-то рихтонуть? GenId - будет увеличиваться, а Date уменьшаться. В этом случае, по идее, все гладко, но все же?.. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 12:49 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
>> а что получиться, если нуна будет задним числом что-то рихтонуть? GenId - >> будет увеличиваться, а Date уменьшаться. Если Вы это на стадии проектирования понимаете, то выкидывайте сразу GenID. Джойнить придется по дате и ID контрагента только... GenID по сути только упрощает запросы и позволяет легче найти последнюю версию, на касаясь даты. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 12:51 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Ex_SoftСергей Васкецовблокировка правки заюзанного легко делаетсяКак? Тривиально. Если есть ссылка на модицифицируемую строку в договорах - пнх. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 15:21 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Kirill RazuvaevНу, полный список всех договоров со всеми (!) join'ами - редкое явление... или ошибка проектирования :-) Вообще-то это называется "отчет". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 15:22 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
>> Вообще-то это называется "отчет". Отчет обычно берется за период, и выводятся в отчет обычно не все данные сразу. А оба этих обстоятельства сильно снижают нагрузку. Можно ж и сканы подписей представителей до кучи в отчет вытаскивать! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 15:33 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Kirill RazuvaevОтчет обычно берется за период Обычно - плохое слово. Какие надо отчеты - те и делаются. Например, по сотруднику, по региону,..., и какие данные туда выводятся - это зависит от отчета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 15:37 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
>> Обычно - плохое слово. Какие надо отчеты - те и делаются. >> Например, по сотруднику, по региону,..., и какие данные туда выводятся - >> это зависит от отчета. Так я о том и писал, что мы не выводим АБСОЛЮТНО ВСЕ. Выборка же ограничена чем-то, либо регионом, либо сотрудником, либо датами. Согласитесь, в контексте отчета по договорам не очень актуально выводить такой периодический параметр, как банковские реквизиты, к примеру. Уже имеем экономию ресурсов. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2009, 17:46 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Kirill RazuvaevСогласитесь, в контексте отчета по договорам не очень актуально выводить такой периодический параметр Не очень понимаю, куда Вы клоните. Что надо, то и выводится. Если надо расчетные счета или банки, которые в договорах указаны - значит они будут. Бывает и наоборот же, сама по себе электронная форма "легкая", а в отчетах "логика" "навешана". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2009, 17:11 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
>> Не очень понимаю, куда Вы клоните. К тому, что зачастую система вообще, и запросы в частности, бывают искусственно утяжелены избыточными условиями и соединениями, которые дают ощутимую нагрзуку на сервер. Не так давно изучали одну систему на предмет экспорта из нее и долго не могли понять, в чем тормоза. В итоге оказалось, что в экспортирующем запросе, надо признать весьма объемном (18 таблиц), - три лишних join'а, да еще примерно пятую часть условий в where грохнуть можно было... При этом один join - с полумилионной таблицей... :-( Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2009, 22:52 |
|
||
|
Проблема сущности клиент и договор?
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev Насколько я понимаю, between тоже не самая легкая операция. (Затягиваясь) Ну, безусловно, ничуть не проще чем +/- Ex_Soft Kirill Razuvaev between Вы, пожалуйста, не подумайте, что я between'овский фундаменталист и с криками between-акбар с пеной у рта до последнего защищаю его. (Затягиваясь) Проблема, конечно, непростая. Думаю, что ее надо широко обсуждать. Создать даже не ветку, а просто отдельный форум. Типа «SQL Server», “Oracle”, “Использование between”… Kirill Razuvaev >> Обычно - плохое слово. Какие надо отчеты - те и делаются. >> Например, по сотруднику, по региону,..., и какие данные туда выводятся - >> это зависит от отчета. Так я о том и писал, что мы не выводим АБСОЛЮТНО ВСЕ. Выборка же ограничена чем-то, либо регионом, либо сотрудником, либо датами. Согласитесь, в контексте отчета по договорам не очень актуально выводить такой периодический параметр, как банковские реквизиты, к примеру. Уже имеем экономию ресурсов. (Затягиваясь) Between-то between-ом, но если вдуматься, проблема с where тоже не совсем тривиальная… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2009, 13:43 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1543349]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 462ms |

| 0 / 0 |
