|
|
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Есть сущность контрагент - есилф физлицо, то нужно вносить Фамилию, Имя, Отчество - 3 поля. Если юрлицо, то 1 поле - название контрагента. Можно сделать одной таблицей, с четырмя полями. В первом случае будет заполняться одно поле, во втором другие 3 поля. Насколько это правильно и стоит ли так делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2010, 19:23 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
В таком случае разбивают на три таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 08:48 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
А есть еще ИНН, как бы общий, но разной длины и у физлиц необязательный, а у юр - обязательный (в РФ). С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 09:04 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Т.е. я так понимаю основная таблица - контрагенты, содержащая внешний ключ на таблицу физ.лицо и вн.ключ на таблица юр.лицо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 12:41 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestТ.е. я так понимаю основная таблица - контрагенты, содержащая внешний ключ на таблицу физ.лицо и вн.ключ на таблица юр.лицо? у них внешние ключи могут совпадать с примарными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 12:43 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
И направлены в другую сторону - к контрагенту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 13:56 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestНасколько это правильно и стоит ли так делать? Это неправильно концептуально. В информационной модели так делать не следует. В противном случае вам придётся написать объёмный комментарий к такой сущности. Если речь идёт о реализации, то оракл именно так и поступает, но внутри себя. На уровне SQL запросов пользователь получает из таблицы объекты разных типов, с разным набором полей. Но впринципе это сокрытие несущественно. Реализация не сложная и достаточно "прозрачная" для пользователей БД. Можно и без объектной надстройки обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 14:43 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
------------------------И направлены в другую сторону - к контрагенту А ну да, как раз таблицы юр.лицо и физ.лицо должны ссылать на контрагенты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 17:50 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blest[quot ------------------------]И направлены в другую сторону - к контрагенту А ну да, как раз таблицы юр.лицо и физ.лицо должны ссылать на контрагенты.[/quot ага ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 19:15 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
NafА есть еще ИНН, как бы общий, но разной длины и у физлиц необязательный, а у юр - обязательный (в РФ). С уважением, Naf а еще бывают такие неуникальные случаи изменения ИНН и бывают их кучи одинаковых!!! ))) в украине все возможно )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 09:51 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Toshikblest[quot ------------------------]И направлены в другую сторону - к контрагенту А ну да, как раз таблицы юр.лицо и физ.лицо должны ссылать на контрагенты.[/quot ага Еще один момент. Таблицы будут такого вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Но как будет гарантироваться целостность БД? Контрагент может быть или Юр.лицом или Физ.лицом. Но по такой схеме в таблицах Юр.лица и Физ.лица айдишники контрагентов могут совпадать. Что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 16:29 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Считать их предпринимателями без образования юридического лица :) А если серьезно, то очень редки ситуации, когда с помощью только первичных ключей и констрейнтов можно задать все реально имеющиеся ограничения. Даже то, что актив равен пассиву. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 16:53 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
-----------------------------Считать их предпринимателями без образования юридического лица :) А если серьезно, то очень редки ситуации, когда с помощью только первичных ключей и констрейнтов можно задать все реально имеющиеся ограничения. Даже то, что актив равен пассиву. А какими еще средствами тогда можно еще пользоваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 17:03 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blest, Я бы не стал экономить место на текстовых атрибутах для справочника контрагентов, если он у вас не на сотни тысяч человек, то экономия получится грошовой, а структура базы усложнится. Вообще соотношений типа (1:1) OR (1:1) лучше избегать. Но дело ваше. Попробуйте сделать так (псевдокод, проверять некогда) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Теперь вы никак не сможете вставить запись из contractors с одним же и тем же ID + TYPE_C сразу в разные таблицы, за этим проследит поле TYPE_C, точнее constraints в подчиненных таблицах. Минус в том, что constraints можно отключать, но и FK тоже можно удалять. :) В принципе можно изощряться в этом направлении сколько душе угодно, например, генерировать значения последовательности для ID первичной таблицы из двух разных диапазонов (в зависимости от типа контрагента) и вставить в constraints подчиненных таблиц проверку на эти диапазоны, тогда не понадобится составной ключ, ну и т.д и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 18:57 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestToshikblest[quot ------------------------]И направлены в другую сторону - к контрагенту А ну да, как раз таблицы юр.лицо и физ.лицо должны ссылать на контрагенты.[/quot ага Еще один момент. Таблицы будут такого вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Но как будет гарантироваться целостность БД? Контрагент может быть или Юр.лицом или Физ.лицом. Но по такой схеме в таблицах Юр.лица и Физ.лица айдишники контрагентов могут совпадать. Что делать? генерировать ID только в table Контрагенты сначала и вставлять в соответствующие таблицы Физ_Лица и ЮР_Лица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 19:02 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
spblestToshikblest[quot ------------------------]И направлены в другую сторону - к контрагенту А ну да, как раз таблицы юр.лицо и физ.лицо должны ссылать на контрагенты.[/quot ага Еще один момент. Таблицы будут такого вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Но как будет гарантироваться целостность БД? Контрагент может быть или Юр.лицом или Физ.лицом. Но по такой схеме в таблицах Юр.лица и Физ.лица айдишники контрагентов могут совпадать. Что делать? генерировать ID только в table Контрагенты сначала и вставлять в соответствующие таблицы Физ_Лица и ЮР_Лица Ну я так и собирался делать в процедуре по добавлению контрагентов, но это ведь не гарантирует, что другой программист взяв эти таблицы не напихает в Юр.лица и Физ.лица одинаковые айдишники ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 19:23 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestно это ведь не гарантирует, что другой программист взяв эти таблицы не напихает в Юр.лица и Физ.лица одинаковые айдишники а что страшного случится если напихает? ты же не собираешься их использовать без базового ENTRY_ID? никого не пугает что в таблицах PRODUCTS и DOCUMENTS могут быть одинаковые <RECORD>_ID а вот одинаковые ENTITY_ID и IDENTITY_ID беспокоят почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 19:36 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
carperblest, Я бы не стал экономить место на текстовых атрибутах для справочника контрагентов, если он у вас не на сотни тысяч человек, то экономия получится грошовой, а структура базы усложнится. Вообще соотношений типа (1:1) OR (1:1) лучше избегать. Но дело ваше. Попробуйте сделать так (псевдокод, проверять некогда) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Теперь вы никак не сможете вставить запись из contractors с одним же и тем же ID + TYPE_C сразу в разные таблицы, за этим проследит поле TYPE_C, точнее constraints в подчиненных таблицах. Минус в том, что constraints можно отключать, но и FK тоже можно удалять. :) В принципе можно изощряться в этом направлении сколько душе угодно, например, генерировать значения последовательности для ID первичной таблицы из двух разных диапазонов (в зависимости от типа контрагента) и вставить в constraints подчиненных таблиц проверку на эти диапазоны, тогда не понадобится составной ключ, ну и т.д и т.п. Ну да, это есть вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 19:38 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestЕсть сущность контрагент - есилф физлицо, то нужно вносить Фамилию, Имя, Отчество - 3 поля. Если юрлицо, то 1 поле - название контрагента. Можно сделать одной таблицей, с четырмя полями. В первом случае будет заполняться одно поле, во втором другие 3 поля. Насколько это правильно и стоит ли так делать? Есть 3 классических варианта решения вопроса: 1) 1 таблица (супертаблица): Контрагенты Достоинства: простота в понимании Недостатки: несколько пониженная надежность (проблема сделать так чтобы ООО "Рога и копыта" не стало директором ОАО "МММ") 2) 2 таблицы: Юрики и Физики. Вариант тупой ибо ссылочная целостность не реализуема вообще. Рассматривать не будем ибо юзать этот вариант не профессионально. ))) 3) 3 таблицы: Контрагенты (содержащие общие для физиков и юриков поля), Юрики и Физики содержащие специфические поля. Достоинства: надежность и правильность с точки зрения теории Недостатки: несколько большая сложность в реализации по сравнению с в.1 P.S. Я когда-то у Алекса Усова из ru.delphi.db спросил примерно тоже самое.... году эдак в 1997-1998. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 04:35 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
2 Алексей Статюха К контрагенту должен прилагаться набор некоторых реквизитов (сколь угодно разных). Какая проблема разделить реквизиты на: 1. Для всех. 2. Для Юр. 3. Для Физ. и т.д. ?? Решение: Таблица контрагентов, таблица реквизитов, таблица настроек. Разновидностей контрагентов может быть гораздо больше, чем Юр и Физ. Зависит от задачи. ЗЫ: Отдельные таблицы для Физ. и Юр. - идиотство. Тоже самое для Поставщик-Покупатель. Точка. Дальше можно не обсуждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 11:29 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
LSV2 Алексей Статюха К контрагенту должен прилагаться набор некоторых реквизитов (сколь угодно разных). Какая проблема разделить реквизиты на: 1. Для всех. 2. Для Юр. 3. Для Физ. и т.д. ?? Решение: Таблица контрагентов, таблица реквизитов, таблица настроек. Разновидностей контрагентов может быть гораздо больше, чем Юр и Физ. Зависит от задачи. ЗЫ: Отдельные таблицы для Физ. и Юр. - идиотство. Тоже самое для Поставщик-Покупатель. Точка. Дальше можно не обсуждать. Тоесть по-Вашему это верно когда есть расплывчатое поле Название которое в одной этой таблице и название Юрика и если че - ФИО ????? !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 14:18 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
spТоесть по-Вашему это верно когда есть расплывчатое поле Название которое в одной этой таблице и название Юрика и если че - ФИО ????? !!!По моему подобный вопрос нужно формулировать точнее. :) Совпадение ФИО и названия для Физ. - тавтология. Ничего не поделаешь. Но ничего страшного тут не вижу. Предлагаете для этого завести отдельную таблицу ? А еще для 20..50 других свойств ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 15:38 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
LSVspТоесть по-Вашему это верно когда есть расплывчатое поле Название которое в одной этой таблице и название Юрика и если че - ФИО ????? !!!По моему подобный вопрос нужно формулировать точнее. :) Совпадение ФИО и названия для Физ. - тавтология. Ничего не поделаешь. Но ничего страшного тут не вижу. Предлагаете для этого завести отдельную таблицу ? А еще для 20..50 других свойств ? И дать этой таблице название Dustbin(мусорное ведро) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 15:57 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
LSV Совпадение ФИО и названия для Физ. - тавтология. Ничего не поделаешь. это не тавтология, это недопонимание различия между понятиями "данные" и "информация", или физической и логической моделью. Данные - это 250 символов, а информация - в одном случае ФИО человека, в другом - наименование компании. Вы правы, ничего сверхестественного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 16:53 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Алексей Статюха3) 3 таблицы: Контрагенты (содержащие общие для физиков и юриков поля), Юрики и Физики содержащие специфические поля. Достоинства: надежность и правильность с точки зрения теории Недостатки: несколько большая сложность в реализации по сравнению с в.1А если к общей таблице прилепить ссылки на специфические таблицы и ограничение что заполнена (not null) может быть только одна ссылка, то мы вернемся к варианту 1 в виде вьюхи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 18:40 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
этот вопрос вроде как плодотворно обсудили здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 21:35 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
уТКаэтот вопрос вроде как плодотворно обсудили здесь В этом обсуждении как-то незамеченным остался философский вопрос: кого считать одним и тем же контрагентом? Если для фискальных целей очевидно, что юридическое лицо "ООО Василек" и физическое лицо "Вася" это никак не связанные вещи (ну есть некоторые нюансы по тому, кто и как будет отвечать по долгам Васи), то для фирмы у которой этот Вася покупал 10 лет электроинструмент, это далеко не так. Также возникают проблемы с отчетностью за разное время и т.п. Поэтому обычно компании приходят к тому, что существует некий контрагент, который является для них единым лицом согласно неким внутренним бизнес-правилам. Отсюда автоматически получается, что время жизни контрагента, как единого лица, теоретически может быть больше чем время жизни любых его атрибутов, включая и тип юр. лица. Соответственно, если мы ведем две отдельные таблицы для контрагентов юриков и физиков получается, что вполне ДОПУСТИМО существование в обоих таблицах ID одного и того же контрагента (разруливать кем он является сейчас, и кем и когда являлся ранее, можно через промежуточную темпоральную таблицу)! Более того, никто не мешает тому же Василию благополучно разориться как ООО и стать снова Василием, а потом опять стать юриком, но уже "ЗАО "Эх ухнем"". Т.е. получается, что в обоих таблицах реквизитов возникнет необходимость иметь по несколько записей для контрагента с одинаковым ID (т.е. АК надо стоить по ID контрагента и ID из промежуточной темпоральной таблице)! Но и это не все, если мы начали продавать свой инструмент за рубеж, неизбежно понадобятся свои реквизиты и бизнес-правила и для них. Мы опять вернемся к вопросу о том, куда добавлять эти реквизиты? В уже существующие таблицы, где они явно будут "путаться под ногами" для отечественных контрагентов, или городить для них свои таблицы? Боюсь, что единого ответа не будет. Но если оценить реальное кол-во контрагентов, то зачастую решение хранить все реквизиты в одной отдельной таблице может оказаться не плохим вариантом, более того, совсем не очевидна необходимость вязать в единое целое одинаковые по названию, но разные по смыслу поля, так вполне можно допустить поле для ИНН для юриков и поле ИНН для физиков и т.п. Разумеется, если мы чего не учли, например, возможность вышеупомянутого сотрудничества с иностранцами, никуда мы не денемся от дописывания бизнес-правил и добавления полей в таблицу реквизитов, но это может оказаться проще, чем вариант создания доп. таблиц с практическим дублированием ряда бизнес-правил по реально совпадающим по смыслу полям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2010, 10:47 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
iscrafmLSV Совпадение ФИО и названия для Физ. - тавтология. Ничего не поделаешь. это не тавтология, это недопонимание различия между понятиями "данные" и "информация", или физической и логической моделью. Данные - это 250 символов, а информация - в одном случае ФИО человека, в другом - наименование компании. Вы правы, ничего сверхестественного. Хорошо, для Физ.лица название ФИО (строго в таком порядке). Если сделать в базе Название Юр/Физ лица одним полем, то кому доверить проверку на правильность ввода - интерфейсу(будет 3 поля - Фамиллия Имя Отчетсво) ?? Я считатал всегда, что целостность данных должна обеспечивать сама БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2010, 13:36 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blest, база данных только хранит сведения как есть. Целостность данных проверяет СУБД , а обеспечивает эту целостность в первую очередь пользователь, а затем приложение. Сначала проверку данных осуществляет пользователь, потом приложение и наконец СУБД. Если кто то в этой цепочке косячит, а следующий не имеет адекватной проверки, то и в БД сведения будут кривыми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2010, 14:42 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestХорошо, для Физ.лица название ФИО (строго в таком порядке). Если сделать в базе Название Юр/Физ лица одним полем, то кому доверить проверку на правильность ввода - интерфейсу(будет 3 поля - Фамиллия Имя Отчетсво) 1. нет нужды писать разные данные в одно поле. В Оракле пустые поля почти не занимают места. В других структурах данных могут быть конструкции типа C'шного union или ASN'овского CHOICE. XML опять же поддерживает вариативность атрибутов... 2. Для проверки на уровне СУБД несложно сделать декларативное ограничение целостности. Т.е. в зависимости от формы собственности (частное лицо, ЧП, организация и т.п.) можно требовать заполнение одних полей и незаполнение других. 3. качество данных в первую очередь определяет не их проверка в момент изменения, а их использование. Ненужные данные рано или поздно потеряют актуальность. Ошибки в нужных данных обычно достаточно быстро выявляются когда их начинают использовать в отчётах, вычислениях, и т.п. В системе должен быть предусмотрен механизм отрицательной обратной связи по ошибкам данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2010, 14:57 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Единственная таблица - бредовое решение во всех отношениях. Точка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2010, 21:18 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Не ORMЕдинственная таблица - бредовое решение во всех отношениях. Точка. Нет, ну если честно, то в единой таблице с есть решиние имхо. При регистрации Фирмы или ИП регистрациоонная форма ОДНА. Но мой вопрос по-породу ФИО остается актуальным. И может быть есть и другие пункты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2010, 04:35 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Нет там никакого решения, а один только мало внятный бардак ради весьма сомнительной экономии на лишнем Join. Для любителей произодительности - две таблицы с уникальными Id. Самодокументируемость схемы, отсутствие лишних индексов, меньше длина строки, проще проверки, возможность применения кодогенераторов\ORM для построения клиентской части и тд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2010, 12:12 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestНет, ну если честно, то в единой таблице с есть решиние имхо. При регистрации Фирмы или ИП регистрациоонная форма ОДНА. Но мой вопрос по-породу ФИО остается актуальным. И может быть есть и другие пункты. Одна сущность - одна таблица+подчиненные (если есть). Формы редактирования разные - зависит от типа сущности и, возможно, от других причин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2010, 10:06 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestНо мой вопрос по-породу ФИО остается актуальным. И может быть есть и другие пункты. Давайте обратимся к гигантам индустрии. Смотрим объектную СУБД оракл. Как в ней можно реализовать твою схему?... Создаём тип Контрагент, Создаём подтип Физ_лицо от Контрагент Создаём подтип Юр_лицо от Контрагент Можно создать таблицы из Физ_лицо и Юр_лицо. Впринципе неплохо, но тогда тип Контрагент не сильно помогает нам. Так например нам нужно знать в ккой таблице хранятся контрагенты каждого типа, вместо того, чтобы просто сохранять их в одной таблице. Висячие ссылки не запретишь. И т.п. Можно создать таблицу из Контрагент. Теперь там, где Контрагенты не подразделяются на Физ и Юр, мы можем оперировать обобщённым понятием. Что касается хранения атрибутов, то оракл в недрах БД создаст таблицу в которой просто перечислит все поля сначала из Контрагент, потом из Физ_лицо и наконец из Юр_лицо (точнее, порядок тут не важен). Отображение понятий ООП на реляционную модель зачастую выглядит коряво. Но для того объектные субд и создаются, чтобы скрыть эту корявость от пользователя. _модОдна сущность - одна таблица+подчиненные (если есть). Формы редактирования разные - зависит от типа сущности и, возможно, от других причин. Слабось ER моделирования в том, что нет строгого определения сущности. Используя разные подходы, мы можем получать разный набор сущностей и соответсвующих таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2010, 13:47 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
LSVОтдельные таблицы для Физ. и Юр. - идиотство. Тоже самое для Поставщик-Покупатель. +500. Когда уже прекратится это обсуждение раз и навсегда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 13:42 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
mcureenabДавайте обратимся к гигантам индустрии Хотите их всуе упомянуть? Что ж. В SAP дебиторы отдельно от кредиторов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 13:45 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestНо мой вопрос по-породу ФИО остается актуальным Какой именно вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 13:46 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовmcureenabДавайте обратимся к гигантам индустрииХотите их всуе упомянуть? Что ж. В SAP дебиторы отдельно от кредиторов...В Navision отдельно. Гиганты индустрии - не показатель. Там полно мегакосяков. И это один из них. Видимо он пришел по наследству с незапамятных DOS-времён, когда для простоты управления и безопасности лепили две таблицы, а SQL в помине не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 14:31 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
mcureenab Слабось ER моделирования в том, что нет строгого определения сущности. А его в принципе нет. Выбор сущностей - это момент проектирования. В данном случае я бы выбрал одну сущность - контрагент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 17:31 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовLSVОтдельные таблицы для Физ. и Юр. - идиотство. Тоже самое для Поставщик-Покупатель. +500. Когда уже прекратится это обсуждение раз и навсегда? Прекращаем. blestЕсть сущность контрагент - есилф физлицо, то нужно вносить Фамилию, Имя, Отчество - 3 поля. Если юрлицо, то 1 поле - название контрагента. Можно сделать одной таблицей, с четырмя полями. В первом случае будет заполняться одно поле, во втором другие 3 поля. Насколько это правильно и стоит ли так делать? Это один из способов реализации полиморфизма в реляционной БД. Так делают в промышленных СУБД и в том есть определённые преимущества, как впрочем и недостатки. Если не нравится, создавайте другие сущности - без абстракций. Вероятно введение абстрактной сущности Контрагент связано с желанием исключить из модели множетсвенные связи некоторых сущностей с разными типами контрагентов. Но во первых таких связей может и не быть на самом деле (зачастую проектировщики пытаются хранить в БД временные связи, которые возникают и пропадают только в процессе выполнения некоторых операций), во вторых переходя к физической модели БД мы можем реализовать их разными способами, в частности через таблицу связей. Наконец сама сущность Контрагент во всех её проявлениях может быть плодом фантазии проектировщика (например, из сущности Контракт зачемто выносят в отдельную сущность атрибуты сторон, создавая в БД лишние сущности и связи, тогда как можно было обойтись представлением БД из тех же Контрактов, Заказов, Контактов и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2010, 19:02 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовblestНо мой вопрос по-породу ФИО остается актуальным Какой именно вопрос? Хорошо, для Физ.лица название ФИО (строго в таком порядке). Если сделать в базе Название Юр/Физ лица одним полем, то кому доверить проверку на правильность ввода - интерфейсу(будет 3 поля - Фамиллия Имя Отчетсво) ?? Я считатал всегда, что целостность данных должна обеспечивать сама БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 13:43 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestХорошо, для Физ.лица название ФИО (строго в таком порядке). Если сделать в базе Название Юр/Физ лица одним полем, то кому доверить проверку на правильность ввода - интерфейсу(будет 3 поля - Фамиллия Имя Отчетсво) ?? Я считатал всегда, что целостность данных должна обеспечивать сама БД. целостность данных <> правилам ввода. Богу богово, кесарю кесарево. База проверяет целостность, правила ввода проверяет интерфейс, всё логично. ЗЫ замечание безотносительно основной обсуждаемой темы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 14:34 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blest Это вопрос типа "сколько полей сделать под ФИО"? blestЕсли сделать в базе Название Юр/Физ лица одним полем Что значит "если"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 15:42 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецовblest Это вопрос типа "сколько полей сделать под ФИО"? blestЕсли сделать в базе Название Юр/Физ лица одним полем Что значит "если"? Это значит, что при другом варианте можно сделать 3 поля, и в другой таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 17:46 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestЭто значит, что при другом варианте можно сделать 3 поля, и в другой таблице. И в чем проблема? Вам необходимо отдельно иметь имя, фамилию? Или достаточно просто иметь некое наименование, например, для отчета "Список должников бабла"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2010, 17:48 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
У нас абстрактная сущность Контрагент существует не абстрактно - в договоре Поле Контрагент используется очень активно при этом не не надо мучаться как в это поле запихнуть Физика или Юрика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 11:07 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовblestЭто значит, что при другом варианте можно сделать 3 поля, и в другой таблице. И в чем проблема? Вам необходимо отдельно иметь имя, фамилию? Или достаточно просто иметь некое наименование, например, для отчета "Список должников бабла"? 100%. Думаю здесь просто отдает борьбой за "нормализацию" и прочие академические каноны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 11:27 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
spУ нас абстрактная сущность Контрагент существует не абстрактно - в договоре Поле Контрагент используется очень активно при этом не не надо мучаться как в это поле запихнуть Физика или Юрика С ваших слов можно понять, что сущности Контрагент у вас нет. Зато есть одноимённый атрибут сущности Договор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 13:08 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
iscrafm, да. Слово "нормализация" именно в кавычках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 13:09 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовblestЭто значит, что при другом варианте можно сделать 3 поля, и в другой таблице. И в чем проблема? Вам необходимо отдельно иметь имя, фамилию? Или достаточно просто иметь некое наименование, например, для отчета "Список должников бабла"? Проблема в том, что я до сих пор так и не определился делать все в одной таблице или в нескольких. Юр. лицо состоит из названия контрагента + организационная правовая форма (ООО, ЗАО) Физ. лицо из Фамилии Имени и Отчества + начальство хочет ввести Фамилию в родительном падеже. По мне так разные атрибуты, так в одной таблице хранить все эти поля или в разных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 13:26 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestПроблема в том, что я до сих пор так и не определился делать все в одной таблице или в нескольких Это сейчас конкретно про ФИО, или опять к началу ушли? blestЮр. лицо состоит из названия контрагента + организационная правовая форма (ООО, ЗАО) Посмешили, спасибо. "Юр. лицо состоит" - уже неплохо. У юрика есть юр. наименование, адрес, и т.п. И вообще ещё не факт, что во всяких отчетах типа приведенного надо иметь именно полное официальное наименование юрика. Какое-нибудь отделение сбербанка замучаетесь читать в отчете. Естественно, если печатная форма регламентирована с точностью до расстояния между штрихами, там не забалуешься, но в прочих случаях (типа отчета "список должников бабла") нафиг это не надо. blestФиз. лицо из Фамилии Имени и Отчества + начальство хочет ввести Фамилию в родительном падеже. Обычно в падежах ведут, чтобы автоматически печатать "От кого", "Кому" и т.п. А следовательно, это касается только небольшой части контрагентов (и, кстати, необязательно физиков, но и ИП, например). Потому это можно смело делать отдельной табличкой. blestПо мне так разные атрибуты, так в одной таблице хранить все эти поля или в разных? Что значит "разные"? Если боретесь за чистоту, тогда атрибута "юр.наименование" у физиков вообще нет, у юриков нет атрибута "ФИО", а для целей поиска, печатания в отчетах и т.п. необходим третий атрибут "Наименование" (ну или "Имя", "Описание", как хотите, суть не меняется). Соответственно, борцы за чистоту поле "Наименование" суют в корневую таблу, а в пристёгивающиеся таблички - соответственно "ФИО" и "Юр.Наименование". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 14:56 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Но если сделать только одно поле наименование, и в него пихать для физиков ФИО, а для юриков полное официальное наименование - это работать будет. Только это не всегда удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 14:58 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blest, предлагаешь нам определиться за тебя? Проведи анализ, что будет в разных ситуациях, если все поля будут в одной таблице. Если принципиальных проблем нет, то исходя из принципа минимизации количества таблиц, останавливаемся на этом варианте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 15:00 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовНо если сделать только одно поле наименование, и в него пихать для физиков ФИО, а для юриков полное официальное наименование - это работать будет. Только это не всегда удобно. Если так сделать, в таблице придётся иметь тэг, по которому в случае надобности определять с чем мы имеем дело - с ФИО или с названием конторы. Т.е. метаданные, которым самое место в словаре БД, влезут в каждую запись таблицы. К стати, в случае организации ФИО скорее всего будет востребовано для хранения персональных данных о руководителе конторы и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 15:06 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
mcureenabЕсли так сделать, в таблице придётся иметь тэг, по которому в случае надобности определять с чем мы имеем дело - с ФИО или с названием конторы Зачем это иметь именно в этой таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 15:10 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestФиз. лицо из Фамилии Имени и Отчества + начальство хочет ввести Фамилию в родительном падеже. Обычно в падежах ведут, чтобы автоматически печатать "От кого", "Кому" и т.п. А следовательно, это касается только небольшой части контрагентов (и, кстати, необязательно физиков, но и ИП, например). Потому это можно смело делать отдельной табличкой. blestПо мне так разные атрибуты, так в одной таблице хранить все эти поля или в разных? Что значит "разные"? Если боретесь за чистоту, тогда атрибута "юр.наименование" у физиков вообще нет, у юриков нет атрибута "ФИО", а для целей поиска, печатания в отчетах и т.п. необходим третий атрибут "Наименование" (ну или "Имя", "Описание", как хотите, суть не меняется). Соответственно, борцы за чистоту поле "Наименование" суют в корневую таблу, а в пристёгивающиеся таблички - соответственно "ФИО" и "Юр.Наименование".[/quot] Ок, я как раз про борьбу за "чистоту" и говорю. Именно потому я склоняюсь, к существованию дочерних таблиц: физики - ФИО(и может другие доп.атрибуты) и юрики- название(наименование) + ОПФ(и может другие доп.атрибуты). Соответственно для редактирования выводить каждое из этих полей отдельно, а скажем для отчетов выводить наименование контрагента вьюхой, где будут объединяться эти поля. Нормальный вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 15:42 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
blestНормальный вариант? Работать это будет, а насчет "нормальный" - сказать сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 15:44 |
|
||
|
Создание таблицы контрагентов
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовblestНормальный вариант? Работать это будет, а насчет "нормальный" - сказать сложно. Ну собственно я затеял тему, чтобы узнать плюсы и минусы такого способа и других способов как это еще можно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2010, 15:50 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1542842]: |
0ms |
get settings: |
7ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
206ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 564ms |

| 0 / 0 |
