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 |

