SQL Server를 사용하여 일대일 관계 생성
SQL Server를 사용하여 일대일 관계를 어떻게 생성합니까?
- 고유한 기본 키를 사용하여 두 테이블(예: A 및 B)을 정의합니다.
- 테이블 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
테이블 이름, 이 경우 bid
표 B의 열 이름
이것은 고전적인 주문 예제의 간단한 예입니다.각 고객은 여러 개의 주문을 가질 수 있으며, 각 주문은 여러 개의 주문 라인으로 구성될 수 있습니다.
외부 키 열을 추가하여 관계를 만듭니다.각 주문 레코드에는 고객의 ID를 나타내는 고객 ID가 있습니다.마찬가지로, 각 주문 라인에는 주문이 있습니다.ID 값.데이터베이스 다이어그램은 다음과 같습니다.
이 다이어그램에는 실제 외부 키 제약 조건이 있습니다.옵션이지만 데이터의 무결성을 보장합니다.또한 데이터베이스를 사용하는 모든 사용자가 데이터베이스의 구조를 명확하게 알 수 있습니다.
테이블 자체를 작성하는 방법을 알고 계실 겁니다.그런 다음 그들 사이의 관계를 정의하기만 하면 됩니다.물론 여러 사람이 게시한 대로 T-SQL에서 제약 조건을 정의할 수 있지만 설계자를 사용하여 제약 조건을 쉽게 추가할 수도 마찬가지입니다.SQL Management Studio를 사용하면 Order 테이블을 마우스 오른쪽 단추로 클릭하고 Design을 클릭할 수 있습니다(2005년에는 Edit이라고도 할 수 있습니다).그런 다음 열린 창에서 마우스 오른쪽 단추를 클릭하고 관계를 선택합니다.
오른쪽에 그리드 보기가 있을 것이며 다른 대화상자가 하나 더 표시됩니다.첫 번째 행 중 하나는 "표 및 열 사양"입니다.해당 줄을 클릭한 다음 오른쪽에 나타나는 작은 [...] 단추를 다시 클릭합니다.다음 대화 상자가 표시됩니다.
오른쪽에서 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
'programing' 카테고리의 다른 글
Git: 분기에 대해 기본적으로 구성된 원격은 무엇입니까? (0) | 2023.06.22 |
---|---|
WHERE 조건 없이 SQL Server의 테이블에서 '첫 번째' 레코드 삭제 (0) | 2023.06.22 |
사용자 정의 클래스가 있는 힌트 입력 (0) | 2023.06.22 |
ASP.NET 캐시 추가 대 삽입 (0) | 2023.06.22 |
실시간 데이터베이스에 안전하지 않은 규칙이 있다는 Firebase 이메일 (0) | 2023.06.22 |