Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
 ID из разных таблиц в одной таблице  [new]
Мимопроходил1
Guest
Есть три таблицы:
  • с юрлицами
  • с физлицами
  • с участниками сделки

    Несколько юрлиц и физлиц могут участвовать в одной сделке.

    Как лучше в таблице с участниками сделки хранить ссылки на соответствующие таблицы?

    Додумался только до такого варианта: в таблице с участниками сделки добавить дополнительное поле с указанием таблицы (юрлицо или физлицо), по которому можно будет понять какой id из какой таблицы.
  • 30 сен 17, 11:44    [20833177]     Ответить | Цитировать Сообщить модератору
     Re: ID из разных таблиц в одной таблице  [new]
    hVostt
    Member

    Откуда:
    Сообщений: 11790
    Мимопроходил1,

    Можно добавить три поля: тип участника, id физ. лица, id юр. лица. Тогда не потеряется ссылочная целостность.
    30 сен 17, 12:36    [20833264]     Ответить | Цитировать Сообщить модератору
     Re: ID из разных таблиц в одной таблице  [new]
    hVostt
    Member

    Откуда:
    Сообщений: 11790
    Мимопроходил1,

    Или для юр. лиц и физ. лиц сделать общую таблицу с отношением 1:1 по ID, и работать с ним.
    30 сен 17, 12:36    [20833266]     Ответить | Цитировать Сообщить модератору
     Re: ID из разных таблиц в одной таблице  [new]
    Дедушка
    Member

    Откуда: Город трёх революций
    Сообщений: 4671
    Мимопроходил1,

    раз уж вы сделали две отдельные таблицы для физ и юр
    значит это было осознано и для этого были причины...

    - табл_физлица
    - табл_юрлица
    - табл_сделки
    - бридж_табл_физучастники_сделки (М2М)
    - бридж_табл_юручастники_сделки (М2М)
    30 сен 17, 13:25    [20833325]     Ответить | Цитировать Сообщить модератору
     Re: ID из разных таблиц в одной таблице  [new]
    LSV
    Member

    Откуда: Киев
    Сообщений: 30150
    раз уж вы сделали две отдельные таблицы для физ и юр
    значит это было осознано и для этого были причины ...
    С каких это пор профнепригодность это уважительная причина ?
    2 окт 17, 10:25    [20835567]     Ответить | Цитировать Сообщить модератору
     Re: ID из разных таблиц в одной таблице  [new]
    Дедушка
    Member

    Откуда: Город трёх революций
    Сообщений: 4671
    LSV,

    К сообщению приложен файл. Размер - 5Kb
    2 окт 17, 12:46    [20836045]     Ответить | Цитировать Сообщить модератору
     Re: ID из разных таблиц в одной таблице  [new]
    tunknown
    Member

    Откуда:
    Сообщений: 419
    Мимопроходил1
    Несколько юрлиц и физлиц могут участвовать в одной сделке.


    create	table	damit.ProtocolEntity
    (	Id		damit.TGUID		not null,
    	Email		damit.TGUID		null,
    	SFTP		damit.TGUID		null,
    	FTPS		damit.TGUID		null,
    	Folder		damit.TGUID		null,
    constraint	PKdamitProtocolEntity		primary	key	nonclustered	( Id ),
    constraint	FKdamitProtocolEntityEmail	foreign	key	( Email )	references	damit.Email	( Id ),
    constraint	FKdamitProtocolEntitySFTP	foreign	key	( SFTP )	references	damit.SFTP	( Id ),
    constraint	FKdamitProtocolEntityFTPS	foreign	key	( FTPS )	references	damit.FTPS	( Id ),
    constraint	FKdamitProtocolEntityFolder	foreign	key	( Folder )	references	damit.Folder	( Id ),
    constraint	CKdamitProtocolEntity		check	( Id=	isnull ( convert ( varbinary ( 16 ),	Email ),	0x )+
    								isnull ( convert ( varbinary ( 16 ),	SFTP ),		0x )+
    								isnull ( convert ( varbinary ( 16 ),	FTPS ),		0x )+
    								isnull ( convert ( varbinary ( 16 ),	Folder ),	0x ) )	) 
    

    Если идентификаторы целочисленные, то их нужно получать через identity из этой общей таблицы перед вставкой в частные. Если таблица не содержит много записей и можно использовать guid, то вставляем сразу в частные, потом сюда- в общую. Получаем эмуляцию внешнего ключа на несколько таблиц.
    9 окт 17, 09:48    [20853539]     Ответить | Цитировать Сообщить модератору
    Все форумы / Проектирование БД Ответить