В моей работе, проверяя диаграммы базы данных, я нашел связь «один-к-одному» между двумя таблицами, но отношение не находится между двумя первичными ключами, между первичным ключом в одной таблице и другим атрибутом не первичного ключа в другой таблице. В диаграммах базы данных отображаются как отношения «один к одному». Интересно, как я могу создать такие отношения «один к одному», используя только одну первичную на одной таблице и используя не первичный ключ в другой таблице.Создание отношения «один-к-одному» с использованием только одного первичного ключа
Вот скрипты для «создания», что я нашел в базе данных
--------------- Для создания таблицы Agreement Документы --- -----------
CREATE TABLE [dbo].[AgreementDocuments](
[AgreementDocumentID] [int] IDENTITY(1,1) NOT NULL,
[AgreementID] [int] NOT NULL,
[Document] [varbinary](max) NOT NULL,
CONSTRAINT [PK_AgreementDocuments] PRIMARY KEY CLUSTERED
([AgreementDocumentID] ASC) WITH (PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
ALTER TABLE [dbo].[AgreementDocuments] WITH CHECK ADD CONSTRAINT
[FK_AgreementDocuments_Agreements] FOREIGN KEY([AgreementID])
REFERENCES [dbo].[Agreements] ([AgreementID])
GO
ALTER TABLE [dbo].[AgreementDocuments] CHECK CONSTRAINT
[FK_AgreementDocuments_Agreements]
GO
-------------------------- Создать таблицу соглашений - ---------------------
CREATE TABLE [dbo].[Agreements](
[AgreementID] [int] IDENTITY(1,1) NOT NULL,
[ContactID] [int] NOT NULL,
[ClientID] [int] NOT NULL,
CONSTRAINT [PK_Agreements] PRIMARY KEY CLUSTERED
([AgreementID] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE =
OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]GO
Если я запустил эти два запроса в отдельной базе данных, он создает две таблицы с отношением «Один ко многим». Как это возможно?
Он работает, большое спасибо! – Aben
С помощью этого решения есть ли какие-либо основания для сохранения поля 'СоглашениеDocumentID'? Может ли столбец «СоглашениеID» действовать как PK, FK и Identity для таблицы «СоглашениеDocuments»? – Nitax