|
|
|
Верное решение для связки таблиц
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые коллеги. Возникла такая дилемма. На приложенном рисунке часть структуры БД. Загвоздка заключается в том, что не могу придумать лучшее решение для следующего вопроса. Сущность "Услуга" имеет такие атрибуты, как "Тип", "Тариф" (в зависимости от типа, но это делается в коде приложения) и "Используемый ресурс"... Но ресурсом может быть и телефонный номер, а может быть и ip-адрес (опять же в зависимости от типа услуги). Но обязательно нужна такая связка, чтобы в единый момент времени не могло существовать двух услуг с одинаковыми, например телефонными номерами. Что лучше здесь сделать? -- С уважением, Сергей Кузнецов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 14:13 |
|
||
|
Верное решение для связки таблиц
|
|||
|---|---|---|---|
|
#18+
не совсем понял этоавторНо обязательно нужна такая связка, чтобы в единый момент времени не могло существовать двух услуг с одинаковыми, например телефонными номерами. имхо, таблица tbl_resources здесь лишняя. Правильнее сделать в tbl_services два внешних ключа (FK) на таблицы номеров и ipшников, а с помощью ограничений типа CHECK обеспечить, чтобы ссылка была только на один из двух возможных ресурсов. Обсеспечение уникальности телефонных номеров в таблице услуг можно сделать на триггерах. Какая СУБД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 14:33 |
|
||
|
Верное решение для связки таблиц
|
|||
|---|---|---|---|
|
#18+
[quot]Обсеспечение уникальности телефонных номеров в таблице услуг можно сделать на триггерах. Какая СУБД?[/quot] PostgreSQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 14:49 |
|
||
|
Верное решение для связки таблиц
|
|||
|---|---|---|---|
|
#18+
kuznecov.sg, задачу подробнее опишите. Вообще шаблон такой: типизация идентификаторов + типизация сервисов + типизация тарификации + связь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 18:20 |
|
||
|
Верное решение для связки таблиц
|
|||
|---|---|---|---|
|
#18+
Я бы tbl_resources организовал как view вида Select NumberId as ResourceID, 1 as ResourceType from tbl_Numbers_capacity Union Select IPAddressID as ResourceID, 2 as ResourceType from tbl_Ip_capacity И связывал tbl_services c этим view (если СУБД позволяет). Тогда ограничение организуется тривиально - уникальный constraint на (ResourceID, ResourceType) в tbl_services. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 18:47 |
|
||
|
Верное решение для связки таблиц
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинЯ бы tbl_resources организовал как view вида А я бы так не организовывал. За удобства надо платить, а плата - скорость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 19:06 |
|
||
|
Верное решение для связки таблиц
|
|||
|---|---|---|---|
|
#18+
Senya_L А я бы так не организовывал. За удобства надо платить, а плата - скорость. Скорость чего? Выборок? Обновлений? Вы как-то абстрактно говорите о скорости -не зная ничего про задачу, не зная, какие операции предполагается осуществлять на этой схеме, не зная, насколько вообще тут критична скорость... Я так не умею, я умею говорит о скорости (и оптимизации по скорости), только имея в виду конкретные операции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 21:21 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=95&tid=1543533]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 340ms |

| 0 / 0 |
