powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Приментивный Help Desk
13 сообщений из 13, страница 1 из 1
Приментивный Help Desk
    #35922093
Killo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Ситуация такова. На данный момент существует три типа Заявок, для разных нужд (к примеру жалобы на интернет жалобы на тарификацию и т.п.). В каждой заявке есть общие поля такие как имя абонента, phoneNumber, DateReception, EmployeeReception и т.п., и есть поля характерные только для данной формы заявки. Т.е. к примеру для заявки на интернет будет существовать поле "скорость передачи", для тарификации - "ошибочная стоимость" и т.д.
Задача: Нужно сделать так чтобы клиенту можно было назвать номер заявки и в дальнейшем по этому номеру заявки определить к какому типу относится жалоба (т.е. один ID на все таблицы, сколько бы их нибыло).
Предполагаемое решение 1: По принципу наследования: Все поля, являющиеся одинаковыми для всех таблиц вынести в отдельную таблицу BASE. Для каждого типа заявки сделать таблицу и ID-шник передавать в основную таблицу BASE. А в BASE также добавить поля с типом заявки, автоинкремент (которое как раз и будет называться клиенту) и поле для хранением непосредственно ID заявки.
Предполагаемое решение 2: Сделать все тоже самое, но вместо создания таблиц для каждого типа заявок, определить в таблице BASE поле XML и хранить там всю информацию по заявке.

Как я понимаю это все называется типизацией. Но как правильно её провести пока немогу сообразить.
Подскажите как быть?
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35922140
Killo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Killo,

Примитивный Help Desk - так будет правильней я думаю))))
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35922186
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Killo, это диплом, или надо чтобы реально работало?
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35922223
Killo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Васкецов,

Нужно чтобы реально работало. Одна из главных задач: гибкость структуры, чтобы можно было добавлять бесконечное количество типов заявок и как я уже упоминал это один ID на все заявки.
Я больше склоняюсь к выбору с XML, но меня смущает вопрос: как это отразиться на производительности? Так как одно из основных требований к системы - построение всевозможных репортов с извращенной статистикой по времени, номерам, регионам, типам и т.п.
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35922317
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KilloНужно чтобы реально работало
Тогда никаких XML. Вариант 1 только если совсем в академизм охота удариться. Проще же всего сделать одну табличку с заявками безо всякого наследования и с NULL-полями.
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35922356
Killo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Васкецов,

А как реализовать разграничения по типам заявок, повторюсь в каждом типе разные колонки с разными типами данных
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35922412
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KilloА как реализовать разграничения по типам заявок, повторюсь в каждом типе разные колонки с разными типами данных
Как хотите, так и реализовывайте. В чем конкретно проблема-то? Наделали кучу полей. Решили, какие поля для каких типов доступны. Забацали это. Все, можно бить по рукам и открывать шампанское.
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35922442
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Killoповторюсь в каждом типе разные колонки с разными типами данных

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

ну даты в заявке (получения-исполнения blah-blah-blah)...
ну куча FK на справочники абонентов и исполнителей...
ну логические прайорити - комплиты, чек-пойнты...

так они для любого типа заявки годятся и для всех типов будут обязательными -
все остальное, опциональное, текст - сколько хочешь полей столько и добавляй
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35922541
Killo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. если я вас правильно понимаю - создать одну общую таблицу для всех заявок. При создании нового типа заявки (новой формы опроса) просто добавить соответствующие колонки к этой таблице. Я думал над этим вариантом в самом начале, но этот он мне показался не оптимальным, в силу того что при существовании 20 типов заявок, у каждой из которых разных полей этак 5, количество полей в результирующей таблице будет равно: 100 + (приблизительно 5 схожих полей для всех заявок) = 105 колонок. Простите за эстетику, но мне кажется такой подход не совсем элегантен (аналогично если бы ООП лишить наследования). Или я ошибаюсь?
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35922654
Michael_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KilloТ.е. если я вас правильно понимаю - создать одну общую таблицу для всех заявок. При создании нового типа заявки (новой формы опроса) просто добавить соответствующие колонки к этой таблице. Я думал над этим вариантом в самом начале, но этот он мне показался не оптимальным, в силу того что при существовании 20 типов заявок, у каждой из которых разных полей этак 5 , количество полей в результирующей таблице будет равно: 100 + ( приблизительно 5 схожих полей для всех заявок ) = 105 колонок. Простите за эстетику, но мне кажется такой подход не совсем элегантен (аналогично если бы ООП лишить наследования). Или я ошибаюсь?

100 полей - это сильно, но к вопросу топика это не относится.
Для отчетов заведите справочник "Тип заявки", добавьте в табличку это поле. Не забудьте FK. :-)
Если 5 разных - это не проблема. А если 100 разных... Значит, нужна нормализация. Или переопределение полей.
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35922841
SQL Bigot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Killo,

Велосипед уже придуман. На Bugzilla посмотри
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35923056
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Killo105 колонок
105 полей - это фигня.

KilloПростите за эстетику, но мне кажется такой подход не совсем элегантен (аналогично если бы ООП лишить наследования). Или я ошибаюсь?
Аналогия несколько неуместная. Впрочем, если хотите, можете наделать табличек по типам заявок и хранить атрибуты в них. Пока не упретесь в ограничения конкретной СУБД, будет примерно пофигу.
...
Рейтинг: 0 / 0
Приментивный Help Desk
    #35923586
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не говоря уже о том, что двадцать типов заявок очевидный перебор.

автору:

вернитесь к сбору требований и подготовке ТЗ
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Приментивный Help Desk
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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