powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Физики и юрики
25 сообщений из 138, страница 1 из 6
Физики и юрики
    #32691244
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро. Есть вопрос: имеется таблица Лицо с наиболее общими атрибутами любых лиц и таблички физических лиц и юридических, в которых сидит ссылка на соответствующую запись в таблицу Лицо. Тут встал вопрос: либо оставлять две таблицы либо слить физиков и юриков в одну таблицу и добавить поле типа: физик/юрик, а в триггере в зависимости от типа пасти значений полей, который должны быть null/not null у физиков/юриков соответственно. А как сделана аналогичная вещь у Вас?
...
Рейтинг: 0 / 0
Физики и юрики
    #32691293
Фотография neal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня было две отдельных таблицы, одна для юриков, другая для физиков, но диапазоны ключей у них не пересекались. Например для юриков отрицательные, для физиков положительные.

А в таблице договоров поле содержало соответствующее значение.

(-) Нет связей между таблицами, целостность поддерживалось на уровне бизнес-логики.

(+) Можно было описать любую ситуацию, договор заключен с физиком, с физиком, представителем юрика, с юриком.

все, имхо
-------------------------------------------------------
Заходи в саpай аккуpатно - могут быть сеpьезные гpабли.
...
Рейтинг: 0 / 0
Физики и юрики
    #32691309
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне надо как раз обеспечить сквозную нумерацию физиков и юриков...
...
Рейтинг: 0 / 0
Физики и юрики
    #32691316
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если появится третий тип ? Ну вдруг !
ИМХО: решение: одна таблица с признаком (но только не boolean).
...
Рейтинг: 0 / 0
Физики и юрики
    #32691324
Фотография neal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Они и будут нумероваться непрерывно с -X до +Y.
0 - можно зарезервировать под код собственной фирмы

или если собственных фирм несколько то выделить вокруг нуля диапазон от -100 до -1 для собственных сотрудников и от 0 до 20 для собственных фирм внутри холдинга.

Потом диапазон в конечном счете будет не непрерывный, т.к. некоторых физиков или юриков потом могут удалить.

все имхо, дело вкуса!
-------------------------------------------------------
Заходи в саpай аккуpатно - могут быть сеpьезные гpабли.
...
Рейтинг: 0 / 0
Физики и юрики
    #32691458
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одна таблица со сквозной нумерацией , общими атрибутами,служебной информацией и типом контрагента. Расшифровка типа - в отдельной таблице,набор флагов

+ дополнительные таблицы, специфичные для каждого типа(типов) контрагента
+ неспецифичные для типа контрагента таблицы (права доступа)
...
Рейтинг: 0 / 0
Физики и юрики
    #32691581
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To AlexeySH: именно так у меня сейчас и сделано (см. мой пост), а вот в чем минусы такого решения, плюсы и интересно обсудить.
По-моему, при таком физическом дизайне более очевидна объектная иерархическая структура: лицо->юрик->банк, удобно использовать сквозную нумерацию.
Других плюсов я пока не нахожу.
Минусы вроде бы такие (не для меня): при появлении нового типа приходится добавлять новую таблицу.
...
Рейтинг: 0 / 0
Физики и юрики
    #32691699
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shtock :
Ну есть вариант с узкой длинной таблицей атрибутов. в плюсе - отсутствие необходимости править структуру при добавлении очередного ОКДПХЗХУ :)
в минусе неоходимость сборки "записей" из атрибутов для отчётов
...
Рейтинг: 0 / 0
Физики и юрики
    #32692015
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ух, вякну и я...

Если бы ты юзал Bold for Delphi (или ECO для всяких там C#, Delphi 8 и проч), то твоя проблема решилась бы сама собой - введением абстрактного класса Персона, и двух дочерних - Юридическое лицо и Физическое лицо. См. прилагаемую схему. Такие струтуры Bold обычно реализует в одной таблице - причем утверждается, что "Отображение представления родителя на его потомка увеличивает производительность при поиске в одном из дочерних классов, т.к. база данных для этого открывает только одну таблицу." Это примерно то, что реляционщики называют денормализацией.
Особенность реализации - такая таблица содержит Id таблицы и Id класса, ну, для Вас (при обычном, без - Bold - овском кодировании) до кучи можно ввести "Сквозной номер".
...
Рейтинг: 0 / 0
Физики и юрики
    #32692018
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во, блин, нарисовал фигню... В Юридическом лице все атрибуты, конечно, "Специальные". Извиняюсь.
...
Рейтинг: 0 / 0
Физики и юрики
    #32692028
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To mv: Как Вы уже думаю поняли из моих постов. у меня практически так и сделано.

Немного offtopic, но:
если я правильно если у меня иерархия 10 классов, в каждом из которых по 10-20 атрибутов и все это будет "Отображение представления родителя на его потомка увеличивает производительность при поиске в одном из дочерних классов, т.к. база данных для этого открывает только одну таблицу", то я поимею таблицу о 200 полях?
Я боюсь, что размеры rollback-сегмента будут крупноваты, а так как Bold если я правильно понял, держит все это в памяти, то хватит ли ее? - это риторический вопрос.
...
Рейтинг: 0 / 0
Физики и юрики
    #32692043
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock... то я поимею таблицу о 200 полях?
Я боюсь, что размеры rollback-сегмента будут крупноваты, а так как Bold если я правильно понял, держит все это в памяти, то хватит ли ее? - это риторический вопрос.
1. Неправильно понял. Bold не копирует всю структуру базы в память. Он ее так (описанным выше образом) хранит. Более того, Bold при работе не копирует все объекты базы в память. Хотя этого можно добиться.

2. У тебя действительно в модели бизнес - объектов 10 - уровневая глубина наследования?

3. Существет возможность настроить отображения как родителя - на потомков, так и наоборот. Или вообще все по отдельным таблицам разбросать. Тут имеет смысл рассматривать в контексте конкретной задачи, сервера СУБД, объемов данных и т.п.
...
Рейтинг: 0 / 0
Физики и юрики
    #32692046
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не 10, но 5 есть
...
Рейтинг: 0 / 0
Физики и юрики
    #32692062
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не жалко, покажи примерчик.
...
Рейтинг: 0 / 0
Физики и юрики
    #32692119
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4 уровня - обычная ситуация
...
Рейтинг: 0 / 0
Физики и юрики
    #32692123
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
...
Рейтинг: 0 / 0
Физики и юрики
    #32692542
bazaea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как у меня:
3 таблицы
1 Лицо - содержит общее для юр и физ + 2 поля ссылка на Юр, ссылка на Физ
2 Физ - только то что относиться к Физ
3 Юр - только то что относиться к Юр

соответственно признак получился сам собой.

ЗЫ. а лица бывают 3 типов физ, юр и пбюл(имеет признаки и юр и физ)

но можно 1 таблица на всю БД, с полями f1, f2,f3 в которую можно писать всё что угодно, причем здесь достигается любая гибкость, а не только то, что видов лиц может быть сколько угодно... (см. как работают в Scala)

это дело вкуса.
...
Рейтинг: 0 / 0
Физики и юрики
    #32692559
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Scala - это что?
...
Рейтинг: 0 / 0
Физики и юрики
    #32692584
bazaea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvА Scala - это что?
Scala - это Что.
есть такая ERP система. писаная в COM+
зря я ее упоминул в суе. Чур меня чур
Не когда не стройте БД как они строят.
...
Рейтинг: 0 / 0
Физики и юрики
    #32692673
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> А мне надо как раз обеспечить сквозную нумерацию физиков и юриков

Зачем, если не секрет?

> или если собственных фирм несколько то выделить вокруг нуля диапазон от -100
> до -1 для собственных сотрудников и от 0 до 20 для собственных фирм внутри
> холдинга.

100 и 20 - это такие магические числа? А почему не 10000 или 1000000?

> Одна таблица со сквозной нумерацией , общими атрибутами,

Позвольте поинтересоваться, какие атрибуты можно назвать общими для физического лица и юридического?
...
Рейтинг: 0 / 0
Физики и юрики
    #32692964
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To guest_20040621: единая система идентификации любого клиента.

Пример общего атрибута: ИНН и много еще, если глубже рыть.
...
Рейтинг: 0 / 0
Физики и юрики
    #32693279
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
 /*==============================================================*/ 
 /* Database name:  ObjectOrientedModel_1                        */ 
 /* DBMS name:      Microsoft SQL Server 2000                    */ 
 /* Created on:     14.09.2004 11:29:41                          */ 
 /*==============================================================*/ 


alter table банк
   drop constraint FK_БАНК_GENERALIZ_ЮРИК
go


alter table физик
   drop constraint FK_ФИЗИК_GENERALIZ_КЛИЕНТ
go


alter table юрик
   drop constraint FK_ЮРИК_GENERALIZ_КЛИЕНТ
go


if exists (select  1 
            from  sysobjects
           where  id = object_id('банк')
            and   type = 'U')
   drop table банк
go


if exists (select  1 
            from  sysobjects
           where  id = object_id('клиент')
            and   type = 'U')
   drop table клиент
go


if exists (select  1 
            from  sysobjects
           where  id = object_id('физик')
            and   type = 'U')
   drop table физик
go


if exists (select  1 
            from  sysobjects
           where  id = object_id('юрик')
            and   type = 'U')
   drop table юрик
go


 /*==============================================================*/ 
 /* Table: банк                                                  */ 
 /*==============================================================*/ 
create table банк (
   клиент_id            int                  not null,
   бик                  int                  null,
   constraint PK_БАНК primary key  (клиент_id)
)
go


 /*==============================================================*/ 
 /* Table: клиент                                                */ 
 /*==============================================================*/ 
create table клиент (
   клиент_id            int                  not null,
   имя                  int                  null,
   инн                  int                  null,
   огрн                 int                  null,
   constraint PK_КЛИЕНТ primary key  (клиент_id)
)
go


 /*==============================================================*/ 
 /* Table: физик                                                 */ 
 /*==============================================================*/ 
create table физик (
   клиент_id            int                  not null,
   паспорт              int                  null,
   constraint PK_ФИЗИК primary key  (клиент_id)
)
go


 /*==============================================================*/ 
 /* Table: юрик                                                  */ 
 /*==============================================================*/ 
create table юрик (
   клиент_id            int                  not null,
   окато                int                  null,
   окпо                 int                  null,
   constraint PK_ЮРИК primary key  (клиент_id)
)
go


alter table банк
   add constraint FK_БАНК_GENERALIZ_ЮРИК foreign key (клиент_id)
      references юрик (клиент_id)
go


alter table физик
   add constraint FK_ФИЗИК_GENERALIZ_КЛИЕНТ foreign key (клиент_id)
      references клиент (клиент_id)
go


alter table юрик
   add constraint FK_ЮРИК_GENERALIZ_КЛИЕНТ foreign key (клиент_id)
      references клиент (клиент_id)
go
...
Рейтинг: 0 / 0
Физики и юрики
    #32693928
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> To guest_20040621: единая система идентификации любого клиента.

А зачем для этого сквозная нумерация?

> Пример общего атрибута: ИНН

Плохой пример. У меня, например, ИНН нет. И не предвидится. И не один я такой. Еще варианты?

> и много еще, если глубже рыть.

Вот я и прошу привести пример.
...
Рейтинг: 0 / 0
Физики и юрики
    #32693965
bazaea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Плохой пример. У меня, например, ИНН нет. И не предвидится. И не один я такой. Еще варианты?

Как минимум сквозной номер ))) (ну надо ему надо)
адрес юридический (прописки), фактический... какой менеджер работает с клиентом. Дата создания. Размер скидок и много чего, зависит от бизнес модели.
И по поводу не один я такой... Вы уверены?
...
Рейтинг: 0 / 0
Физики и юрики
    #32694017
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Как минимум сквозной номер ))) (ну надо ему надо)

Блин, да я и прошу объяснить, зачем. Зачем-то ведь это было сделано?

> адрес юридический (прописки), фактический...

Хех, уважаемый, Вы уверены, что юридический адрес это то же самое, что и прописка? Про фактический - это отдельная песня. Вы что под ним подразумеваете?

> какой менеджер работает с клиентом. Дата создания. Размер скидок и много
> чего, зависит от бизнес модели.

Это не атрибуты физического или юридического лица. Это атрибуты ваших бизнес-процессов.

> Вы уверены?

Абсолютно. Во-первых, человек не с рождения становится налогоплательщиком, правда? Во-вторых, в странах, отличных от РФ, - другая система идентификации налогоплательщиков.
...
Рейтинг: 0 / 0
25 сообщений из 138, страница 1 из 6
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Физики и юрики
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]