FOREIGN KEY OLUŞTURMA (VERİ BÜTÜNLÜĞÜ SAĞLAMA)
YABANCI BIR ANAHTAR, iki tabloyu birbirine bağlamak için kullanılan bir anahtardır.
FOREIGN KEY, başka bir tablodaki TEMEL ANAHTARINA başvuran bir tablodaki bir alan (veya alanların toplanması) 'dir.
Yabancı anahtar içeren tabloya alt tablo denir ve aday anahtarı içeren tabloya, başvurulan veya üst tablo denir.
Aşağıdaki iki tabloya bakın
Foreign key olarak kullanılacak tablo PERSONS tablosunda bulunan PERSONID alanı
USE [DENEME]
GO
/****** Object: Table [dbo].[PERSONS] Script Date: 13.07.2017 00:14:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PERSONS](
[PERSONID] [int] IDENTITY(1,1) NOT NULL,
[ADI] [nchar](100) NULL,
CONSTRAINT [PK_PERSONS] PRIMARY KEY CLUSTERED
(
[PERSONID] 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
Foreign key olarak kullanılacak tablo MASTER tablosunda bulunan PERSONID alanına girilen veriler bütünlük sağlanması açısından foreign key oluşturuluyor..
USE [DENEME]
GO
/****** Object: Table [dbo].[MASTER] Script Date: 13.07.2017 00:15:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[MASTER](
[ID] [int] IDENTITY(1,1) NOT NULL,
[PERSONID] [int] NULL,
[ACIKLAMA] [nchar](100) NULL,
[MIKTAR] [numeric](18, 2) NULL,
CONSTRAINT [PK_MASTER] PRIMARY KEY CLUSTERED
(
[ID] 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
ALTER TABLE [dbo].[MASTER] WITH CHECK ADD CONSTRAINT [FK_MASTER_MASTER_PERSONID] FOREIGN KEY([PERSONID])
REFERENCES [dbo].[PERSONS] ([PERSONID])
GO
ALTER TABLE [dbo].[MASTER] CHECK CONSTRAINT [FK_MASTER_MASTER_PERSONID]
GO
https://www.youtube.com/watch?v=TpKcAmaaBts
http://www.ismailgursoy.com.tr/foreign-keys-olusturma/
Burada yeterince anlatılmış..Detaylar açısından..
İşlemin yapılması içinde
GO
/****** Object: Table [dbo].[PERSONS] Script Date: 13.07.2017 00:14:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PERSONS](
[PERSONID] [int] IDENTITY(1,1) NOT NULL,
[ADI] [nchar](100) NULL,
CONSTRAINT [PK_PERSONS] PRIMARY KEY CLUSTERED
(
[PERSONID] 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
Foreign key olarak kullanılacak tablo MASTER tablosunda bulunan PERSONID alanına girilen veriler bütünlük sağlanması açısından foreign key oluşturuluyor..
USE [DENEME]
GO
/****** Object: Table [dbo].[MASTER] Script Date: 13.07.2017 00:15:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[MASTER](
[ID] [int] IDENTITY(1,1) NOT NULL,
[PERSONID] [int] NULL,
[ACIKLAMA] [nchar](100) NULL,
[MIKTAR] [numeric](18, 2) NULL,
CONSTRAINT [PK_MASTER] PRIMARY KEY CLUSTERED
(
[ID] 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
ALTER TABLE [dbo].[MASTER] WITH CHECK ADD CONSTRAINT [FK_MASTER_MASTER_PERSONID] FOREIGN KEY([PERSONID])
REFERENCES [dbo].[PERSONS] ([PERSONID])
GO
ALTER TABLE [dbo].[MASTER] CHECK CONSTRAINT [FK_MASTER_MASTER_PERSONID]
GO
https://www.youtube.com/watch?v=TpKcAmaaBts
http://www.ismailgursoy.com.tr/foreign-keys-olusturma/
Burada yeterince anlatılmış..Detaylar açısından..
İşlemin yapılması içinde
Eğer bir tabloya sonradan ekleyecekseniz sonrada ya kod kullanacaksınız veya sql yönetim paneli ile ekleyeceksiniz veya
CREATE TABLE ..... yerine CREATE alter ile tabloda değişiklik yapacaksınız...
Hiç yorum yok