powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как нужно спроектировать схему под такие условия ?
7 сообщений из 7, страница 1 из 1
Как нужно спроектировать схему под такие условия ?
    #38841941
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Подскажите пожалуйста. как нужно спроектировать таблицы по такой задаче. Задаю вопрос не по лабораторной работе а для понимания :)

Имеется Таблица заявок MainTable. заявки могут оставлять Организации (OrgTable) и Пользователи (UserTable).

MainTable
id RequesterID Type

Столбец Type:
1 - ссылка на OrgTable, 2 - ссылка на userTable

OrgTable
id Name

userTable
id name

Как спроектировать таблицы, чтобы можно было настроить Ограничения (уникальности, внешних ключей) для столбца MainTable.RequesterID ? Ведь он должен ссылатся на две таблицы !
В итоге в MainTable.RequesterID будут дубли (1,1,2,2) - т.к. она ссылается на 2 разные таблицы.

Может быть нужно пойти от обратного, и пусть в таблицах OrgTable/UserTable пусть будут ссылки на MainTable ? Но каким ограничением обеспечить, чтобы не появились "мертвые записи" в таблице MainTable в этом случае ?
...
Рейтинг: 0 / 0
Как нужно спроектировать схему под такие условия ?
    #38841953
vova ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,

общая должна быть таблица для Организации и Пользователи (Клиенты)
и поле Type - уже в ней

если для Организации и Пользователи реквизиты слишком разные, и вы не терпимы к "дырявым" таблицам,
то делаете ещё 2-е таб. КлиентыОрганизации и КлиентыПользователи , связанные в 1:(1,0) с Клиенты
...
Рейтинг: 0 / 0
Как нужно спроектировать схему под такие условия ?
    #38841956
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы выбираете подход, когда Организации (OrgTable) и Пользователи (UserTable) у Вас суть две разные сущности. Я бы предложил подумать над вариантом объединить их в одну сущность, скажем, Клиент. Тут проблемы с целостностью уже не возникнет, ибо формально таблица одна. Реально же их будет три - Client, ClientOrganizationExtended и ClientPersonExtended. В основной будут только базовые совместимые характеристики, в Extended - дополнительные и уникальные для типа клиента характеристики. Да, контроль целостности типа "вилка" останется. Но критичность нарушения целостности резко снизится, потому можно будет использовать методы контроля целостности, допускающие нарушение (удаление при CHECK CONSTRAINT, например). А можно вообще вместо двух Extended-таблиц пойти на создание одной EAV-таблицы. Там, правда, свои заморочки.
В общем, куда не плюнь, везде свои минусы... да, есть и ещё варианты, и тоже с минусами - фантазия-то у нас безгранична.
...
Рейтинг: 0 / 0
Как нужно спроектировать схему под такие условия ?
    #38841970
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Что означает "удаление при CHECK CONSTRAINT" ? Каким образом это реализуется ?

Я понимаю про каскадное удаление, но там связано с внешними ключами....
...
Рейтинг: 0 / 0
Как нужно спроектировать схему под такие условия ?
    #38842028
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekЧто означает "удаление при CHECK CONSTRAINT" ? Каким образом это реализуется ?
То, что тебя смутило в соседней теме " Как сделать такое ограничение ? ". Ни больше ни меньше...
...
Рейтинг: 0 / 0
Как нужно спроектировать схему под такие условия ?
    #38842040
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно было бы разделить MainTable на две таблицы по горизонтали.
Как вариант - отказаться от нормализации и собрать в общий "хвост" обе таблицы OrgTable и UseTable. Тогда появятся незаполненные поля.
...
Рейтинг: 0 / 0
Как нужно спроектировать схему под такие условия ?
    #38842052
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовКак вариант - отказаться от нормализации и собрать в общий "хвост" обе таблицы OrgTable и UseTable. Тогда появятся незаполненные поля.Пустые поля - не так страшно, как избыточные индексы. С хреновой тучей NULL-ов.

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


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