Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ссылки из одного поля в несколько таблиц / 8 сообщений из 8, страница 1 из 1
16.08.2010, 14:04
    #36793517
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ссылки из одного поля в несколько таблиц
в бд есть таблица со списком неких объектов, журнальные данные по которым хранятся в разных таблицах, откуда для построения отчета извлекаются значения столбца val (общего для всех журналов) по этим объектам за период времени

таблица объектов имеет вид (id, title, table_name, obj_Id), где table_name - имя журнала, откуда будет извлекаться val; obj_Id - пк объекта в этом журнале (не совпадает с Id, на самом деле этот ключ составной, но для примера я упростил)

проблема в том, что криво написанные клиенты/чьи-то руки могут в obj_Id могут помещать значения, нарушающие целостность данных, то есть id, которых нет в журнале table_name

вижу вариант, как от этого избавиться: навесить сложное ограничение на сочетание table_name и obj_id, либо же вместо этих двух сделать несколько столбцов table_n_Id, повесить на них fk на нужные таблицы и установить ограничение, что заполнен может быть только один. какой вариант лучше (удобнее для построения отчетных запросов, быстрее выборка, удобнее поддерживать) и почему?

ms sql 2008
...
Рейтинг: 0 / 0
16.08.2010, 14:36
    #36793601
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ссылки из одного поля в несколько таблиц
Shakill
проблема в том, что криво написанные клиенты/чьи-то руки могут в obj_Id могут помещать значения, нарушающие целостность данных, то есть id, которых нет в журнале table_name

не то написал, имел в виду что в obj_Id могут попадать значения ключа, которых нет в справочниках объектов соотв. типов, и варианты констрейтов будут связаны с этими справочниками, а не с журналами
...
Рейтинг: 0 / 0
16.08.2010, 15:35
    #36793814
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ссылки из одного поля в несколько таблиц
Автор, приведите, пожалуйста, схему, иллюстрирующую то, что Вы на словах рассказали
Извините, со слов трудно воспринимается
...
Рейтинг: 0 / 0
16.08.2010, 15:57
    #36793873
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ссылки из одного поля в несколько таблиц
Паганель,



в Table_Name хранятся названия журналов - Table_1, Table_2, ...
нужно сделать чтоб в obj_Id не могли попасть значения, которых нет в соотв-щих Obj_Type_N, рассматриваю вариант разбить Obj_Id на несколько полей Obj_N_id по количеству журналов, навесить FK и убрать поле Table_Name либо при существующей схеме придумать констрейнт на Table_Name + obj_Id.

не могу выбрать что лучше, критерии написал выше
...
Рейтинг: 0 / 0
16.08.2010, 16:08
    #36793894
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ссылки из одного поля в несколько таблиц
Я - за вариантShakillразбить Obj_Id на несколько полей Obj_N_id по количеству журналов, навесить FK и убрать поле Table_Nameпочему - не знаю, честное пионерское
на всякий случай свежак: условие на поля таблицы
...
Рейтинг: 0 / 0
16.08.2010, 17:10
    #36794079
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ссылки из одного поля в несколько таблиц
Паганель, тоже не могу объяснить, но выбрал тот же вариант
...
Рейтинг: 0 / 0
16.08.2010, 17:25
    #36794111
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ссылки из одного поля в несколько таблиц
Shakill, а чем грозит потеря "целостности данных", почему Вы ее так боитесь? Судя по описанию, обычный реестр объектов. Самое страшное что можно придумать - это плодить поля с ID для каждого типа объекта.
...
Рейтинг: 0 / 0
16.08.2010, 17:30
    #36794124
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ссылки из одного поля в несколько таблиц
iscrafm, вот конкретно в этом примере оно и не так страшно, просто хочу быть последовательным. если какой-то пользователь или сторонний софт начинает поставлять в базу некорректные данные и это выплывает не сразу, то работы становится больше, в том числе и мне
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ссылки из одного поля в несколько таблиц / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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