상세 컨텐츠

본문 제목

외래키 추가하기

데이터베이스

by 김일국 2010. 10. 18. 16:20

본문

USE [BTY]
GO
/****** 개체:  Table [dbo].[T_BT_AFTERSCHOOL_CMT]    스크립트 날짜: 10/18/2010 14:45:58 ******/
SET ANSI_NULLS on
GO
SET QUOTED_IDENTIFIER on
GO
SET ANSI_PADDING on
GO
CREATE TABLE [dbo].[T_BT_AFTERSCHOOL_CMT](
 [COMMENT_NO] [int] NOT NULL,
 [EDUCATIONAL_GUBN] [varchar](6) NOT NULL,
 [IDX] [int] NOT NULL,
 [PASSWORD] [varchar](20) NULL,
 [COMMENT] [varchar](2000) NULL,
 [NAME] [varchar](20) NULL,
 [CREATE_DT] [datetime] NULL,
 [CREATE_ID] [varchar](11) NULL,
 [UPDATE_DT] [datetime] NULL,
 [UPDATE_ID] [varchar](11) NULL,
 CONSTRAINT [PK_AFTERSCHOOL_CMT] PRIMARY KEY CLUSTERED
(
 [COMMENT_NO] ASC,
 [EDUCATIONAL_GUBN] 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
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[T_BT_AFTERSCHOOL_CMT]  WITH CHECK ADD  CONSTRAINT [FK_AFTERSCHOOL_CMT] FOREIGN KEY([IDX],[EDUCATIONAL_GUBN])
-- * 외래키가 필요한 테이블의 기본키가 참조하는 테이블의 기본키 개수만큰 나열되어 있어야 한다.
REFERENCES [dbo].[T_BT_AFTERSCHOOL] ([IDX],[EDUCATIONAL_GUBN])

-- * 참조하는 테이블의 기본키가 모두 나열되어 있어야 한다.


Ps. 참고로 워크벤치Tool(Mysql)기준으로 논리ERD의 1:1과 1:N이 물리ERD 에서는 차이없이 1:N으로 표시됩니다.

ERD의 relationship mapping cardinality에서 1:1, 1:N 구분은 모두 1:N으로 보여집니다.

(그리고, 물리 ERD이기 때문에 N:M은 없습니다.)

위 ERD에서 1:1이 없는 이유는 아래와 같습니다.

DDL(Create, Alter)SQL문에 위 ...cardinality정보는 명시적으로 없습니다.

1:1, 1:N 관계를 결정하는 것은 Alter SQL의 Foreign 제약 조건입니다.

PK-FK 로 정의된 제약조건은 무조건 1:N 으로 표시됩니다.(아래에 기술참조)

https://stackoverflow.com/questions/38669331/how-to-determine-relationship-11-1n-nm-between-tables-when-reverse-engine

관련글 더보기

댓글 영역