|
|
|
Структура базы данных
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! В базе данных есть две таблицы: это UT_Companies(Компании) и UT_Accounts(Аккаунты). Две таблицы находятся в отношении один ко многим, то есть у одной компании может быть сколько угодно много аккаунтов. У таблицы аккаунтов есть поле "номер аккаунта" и дата его создания. У каждой компании из всех аккаунтов есть основной аккаунт, который выдавался сразу же при заключении договора с компанией. И поэтому в системе отчетности в нашей компании всех наших контрагентов удобно называть не по наименованиям (поскольку часто наименования очень похожи друг на друга),а по номерам главного аккаунта, тем более что этот номер аккаунта уникальный в пределах не одной компании, а всего справочника. В связи с этим в запросах постоянно нужно получать номер главного аккаунта (или можно даже так сказать что номер компании) и естественно этот запрос повсеместно будет проще строить, если этот номер будет являться полем таблицы компаний (UT_Companies), но с архитектурной точки зрения будет правильно в таблице компаний иметь ссылку на главный аккаунт. При этом естественно запросы усложнятся. Также при этом возникнет такая коллизия: до создания любого аккаунта, необходимо создать компанию, но компания в таком случае должна содержать ссылку на главный аккаунт, которого еще нет. Посоветуйте, что можно сделать в этой ситуации или по Вашему мнению может лучше просто дублировать поле номера главного аккаунта в таблице компаний? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 15:00 |
|
||
|
Структура базы данных
|
|||
|---|---|---|---|
|
#18+
а если триггер при вставки новой компании по-умолчанию создавать аккаунт, делать его главным - заполнять ссылку в таблице компаний. Потом можно редактировать этот аккаунт отдать пользователю. С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 15:10 |
|
||
|
Структура базы данных
|
|||
|---|---|---|---|
|
#18+
rsolanov Посоветуйте, что можно сделать в этой ситуации или по Вашему мнению может лучше просто дублировать поле номера главного аккаунта в таблице компаний? 1) дублировать 2) в аккаунтах создать поле MAIN_ACC (Y, N), соответственно править его, не допуская ситуации, что несколько акааунтов для одной компании = Y 3) новая таблица MAIN_ACCOUNTS, допустим с датами действия - тогда можно узнать, какой акааунт был главным в то или иное время вариант нужно выбирать исходя из потребностей и затрат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 15:16 |
|
||
|
Структура базы данных
|
|||
|---|---|---|---|
|
#18+
Nafа если триггер при вставки новой компании по-умолчанию создавать аккаунт, делать его главным - заполнять ссылку в таблице компаний. Потом можно редактировать этот аккаунт отдать пользователю. С уважением, Naf Это принципиально можно будет сделать только в триггере типа AFTER INSERT (не INSTEAD) А при этом придется позволить внешнему ключу в таблице компаний разрешить значение NULL. Насколько это правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 16:42 |
|
||
|
Структура базы данных
|
|||
|---|---|---|---|
|
#18+
Naf, так же в этом случае придется создавать аккаунт со значениями по умолчанию. А представляете реакцию пользователя, когда он увидит не им созданный аккаунт с данными, совершенно несоответствующими реальной действительности? Дублировать тоже не хотелось бы, но возможно именно в этом случае это лучший вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2009, 17:26 |
|
||
|
Структура базы данных
|
|||
|---|---|---|---|
|
#18+
Infernal V. Ravenвариант нужно выбирать исходя из потребностей и затрат Полностью соглашусь. Пока что нет полного набора требований, например, непонятно, нужно хранить значения основных аккаунтов для исторических данных (скорее всего, да), или только для текущих. И еще что-то может вылезти, влияющее на решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2009, 02:01 |
|
||
|
Структура базы данных
|
|||
|---|---|---|---|
|
#18+
divvInfernal V. Ravenвариант нужно выбирать исходя из потребностей и затрат Полностью соглашусь. Пока что нет полного набора требований, например, непонятно, нужно хранить значения основных аккаунтов для исторических данных (скорее всего, да), или только для текущих. И еще что-то может вылезти, влияющее на решение. Требования есть. Исторические данные об главных аккаунтах хранить не нужно. Есть компания, а у нее есть аккаунты, один из которых ВСЕГДА будет являться главным. Это совершенно точно и эти требования будут неизменны. Так что какие мысли? Как это будет сделать более оптимально? Заранее Вам благодарен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2009, 10:41 |
|
||
|
Структура базы данных
|
|||
|---|---|---|---|
|
#18+
rsolanov, я привел вам 3 варианта чем не устраивают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2009, 10:45 |
|
||
|
Структура базы данных
|
|||
|---|---|---|---|
|
#18+
rsolanovNafа если триггер при вставки новой компании по-умолчанию создавать аккаунт, делать его главным - заполнять ссылку в таблице компаний. Потом можно редактировать этот аккаунт отдать пользователю. С уважением, Naf Это принципиально можно будет сделать только в триггере типа AFTER INSERT (не INSTEAD) А при этом придется позволить внешнему ключу в таблице компаний разрешить значение NULL. Ну и что? А если rsolanovпросто дублировать поле номера главного аккаунта в таблице компаний? будет по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2009, 11:18 |
|
||
|
|

start [/forum/topic.php?fid=32&gotonew=1&tid=1542942]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
7ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 477ms |

| 0 / 0 |
