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

По поводу примера то постараюсь описать более детально:
Имеются клиенты. Среди них могут быть как просто частные лица(которые имеют имена, фамилии, пол и т.д.) и компании(название, тип предоставляемых услуг). Ну еще все они могут иметь общие поля адреса и контакты(их я планирую вынести в отдельные таблицы). Собственно немогу понять как згрупировать частных лиц и компании в клиентов.
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36719212
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inflaterseа можно хоть намек в какую сторону копать
Как вариант...

Типы клиентовКодНазвание
КлиентыКодДатаКод типа клиента
Физ.лицаКодКод клиентаДругие поля
Юр.лицаКодКод клиентаДругие поля
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36719275
inflaterse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa
Как вариант...

хм..довольно таки интересный вариант. Спасибо! Буду пробовать.
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36719414
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsainflaterseа можно хоть намек в какую сторону копать
Как вариант...Непонятно, зачем нужно одного клиента представлять как множество физических и юридических лиц и как это потом понимать.
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36719584
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg , не представляй...
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36720369
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
inflaterseЗдраствуйте. Нуждаюсь в Вашей помощи...
Нужно создать реестр клиентов. Но среди клиентов могут быть как просто физ. лица так и целые компании. У них соответственно разные типы. Как реализовать такую схему?
Самое простое (и самое правильное): свалить все в одну таблицу и проклассифицировать
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36720394
Flying Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inflaterseЗдраствуйте. Нуждаюсь в Вашей помощи...
Нужно создать реестр клиентов. Но среди клиентов могут быть как просто физ. лица так и целые компании. У них соответственно разные типы. Как реализовать такую схему?

В базе данных нужно создать сущности Клиент, Физическое лицо, Организация. При этом две последние наследуются от первой.

Для SQL Server 2008 это может выглядить так (код не отлаженный):

Код: 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.
create table Client (
        Client_Id bigint identity not null,
        Program_User_Id bigint not null)
go

alter table Client add constraint Client_PK primary key (Client_Id)
go

create table Person(
  Person_Id bigint not null,
  First_Name nvarchar( 100 ) not null,
  Second_Name nvarchar( 255 ) not null)
go

alter table Person
  add constraint Person_PK primary key (Person_Id)
go

alter table Person
  add constraint Client_Person_FK1 foreign key (Person_Id)
   references Client( Client_Id) on update no action on delete no action
go

create table Organization (
  Organization_Id bigint not null,
  Name nvarchar( 50 ) not null)
go

alter table Organization
  add constraint Organization_PK primary key (Organization_Id)
go

alter table Organization
  add constraint Client_Organization_FK1 foreign key (Organization_Id)
   references Client(Client_Id) on update no action on delete no action
go
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36722951
A1ek5andr0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модinflaterseЗдраствуйте. Нуждаюсь в Вашей помощи...
Нужно создать реестр клиентов. Но среди клиентов могут быть как просто физ. лица так и целые компании. У них соответственно разные типы. Как реализовать такую схему?
Самое простое (и самое правильное): свалить все в одну таблицу и проклассифицировать
+1

Только типы вынести в отдельную таблицу для улучшения масштабируемости.

Client
id name address contacts type_id1 Вася Пупкин СССР рельса 12 Шарашкина контора Лысая гора 2232332223 2

Client_type
id name1 Физлицо2 Организация
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36723094
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A1ek5andr0_модСамое простое (и самое правильное): свалить все в одну таблицу и проклассифицировать
+1Речь-то идёт о случае, когда у физического лица и организации много разных атрибутов, иначе бы и вопрос не задавался.

А в этом случае делать 50 полей для физлица и 50 для юрлица в одной таблице как то не очень...

A1ek5andr0Только типы вынести в отдельную таблицу для улучшения масштабируемости.

Client
id name address contacts type_id1 Вася Пупкин СССР рельса 12 Шарашкина контора Лысая гора 2232332223 2

Client_type
id name1 Физлицо2 ОрганизацияИ как это масштабируемость (линейное увеличение производительности при апгрейде железа) связано с наличием справочника типов???
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36725599
A1ek5andr0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда я за этот вариант:

Типы клиентовКодНазвание
КлиентыКодДатаКод типа клиента
Физ.лицаКодКод клиентаДругие поля
Юр.лицаКодКод клиентаДругие поля
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36725645
Фотография Rin@t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A1ek5andr0, не могу понять, что такое "Типы клиентов"?
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36725763
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A1ek5andr0Тогда я за этот вариант:Нормальный вариант предложил Flying Dutchman.

Вы хоть представляете, какую логику ваша модель пытается отобразить?
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36726289
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgA1ek5andr0_модСамое простое (и самое правильное): свалить все в одну таблицу и проклассифицировать
+1Речь-то идёт о случае, когда у физического лица и организации много разных атрибутов, иначе бы и вопрос не задавался.

А в этом случае делать 50 полей для физлица и 50 для юрлица в одной таблице как то не очень...


На мой взгляд это единственный минус.
Плюсы - проще структура БД, меньше трудозатраты на разработку-поддержку.
Тем более в том же MS SQL для этого очень удачно подходят sparse-столбцы)

Еще вариант(экзотический, не рекомендую использовать, т.к. это подходит скорее для свойств товаров):

таблица "Клиенты"
<общие параметры для ФЛ или ЮЛ>
<тип клиента>
<xml-поле, которое хранит "уникальные" свойства типа клиента>
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36726393
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КритикalexeyvgРечь-то идёт о случае, когда у физического лица и организации много разных атрибутов, иначе бы и вопрос не задавался.

А в этом случае делать 50 полей для физлица и 50 для юрлица в одной таблице как то не очень...


На мой взгляд это единственный минус.
Плюсы - проще структура БД, меньше трудозатраты на разработку-поддержку.
Тем более в том же MS SQL для этого очень удачно подходят sparse-столбцы)Вот как раз, по моему, тут будет сложнее структура, сложнее поддерживать.

Для меня разный набор полей в каждой записи - это не упрощение структуры и не упрощение поддержки.

Про целостность и всё такое тут речи вообще нету.

КритикЕще вариант(экзотический, не рекомендую использовать, т.к. это подходит скорее для свойств товаров):

таблица "Клиенты"
<общие параметры для ФЛ или ЮЛ>
<тип клиента>
<xml-поле, которое хранит "уникальные" свойства типа клиента>Этот вариант сейчас не такой уж экзотический, но тоже не рекомендую :-)
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36726952
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgНормальный вариант предложил Flying Dutchman.
По хранению данных это будет тот же вариант, что написал я... Только у меня таблички а у него наследование и сущности...
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36727675
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaalexeyvgНормальный вариант предложил Flying Dutchman.
По хранению данных это будет тот же вариант, что написал я... Только у меня таблички а у него наследование и сущности...Ничего себе одинаковый!

У него для одного клиента в таблице персон может быть дополнительная запись данныех для клиента как персоны.
У вас для одного клиента в таблице персон могут быть множество записей с такими данными.

Чего они означать-то будут, что с ними потом делать? Выбирать для клиента первого попавшегося человека?
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36727699
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgУ вас для одного клиента в таблице персон могут быть множество записей с такими данными.А уникальные ключи уже отменили, да?
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36727739
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tangliralexeyvgУ вас для одного клиента в таблице персон могут быть множество записей с такими данными.А уникальные ключи уже отменили, да?Ну, в абсурдной схеме данных можно и триггерами целостность поддерживать, можно "сверку" какую-нибуть делать.

Не проще сразу сделать связь 1=1, как всегда в таких случаях?
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36727892
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg, а я плавно вас к этой мысли и подводил :)
PS. поздравляю с юбилеем: 8888
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36727948
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tangliralexeyvg, а я плавно вас к этой мысли и подводил :)А я в первом своём посте об этом и написал. И у Flying Dutchman так и сделано.

tanglirPS. поздравляю с юбилеем: 8888Спасибо, сам бы и не заметил :-)
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36729004
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg , ну вроде как разобрались что к чему?
...
Рейтинг: 0 / 0
нужна помощь с проектированием БД
    #36729182
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inflaterse,

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


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