|
|
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, коллеги! Проектирую БД, в которой центральным элементом буду являться пользователи. Причем пользователей системы будет несколько типов. Для каждого типа характерен свой набор атрибутов. Я придумал сделать следующим образом t_users - общая таблица пользователей (здесь будут сохраняться идентификаторы пользователей и общие атрибуты, например, текущее состояние и тип - физ. лица, юр. лица и т.д.). t_physical_users - пользователи, являющиеся физическими лицами (ФИО, паспортные данные, контактная информация и т.д.) t_juridical_users - пользователи, являющиеся юридическими лицами (реквизиты, юр. адрес, инн/кпп и т.д.) В таблицах t_physical_users и t_juridical_users будут сохраняться ссылки на таблицу t_users. Насколько это оптимально? Как считаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 23:45 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Monty67Насколько это оптимально? Как считаете?Вполне ничего, с пивом потянет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 23:58 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Monty67Здравствуйте, коллеги! Проектирую БД, в которой центральным элементом буду являться пользователи. Причем пользователей системы будет несколько типов. Для каждого типа характерен свой набор атрибутов. Я придумал сделать следующим образом t_users - общая таблица пользователей (здесь будут сохраняться идентификаторы пользователей и общие атрибуты, например, текущее состояние и тип - физ. лица, юр. лица и т.д.). t_physical_users - пользователи, являющиеся физическими лицами (ФИО, паспортные данные, контактная информация и т.д.) t_juridical_users - пользователи, являющиеся юридическими лицами (реквизиты, юр. адрес, инн/кпп и т.д.) В таблицах t_physical_users и t_juridical_users будут сохраняться ссылки на таблицу t_users. Насколько это оптимально? Как считаете? вполне оптимально. назначьте в каждой таблице идентификатор пользователя первичным ключем и джойны будут быстро выполняться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 09:14 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Приведу пример того, что у меня имеется на текущий момент. Код: 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. Один-к-одному: Users <-> JuridicalClients Один-к-одному: Users <-> PhysicalClients У меня вопрос на счет того, как обеспечить целостность. Грубо говоря в таблице JuridicalClients не может быть записи с идентификатором, который уже присутствует в таблице PhysicalClients. Ведь пользователь не может быть одновременно и физическим лицом и юридическим. Как правильно добавить пользователя. Допустим я хочу добавить новое юр. лицо. Как это грамотно сделать одним запросом на вставку?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 09:22 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Monty67Здравствуйте, коллеги! Проектирую БД, в которой центральным элементом буду являться пользователи. Причем пользователей системы будет несколько типов. Для каждого типа характерен свой набор атрибутов. Насколько это оптимально? Как считаете? перечислю возможные проблемы: 1. Работал человек ЧЛ позже создал своё ЮР ЛИЦО. Но при этом иногда продолжает работать как ЧЛ а иногда как ЮР Лицо. После он купил еще одну фирму однодневку, потом ещё. 2. Появляется очень большая фирма и хочется отразить не только день рождения фирмы но и день рождения директора. Итого - добавляй связи и отношения между фирмами. P.S. Я пришел к EAV структуре для добавочных атрибутов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 09:28 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
У меня такой поблемы возникнуть не может по той причине, что пользователи это те товарищи, с которыми заключается договор. ПО моей придмтной области меня не интересует что он является физ. лицом и юр. лицом. Или что у него 10 организаций. Если каждая заключила договор, то ради бога. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 09:43 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
У вас частные предприниматели кем в системе будут? Физиками или юриками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 11:54 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
К юрикам, а при необходимости можно будет создать новую табличу для ЧПшников. Я для этого такой подход и предлагаю, чтобы можно было вынести отдельно пользователей у которых свои личные атрибуты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 14:30 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Почитайте вот это обсуждение . Оно все про это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 15:01 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Monty67У меня вопрос на счет того, как обеспечить целостность. Грубо говоря в таблице JuridicalClients не может быть записи с идентификатором, который уже присутствует в таблице PhysicalClients.Ведь пользователь не может быть одновременно и физическим лицом и юридическим.Посмотрите ссылку, которую я выложил в предыдущем посте. Там был и такой вариант. Хотя очень часто на это "кладут" и считают, что это ограничение будет реализовано на уровне интерфейса. Monty67Как правильно добавить пользователя. Допустим я хочу добавить новое юр. лицо. Как это грамотно сделать одним запросом на вставку?..Ну, одним запросом в две таблицы - это не все БД еще умеют. Добавлять придется, скорее всего, двумя запросами. Или написать ХП для добавления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 15:05 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2008, 16:28 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Shtock баян Никакой полезной информации из предложенного Вами обсуждения я не извлек. Обсуждается другая предметная область, где в итоге пришли к реализации с одной таблицей и ролями. Это не мой случай. Что по Вашему там могло быть для меня полезным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2008, 14:04 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Monty67Приведу пример того, что у меня имеется на текущий момент. Код: 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. Один-к-одному: Users <-> JuridicalClients Один-к-одному: Users <-> PhysicalClients У меня вопрос на счет того, как обеспечить целостность. Грубо говоря в таблице JuridicalClients не может быть записи с идентификатором, который уже присутствует в таблице PhysicalClients. Ведь пользователь не может быть одновременно и физическим лицом и юридическим. Как правильно добавить пользователя. Допустим я хочу добавить новое юр. лицо. Как это грамотно сделать одним запросом на вставку?.. Одним запросом на вставку заполнить две таблицы нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2008, 14:44 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Да, с этим все понятно. Вставка будет реализована с помощью транзакции из двух запросов INSERT. А как быть с тем, что в разных типах объектах не может быть записей с одинаковым родителем? Я имею в виду ситуацию, что не может быть клиента, который является одновременно и физическим и юридическим лицом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2008, 20:22 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Monty67Да, с этим все понятно. Вставка будет реализована с помощью транзакции из двух запросов INSERT. А как быть с тем, что в разных типах объектах не может быть записей с одинаковым родителем? Я имею в виду ситуацию, что не может быть клиента, который является одновременно и физическим и юридическим лицом.Можно сделать ссылку не просто на userId, а на 2 поля - userId и type В подчинённых таблицах, конечно, добавить этот type и сделать чек констрэйн ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2008, 09:47 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
Monty67А как быть с тем, что в разных типах объектах не может быть записей с одинаковым родителем? Я имею в виду ситуацию, что не может быть клиента, который является одновременно и физическим и юридическим лицом.Вам уже сказали, но перечитайте мою ссылку внимательнее там и дальше есть интересные моменты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2008, 10:54 |
|
||
|
Пользователи системы разных типов
|
|||
|---|---|---|---|
|
#18+
alexeyvgMonty67Да, с этим все понятно. Вставка будет реализована с помощью транзакции из двух запросов INSERT. А как быть с тем, что в разных типах объектах не может быть записей с одинаковым родителем? Я имею в виду ситуацию, что не может быть клиента, который является одновременно и физическим и юридическим лицом.Можно сделать ссылку не просто на userId, а на 2 поля - userId и type В подчинённых таблицах, конечно, добавить этот type и сделать чек констрэйн Я понял Ваш вариант. Я использую СУБД MySQL 5.1, и насколько я выяснил, CHECK CONSTRAINT не работает в ней. Реализован чисто синтаксически. Если я ошибаюсь, поправьте меня, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 20:28 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35591360&tid=1543623]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
262ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 596ms |

| 0 / 0 |
