Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД. Договор: Юр.Лицо или Физ.Лицо / 25 сообщений из 30, страница 1 из 2
31.01.2010, 18:56
    #36441037
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
Приветствую коллеги!

Делаю свой Стартап и нужна Ваша помощь в организации структуры БД.


ЗАДАЧА
Организовать структуру БД хранения и выборки Заказов Компании

СУЩНОСТИ
1) КОМПАНИЯ - Company
2) ЗАКАЗЫ - CompanyOrder
3) ПОКУПАТЕЛЬ - Company or Employee
а) Юр. лицо;
б) Физ. лицо;

ЛОГИКА
У Компании есть Заказчик (в лице Юр.Лица либо Физ.Лица) который оформляет Заказ;

ПРОБЛЕМЫ
Т.к. Юр.Лицо и Физ.Лицо по определению два разных типа Заказчика, встает разумный вопрос:
- Как организовать структуру БД так, чтобы было удобно пользоваться не только конечному пользователю, но и разработчику?


ПРЕДПОЛАГАЕМАЯ СТРУКТУРА БД

Код: plaintext
1.
2.
Company
ID Key+Identity

Код: plaintext
1.
2.
3.
4.
5.
CompanyOrder
ID Key+Identity
CompanyID NotNull FK with Company.ID // ID Компании которой принадлежит Договор 
CompanyEmployeeID IsNull FK with Company.ID // ID Компании_Заказчика (Юр.Лицо)
EmployeeID IsNull FK with Employee.ID // ID Заказчика (Физ.Лицо)

Код: plaintext
1.
2.
Employee
ID Key+Identity

Данные планируется вытаскивать через EntityFramework.
Пример:
Вытащим Договор для Компании где ID=1 и получим:
Код: plaintext
1.
2.
3.
var res = ObjectContext.CompanyOrder.Include("Company").Include("Employee").Where(r => r.Company.ID == 1);
// получим res.CompanyEmployee == null если договор был создан для Физ.Лица
// и получим res.Employee == null если договор был создан для Юр.Лица


Что Вы на это скажете?


Да и еще маленький вопрос:
- В БД планируется использовать Адреса клиентов (для поиска/фильтрации/сортировки), нужно ли заводить доп. справочники которые будут содержать названия улиц, номера домов и квартир ?

Большое Спасибо за ответы.
...
Рейтинг: 0 / 0
01.02.2010, 10:52
    #36441601
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
уТКаПриветствую коллеги!


Однозначно нужно рассматривать отображение наследования объектов в БД, т.к. и компания и заказчики и ПОКУПАТЕЛЬ и Юр. лицо и Физ. лицо - являюцца контрагентами
...
Рейтинг: 0 / 0
01.02.2010, 12:44
    #36441925
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
уТКа wrote:

> Т.к. Юр.Лицо и Физ.Лицо по определению два разных типа Заказчика, встает
> разумный вопрос:
> - Как организовать структуру БД так, чтобы было удобно пользоваться не
> только конечному пользователю, но и разработчику?

Делать общего предка у юрлица и физлица, и на него оформлять заказы.

> Данные планируется вытаскивать через EntityFramework.

Твою идею я не понял.

> *Да и еще маленький вопрос:*
> - В БД планируется использовать Адреса клиентов (для
> поиска/фильтрации/сортировки), нужно ли заводить доп. справочники
> которые будут содержать названия улиц, номера домов и квартир ?

Зависит от твоей задачи.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
01.02.2010, 13:12
    #36441998
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
MasterZiv
обрисуйте на "пальцах" таблицах, как вы это представляете.

спасибо.
...
Рейтинг: 0 / 0
01.02.2010, 13:46
    #36442096
ineedyou
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
Employee - это работник компании, но никак не физлицо.

Ответьте на такие вопросы:
1) потребуется ли хранить историю изменений договора (доп. соглашений)?
2) потребуется ли сохранять старый адрес контрагента (не важно - физ или юр лица), в случае его смены?
...
Рейтинг: 0 / 0
01.02.2010, 13:54
    #36442123
ineedyou
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
3) еще возможна ситуация, когда вчерашнее физлицо (Вася) стал юрлицом (организовал ООО Василёк), сохранив при этом историю своих заказов в Компании ( => скидки и пр. ). Вы её сейчас откидываете?
...
Рейтинг: 0 / 0
01.02.2010, 13:58
    #36442133
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
с Employee - я действительно погорячился.

Заменим это неудачное слово на Customer.

2 ineedyou
нет, вести историю изменения договоров (доп. соглашений) и смены адресов контрагентов не нужно.
...
Рейтинг: 0 / 0
01.02.2010, 14:04
    #36442154
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
скидок как таковых пока не планировалось, но вполне вероятно что в дальнейшем потребуется реализовать.

пока не представляю как вписать этот кусок "скидки" в существующую модель БД.
...
Рейтинг: 0 / 0
01.02.2010, 14:18
    #36442204
ineedyou
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
Самый простой способ - в лоб, объединить все возможные аттрибуты и физ и юрлиц в одной сущности, добавив доп. аттрибут - тип клиента. На тип клиента можно повесить CHECK CONSTRAINT, который будет проверть NOT NULLность соотв. аттрибутов, если это будет продиктовано бизнес логикой (например у всех юриков поле ИНН должно быть непусто)
...
Рейтинг: 0 / 0
01.02.2010, 14:28
    #36442237
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
такой вариант проскакивал в голове, но его пришлось отсечь т.к. в ПО необходимо на поля навесить Валидаторы и в случае смешивания полей Юр. и Физ. лица ничего не выйдет.

в проекте будет использован Domain-driven design (DDD)
...
Рейтинг: 0 / 0
01.02.2010, 14:41
    #36442276
ineedyou
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
Для ПО можно предоставить отдельно 2 представления "ФизЛица" и "ЮрЛица" со своими аттрибутами.
Это что за "Валидаторы" такие, которые не могут учитывать сложные условия? Целостность данных и соответствие их БП вы хотите поддерживать исключительно на уровне приложения?
...
Рейтинг: 0 / 0
01.02.2010, 14:45
    #36442299
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
нет, валидаторы будут навешаны непосредственно в модели и такие сложные манипуляции там не возможны.

ПО будет делаться на Silverlight + WCF RIA Services
...
Рейтинг: 0 / 0
01.02.2010, 14:47
    #36442310
ineedyou
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
> ПО будет делаться на Silverlight + WCF RIA Services
> в проекте будет использован Domain-driven design (DDD)
> Данные планируется вытаскивать через EntityFramework.

Опишите, пожалуйста, какие это накладывает ограничения к модели данных?
...
Рейтинг: 0 / 0
01.02.2010, 14:58
    #36442346
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
пардон муа

авторДля ПО можно предоставить отдельно 2 представления "ФизЛица" и "ЮрЛица" со своими аттрибутами.
если это изначально будут две разные сущности, как описывал я в первом посте, то проблем не возникает, но если разделения на уровне "в уме" то не пройдет.

объясню почему нельзя
простой пример в смешанных полях:
имеем физ лицо, у него обязательны ФИО, адрес, телефон, нужно навесить валидатор на эти поля, вводим, работает.
НО!
Нам ведь в эту же таблицу нужно вводить и Юр.Лиц, делаем валидаторы на него и получается что валидаторы от Юр.Лица и Физ.Лица смешались, т.е. нужно вводить и ФИО и Адрес и Телефон и ПБОЮЛ и ИИН и БИК и БАНК и Счет для ВСЕХ!

вот поэтому сущности лучше сразу разнести, дыба геморроя не было.
...
Рейтинг: 0 / 0
01.02.2010, 15:02
    #36442356
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
ПБОЮЛ и ИИН и БИК и БАНК и Счет для ВСЕХ!А что мешает сделать их необязательными для определенного вида лица ?
...
Рейтинг: 0 / 0
01.02.2010, 15:08
    #36442376
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
2 LSV
DDD

зачем мешать котлеты и конфеты? (с) Мой препод
...
Рейтинг: 0 / 0
01.02.2010, 15:09
    #36442377
ineedyou
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
LSVПБОЮЛ и ИИН и БИК и БАНК и Счет для ВСЕХ!А что мешает сделать их необязательными для определенного вида лица ?

Я собственно про это и говорил выше:

авторНа тип клиента можно повесить CHECK CONSTRAINT, который будет проверть NOT NULLность соотв. аттрибутов, если это будет продиктовано бизнес логикой (например у всех юриков поле ИНН должно быть непусто)

Но ТС видимо имеет в виду какие-то свои валидаторы, которые не дают ему покоя.

Автор: если тебе в интерфейсе нужно проверять (валидировать) вводимые пользователем данные В ЗАВИСИМОСТИ от типа, так сделай этот интерфейс (форму/окно/что там у тебя) умной. Если у тебя, в связи с выбором платформы, с этим проблемы, сделай ДВА интерфейса - один для юрлиц, другой для физ.
Валидация же данных на уровне БД проблем не доставит в описанном случае.
...
Рейтинг: 0 / 0
01.02.2010, 15:10
    #36442381
ineedyou
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
авторзачем мешать котлеты и конфеты? (с) Мой препод
Ты сейчас наплодишь ненужные сущности в своём "стартапе" на ровном месте, а надо бы подумать о скидках, изменениях к договорам и пр
...
Рейтинг: 0 / 0
01.02.2010, 15:22
    #36442412
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
валидаторы вполне стандартные,
которые представляет возможным использовать сама WCF RIA Services.

нужно подумать и посоветоваться,
сходу не хочется применять такую "слепленную" структуру.

спасибо.
...
Рейтинг: 0 / 0
01.02.2010, 15:30
    #36442436
ineedyou
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
Второе решение, с выделением вырожденной сущности Клиент и его имплементаций КлиентЮрлицо и КлиентФизлицо вам уже приводили:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Order
--------
ord_id PRIMARY KEY
ord_cl_id FOREIGN KEY REFERENCES client(cl_id)
[прочие аттрибуты заказа]

Client
--------
cl_id PRIMARY KEY
cl_type  NOT NULL CHECK (cl_type='PERSON' and cl_per_id is not null) OR (cl_type='CORPORATE' and cl_corp_id IS NOT NULL)
cl_per_id FOREIGN KEY REFERENCES Person(per_id)
cl_corp_id FOREIGN KEY REFERENCES Corporate(corp_id)

Person
-----------------
clper_id PRIMARY KEY
[аттрибуты клиента физлица]


Corporate
-----------------
corp_id PRIMARY KEY
[аттрибуты клиента юрлица]

Если вы и его откините, потому что тут сущность Client в чистом виде вырождена и вам не удобна, меняйте либо парадигму DDD либо своё её понимание :)
...
Рейтинг: 0 / 0
01.02.2010, 15:46
    #36442466
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
2 ineedyou
реализация вполне нормальная.

видимо это и имел ввиду автор MasterZiv.

Спасибо большое.
...
Рейтинг: 0 / 0
01.02.2010, 16:35
    #36442585
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
уТКа2 LSV
DDD

зачем мешать котлеты и конфеты? (с) Мой преподСудя по всему Вам важнее какие-то порожняковые аббревиатуры (Silverlight + WCF RIA Services, DDD, EF и пр.), а не результат.
Делайте разные сущности. Да хоть десять.
...
Рейтинг: 0 / 0
01.02.2010, 16:35
    #36442587
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
уТКа Что Вы на это скажете? По моему, разумно будет использовать термины, применяемые в страховании:
Страхователь
Выгодоприобретатель
Застрахованный
Страховщик
Этих субъектов нужно упомянуть в договоре и по закону.
Каждый субъект может быть как юрлицом, так и физлицом.
...
Рейтинг: 0 / 0
01.02.2010, 18:40
    #36442922
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
LSVСудя по всему Вам важнее какие-то порожняковые аббревиатуры
пускай и так, но я не хочу плодить ужас на который спустя время можно будет взглянуть лишь через слезы.
...
Рейтинг: 0 / 0
01.02.2010, 18:41
    #36442925
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура БД. Договор: Юр.Лицо или Физ.Лицо
уТКа,
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД. Договор: Юр.Лицо или Физ.Лицо / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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