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

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

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

хм..довольно таки интересный вариант. Спасибо! Буду пробовать.
...
Рейтинг: 0 / 0
02.07.2010, 11:04
    #36719414
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь с проектированием БД
krvsainflaterseа можно хоть намек в какую сторону копать
Как вариант...Непонятно, зачем нужно одного клиента представлять как множество физических и юридических лиц и как это потом понимать.
...
Рейтинг: 0 / 0
02.07.2010, 11:59
    #36719584
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь с проектированием БД
alexeyvg , не представляй...
...
Рейтинг: 0 / 0
02.07.2010, 16:28
    #36720369
_мод
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь с проектированием БД
inflaterseЗдраствуйте. Нуждаюсь в Вашей помощи...
Нужно создать реестр клиентов. Но среди клиентов могут быть как просто физ. лица так и целые компании. У них соответственно разные типы. Как реализовать такую схему?
Самое простое (и самое правильное): свалить все в одну таблицу и проклассифицировать
...
Рейтинг: 0 / 0
02.07.2010, 16:33
    #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
05.07.2010, 11:48
    #36722951
A1ek5andr0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна помощь с проектированием БД
_модinflaterseЗдраствуйте. Нуждаюсь в Вашей помощи...
Нужно создать реестр клиентов. Но среди клиентов могут быть как просто физ. лица так и целые компании. У них соответственно разные типы. Как реализовать такую схему?
Самое простое (и самое правильное): свалить все в одну таблицу и проклассифицировать
+1

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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


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