У меня есть таблица с именем Books, которая содержит 3 столбца.
TableName: Books
Columns: BookId (PK), BookName, Book_Publisher_XRef_Id (FK), IsInternal
У меня есть две таблицы, которые содержат информацию об издателе.Обе эти таблицы имеют различный набор столбцов.
TableName: InternalPublishers
Columns: PublisherId (PK), PublisherName, ....
TableName: ExternalPublishers
Columns: PublisherId (PK), PublisherName, ....
У меня есть таблица ссылок, которая содержит информацию о том, какая книга принадлежит какому издателю.В одной книге может быть несколько издателей.
TableName: Books_Publishers_XRef
Columns: Book_Publisher_XRef_Id (PK), PublisherId
Если я хочу создать ограничение внешнего ключа для PublisherId, мне нужно создать своего рода ограничение Составного внешнего ключа, которое, я не уверен, может быть создано.
Таким образом, в этом сценарии, каков наилучший способ получения FK для PublisherId в таблице Books_Publishers_XRef?
Разбить таблицу Books_Publishers_XRef на 2 таблицы, т.е. одну для внутренних издателей и другую для внешнихИздатели и имеют 2 столбца в таблице «Книги» для таблиц Books_Internal_Publishers_XRef и Books_External_Publishesr_XRef?
Не создавать FK для столбца Publisher_Id и оставить дизайн как есть?
Создать составной FK, добавив столбец Publisher_Type_Id в таблицу Books и таблицу Books_Publishers_XRef, где, если Publisher_Type_Id = 1, он принадлежит таблице Internal_Publishers и Publisher_Type_Id = 2, принадлежит таблице External_Publishers?(Не уверен, что это возможно)
Какой-то другой дизайн схемы?
Пожалуйста, сообщите.