|
|
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
Добрый день. Ситуация такова. На данный момент существует три типа Заявок, для разных нужд (к примеру жалобы на интернет жалобы на тарификацию и т.п.). В каждой заявке есть общие поля такие как имя абонента, phoneNumber, DateReception, EmployeeReception и т.п., и есть поля характерные только для данной формы заявки. Т.е. к примеру для заявки на интернет будет существовать поле "скорость передачи", для тарификации - "ошибочная стоимость" и т.д. Задача: Нужно сделать так чтобы клиенту можно было назвать номер заявки и в дальнейшем по этому номеру заявки определить к какому типу относится жалоба (т.е. один ID на все таблицы, сколько бы их нибыло). Предполагаемое решение 1: По принципу наследования: Все поля, являющиеся одинаковыми для всех таблиц вынести в отдельную таблицу BASE. Для каждого типа заявки сделать таблицу и ID-шник передавать в основную таблицу BASE. А в BASE также добавить поля с типом заявки, автоинкремент (которое как раз и будет называться клиенту) и поле для хранением непосредственно ID заявки. Предполагаемое решение 2: Сделать все тоже самое, но вместо создания таблиц для каждого типа заявок, определить в таблице BASE поле XML и хранить там всю информацию по заявке. Как я понимаю это все называется типизацией. Но как правильно её провести пока немогу сообразить. Подскажите как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 11:25 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
Killo, Примитивный Help Desk - так будет правильней я думаю)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 11:39 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
Killo, это диплом, или надо чтобы реально работало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 11:51 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов, Нужно чтобы реально работало. Одна из главных задач: гибкость структуры, чтобы можно было добавлять бесконечное количество типов заявок и как я уже упоминал это один ID на все заявки. Я больше склоняюсь к выбору с XML, но меня смущает вопрос: как это отразиться на производительности? Так как одно из основных требований к системы - построение всевозможных репортов с извращенной статистикой по времени, номерам, регионам, типам и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 12:04 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
KilloНужно чтобы реально работало Тогда никаких XML. Вариант 1 только если совсем в академизм охота удариться. Проще же всего сделать одну табличку с заявками безо всякого наследования и с NULL-полями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 12:29 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов, А как реализовать разграничения по типам заявок, повторюсь в каждом типе разные колонки с разными типами данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 12:42 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
KilloА как реализовать разграничения по типам заявок, повторюсь в каждом типе разные колонки с разными типами данных Как хотите, так и реализовывайте. В чем конкретно проблема-то? Наделали кучу полей. Решили, какие поля для каких типов доступны. Забацали это. Все, можно бить по рукам и открывать шампанское. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 12:53 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
Killoповторюсь в каждом типе разные колонки с разными типами данных что-то я не очень представляю какой такой совсем уж разный тип данных может быть в примитивном хелп-деске. ну даты в заявке (получения-исполнения blah-blah-blah)... ну куча FK на справочники абонентов и исполнителей... ну логические прайорити - комплиты, чек-пойнты... так они для любого типа заявки годятся и для всех типов будут обязательными - все остальное, опциональное, текст - сколько хочешь полей столько и добавляй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 13:01 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
Т.е. если я вас правильно понимаю - создать одну общую таблицу для всех заявок. При создании нового типа заявки (новой формы опроса) просто добавить соответствующие колонки к этой таблице. Я думал над этим вариантом в самом начале, но этот он мне показался не оптимальным, в силу того что при существовании 20 типов заявок, у каждой из которых разных полей этак 5, количество полей в результирующей таблице будет равно: 100 + (приблизительно 5 схожих полей для всех заявок) = 105 колонок. Простите за эстетику, но мне кажется такой подход не совсем элегантен (аналогично если бы ООП лишить наследования). Или я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 13:29 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
KilloТ.е. если я вас правильно понимаю - создать одну общую таблицу для всех заявок. При создании нового типа заявки (новой формы опроса) просто добавить соответствующие колонки к этой таблице. Я думал над этим вариантом в самом начале, но этот он мне показался не оптимальным, в силу того что при существовании 20 типов заявок, у каждой из которых разных полей этак 5 , количество полей в результирующей таблице будет равно: 100 + ( приблизительно 5 схожих полей для всех заявок ) = 105 колонок. Простите за эстетику, но мне кажется такой подход не совсем элегантен (аналогично если бы ООП лишить наследования). Или я ошибаюсь? 100 полей - это сильно, но к вопросу топика это не относится. Для отчетов заведите справочник "Тип заявки", добавьте в табличку это поле. Не забудьте FK. :-) Если 5 разных - это не проблема. А если 100 разных... Значит, нужна нормализация. Или переопределение полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 13:54 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
Killo, Велосипед уже придуман. На Bugzilla посмотри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 14:39 |
|
||
|
Приментивный Help Desk
|
|||
|---|---|---|---|
|
#18+
Killo105 колонок 105 полей - это фигня. KilloПростите за эстетику, но мне кажется такой подход не совсем элегантен (аналогично если бы ООП лишить наследования). Или я ошибаюсь? Аналогия несколько неуместная. Впрочем, если хотите, можете наделать табличек по типам заявок и хранить атрибуты в них. Пока не упретесь в ограничения конкретной СУБД, будет примерно пофигу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 15:43 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=90&tid=1543317]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 403ms |

| 0 / 0 |
