Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Борьба с полиморф ссылками / 6 сообщений из 6, страница 1 из 1
17.10.2006, 23:08
    #34061973
Алексей Кр
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с полиморф ссылками
Кто подскажет, как бороться с полиморф ссылками? Ситуация следующая исходная таблица, кв которой на полиморф указывают две ячейки, первая на таблицу, из которой брать записи, вторая ячейка - номер записи из соответствующей таблицы. Подскажите пожалуйста, как быть? Как побороть такие полиморф ссылки, как лучше перепроектировать несколько таблиц? Заранее благодарен!
...
Рейтинг: 0 / 0
18.10.2006, 01:20
    #34062097
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с полиморф ссылками
Как бороться - перепроектированием :)
Сложно универсально ответить на подобный вопрос, не зная задачи. Это все равно как спросить "Как бороться с операторами GOTO в программах?"
Например, можно все множество таблиц, на которые идут такие ссылки,
обьединить в одну со сквозным ключом, а специфичные для каждой поля хранить отдельно, в таблице вида (тип сущности, id сущности, название поля, значение поля).
Но это так, заплатка - скорее всего, изначальный дизайн сделан плохо, надо пересматривать его.
...
Рейтинг: 0 / 0
18.10.2006, 09:12
    #34062321
Серж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с полиморф ссылками
Или как говорит Матроскин или в таблице (в которой хранится связка "номер таблицы+ номер записи") сделать нескольо ссылок на все возможные таблицы. Получится список возможных внешних ключей, но в этом списке все поля кроме одного будут нуловскими. Таким образом можно будет возложить контроль целостности данных на сервер.

Но это тоже заплатка. Ваша задача до конца не формализована. Нужно или "добивать" ее до конца (что не всегда реально и нужно), либо бороться вот такими заплатками. Мне больше нравится вариант со списком внешних ключей -- меньше шансов "потерять" связи, которые потом ручками придется восстанавливать.
...
Рейтинг: 0 / 0
18.10.2006, 12:27
    #34063093
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с полиморф ссылками
Если это сделано не со зла:), то никак. Очевидно дизайн приложения исходит из того, что набор таблиц может неограниченно расширяться в силу каких-то неподконтрольных нам причин.
...
Рейтинг: 0 / 0
29.10.2006, 07:48
    #34089070
CrazyPotato
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с полиморф ссылками
Кот МатроскинНапример, можно все множество таблиц, на которые идут такие ссылки,
обьединить в одну со сквозным ключом, а специфичные для каждой поля хранить отдельно, в таблице вида (тип сущности, id сущности, название поля, значение поля).
В вашей таблице тип поля значение поля какой будет? Нужен универсальный какой-то тип, чтобы и VarChar2 хранил, и DateTime, и Number; такого типа по-моему, не бывает.

Сержсделать нескольо ссылок на все возможные таблицы
Проблема в том, что набор этих всевозможных таблиц, которые представляют одну сущность, может изменяться.
А применять каждый раз на рабочей базе операторы ЯОД считаю признаком криво спроектированной БД.

ModelRЕсли это сделано не со зла:), то никак. Очевидно дизайн приложения исходит из того, что набор таблиц может неограниченно расширяться в силу каких-то неподконтрольных нам причин.
Неужели действительно никак? Теория реляционных баз данных тут сдаётся?
...
Рейтинг: 0 / 0
29.10.2006, 13:26
    #34089303
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с полиморф ссылками
CrazyPotato
В вашей таблице тип поля значение поля какой будет?

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


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