Вот мой сценарий на SQL Server 2008 R2:Как я могу заставить один к одному отношения на SQL Server 2008 или 2008 R2
Это мой первый стол:
CREATE TABLE [dbo].[Foos](
[FooId] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
CONSTRAINT [PK_Foos] PRIMARY KEY CLUSTERED
(
[FooId] ASC
)
) ON [PRIMARY]
Это вторая таблица, которая имеет отношение к Foos
таблице:
CREATE TABLE [dbo].[Bars](
[BarId] [int] IDENTITY(1,1) NOT NULL,
[FooId] [int] NOT NULL,
[Name] [nvarchar](50) NULL,
CONSTRAINT [PK_Bars] PRIMARY KEY CLUSTERED
(
[BarId] ASC
)
) ON [PRIMARY]
Go
ALTER TABLE [dbo].[Bars] WITH CHECK ADD CONSTRAINT [FK_Bars_Foos] FOREIGN KEY([FooId])
REFERENCES [dbo].[Foos] ([FooId])
ON DELETE CASCADE
GO
Но это не один к одному. Что я должен сделать, чтобы заставить это быть отношения one to one
? Должен ли я использовать контрольные ограничения?
Это имеет большой смысл. Одна вещь, на мой взгляд, заключается в том, что существует действительно один-один термин отношения или нет. Скажем, я использую инструмент ORM и читаю схему БД. будет ли инструмент ORM видеть это от одного к одному? Я знаю, что это зависит от инструмента, но есть ли здравый смысл? – tugberk
@tugberk: Я видел, что Hibernate создает дополнительные таблицы, которые не нужны. Здравый смысл заключается в определении модели/дизайна в базе данных независимо от того, что говорит ORM. Но это мое мнение как парень базы данных :) – gbn