programing

SQL Server를 사용하여 일대일 관계 생성

powerit 2023. 6. 22. 22:33
반응형

SQL Server를 사용하여 일대일 관계 생성

SQL Server를 사용하여 일대일 관계를 어떻게 생성합니까?

  1. 고유한 기본 키를 사용하여 두 테이블(예: A 및 B)을 정의합니다.
  2. 테이블 A의 열을 테이블 B의 기본 키를 기반으로 외부 키 관계를 갖는 열로 정의

즉, 표 A는 표 B의 단일 레코드와 관련된 하나 이상의 레코드를 가질 수 있습니다.

테이블이 이미 있는 경우 ALTER TABLE 문을 사용하여 외부 키 제약 조건을 만듭니다.

ALTER TABLE A ADD CONSTRAINT fk_b FOREIGN KEY (b_id) references b(id) 
  • fk_b외부 키 제약 조건의 이름. 데이터베이스에 고유해야 합니다.
  • b_id외부 키 관계를 만들 테이블 A의 열 이름
  • b테이블 이름, 이 경우 b
  • id표 B의 열 이름

이것은 고전적인 주문 예제의 간단한 예입니다. 고객은 여러 의 주문을 가질 수 있으며, 주문은 여러 개의 주문 라인으로 구성될 수 있습니다.

외부 키 열을 추가하여 관계를 만듭니다.각 주문 레코드에는 고객의 ID를 나타내는 고객 ID가 있습니다.마찬가지로, 각 주문 라인에는 주문이 있습니다.ID 값.데이터베이스 다이어그램은 다음과 같습니다.

enter image description here

이 다이어그램에는 실제 외부제약 조건이 있습니다.옵션이지만 데이터의 무결성을 보장합니다.또한 데이터베이스를 사용하는 모든 사용자가 데이터베이스의 구조를 명확하게 알 수 있습니다.

테이블 자체를 작성하는 방법을 알고 계실 겁니다.그런 다음 그들 사이의 관계를 정의하기만 하면 됩니다.물론 여러 사람이 게시한 대로 T-SQL에서 제약 조건을 정의할 수 있지만 설계자를 사용하여 제약 조건을 쉽게 추가할 수도 마찬가지입니다.SQL Management Studio를 사용하면 Order 테이블을 마우스 오른쪽 단추로 클릭하고 Design을 클릭할 수 있습니다(2005년에는 Edit이라고도 할 수 있습니다).그런 다음 열린 창에서 마우스 오른쪽 단추를 클릭하고 관계를 선택합니다.

오른쪽에 그리드 보기가 있을 것이며 다른 대화상자가 하나 더 표시됩니다.첫 번째 행 중 하나는 "표 및 열 사양"입니다.해당 줄을 클릭한 다음 오른쪽에 나타나는 작은 [...] 단추를 다시 클릭합니다.다음 대화 상자가 표시됩니다.

Foreign key constraint

오른쪽에서 Order 테이블이 이미 선택되어 있어야 합니다.왼쪽 드롭다운에서 Customer 테이블을 선택합니다.그런 다음 왼쪽 그리드에서ID기둥.오른쪽 그리드에서 다음을 선택합니다.CustomerID기둥.대화 상자를 닫고 다음 대화 상자를 닫습니다.Ctrl+S를 눌러 저장합니다.

이러한 제약 조건이 있으면 고객 레코드가 수반되지 않는 주문 레코드가 존재할 수 없습니다.

이와 같은 데이터베이스를 효과적으로 쿼리하려면 JOIN에 대한 내용을 읽어보는 것이 좋습니다.

이것이 제가 주로 하는 방식입니다(sql server).

Create Table Master (
MasterID int identity(1,1) primary key,
Stuff varchar(10)
)
GO
Create Table Detail (
DetailID int identity(1,1) primary key,
MasterID int references Master, --use 'references'
Stuff varchar(10))
GO
Insert into Master values('value')
--(1 row(s) affected)
GO
Insert into Detail values (1, 'Value1') -- Works
--(1 row(s) affected)
insert into Detail values (2, 'Value2') -- Fails
--Msg 547, Level 16, State 0, Line 2
--The INSERT statement conflicted with the FOREIGN KEY constraint "FK__Detail__MasterID__0C70CFB4". 
--The conflict occurred in database "Play", table "dbo.Master", column 'MasterID'.
--The statement has been terminated.

보시다시피 외부 키 때문에 세부 정보에 두 번째 삽입이 실패합니다.테이블 생성 중 또는 테이블 생성 후에 FK를 정의하기 위한 다양한 구문을 보여주는 좋은 웹 링크가 있습니다.

http://www.1keydata.com/sql/sql-foreign-key.html

SSMS를 사용하지 않는 경우 구문은 다음과 같습니다.

ALTER TABLE <table_name>
ADD <constraint_name> FOREIGN KEY 
(<column_name1> ,
<column_name2> )
REFERENCES <table_name>
(<column_name1> ,
<column_name2>)

http://infogoal.com/sql/sql-add-foreignkey.htm

선생님과 학생과 같은 두 종류의 실체에 대해 이야기한다면, 각각 두 개의 표와 세 번째 표를 만들어 관계를 저장할 것입니다.이 세 번째 테이블은 두 개의 열을 가질 수 있습니다, 선생님.ID와 학생 ID.이것이 당신이 찾고 있는 것이 아니라면, 당신의 질문을 자세히 설명해 주세요.

언급URL : https://stackoverflow.com/questions/1308339/create-a-one-to-many-relationship-using-sql-server

반응형