복붙노트

[SQL] SQL Server를 사용하여 많은 관계로 하나 만들기

SQL

SQL Server를 사용하여 많은 관계로 하나 만들기

어떻게 SQL Server를 사용하여 많은 관계로 하나를 만들려면 어떻게해야합니까?

해결법

  1. ==============================

    1.표 A 표 B의 하나의 레코드와 관련된 레코드를 하나 이상 가질 수있는 수단이

    표 A 표 B의 하나의 레코드와 관련된 레코드를 하나 이상 가질 수있는 수단이

    이미 장소에 테이블이있는 경우, 외래 키 제약 조건을 만들려면 ALTER TABLE 문을 사용합니다 :

    ALTER TABLE A ADD CONSTRAINT fk_b FOREIGN KEY (b_id) references b(id) 
    
  2. ==============================

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

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

    당신은 외래 키 열을 추가하여 관계를 만들 수 있습니다. 각 주문 기록은에서의 CustomerID, 고객의 ID에 그 포인트를 가지고있다. 유사하게, 각각의 주문 행 OrderID에 값을 갖는다. 데이터베이스 다이어그램의 모습입니다 :

    이 그림에서 실제 외래 키 제약 조건이있다. 그들은 선택 사항이지만 그들은 데이터의 무결성을 보장합니다. 또한, 그들은 그것을 사용하는 모든 사용자에게 명확 데이터베이스의 구조를 확인하십시오.

    난 당신이 테이블 자체를 만드는 방법을 알고 있다고 가정. 그럼 그냥 그들 사이의 관계를 정의 할 필요가있다. (여러 사람에 의해 게시 된) 당신은 물론 T-SQL에서 제약 조건을 정의 할 수 있지만 쉽게 디자이너를 사용하여 추가하고 있습니다. SQL Management Studio를 사용하여, 당신은 주문 테이블을 마우스 오른쪽 단추로 클릭 (내가 2005에서 편집을 호출 할 수 있습니다 생각) 디자인을 클릭합니다. 그리고 어디서든 관계를 마우스 오른쪽 단추로 클릭하고 열리는 창이다.

    당신은 그리드 뷰가 있어야 오른쪽에 또 다른 대화 상자를 얻을 것이다. 첫 번째 라인 중 하나는 "테이블 및 열 사양"을 읽습니다. 그 선을 클릭 한 후 작은 다시 클릭 [...] 버튼이 오른쪽에 나타납니다. 이 대화 상자를 얻을 것이다 :

    주문 테이블은 이미 오른쪽을 선택해야합니다. 왼쪽 드롭 다운에서 고객 테이블을 선택합니다. 그런 다음 왼쪽 그리드에서 ID 열을 선택합니다. 오른쪽 그리드에서의 CustomerID 열을 선택합니다. 대화, 다음을 닫습니다. Ctrl 키를 누르면 + 저장하는 S.

    이 제약 조건을 갖는 것은 더 주문 기록이 동반 고객 기록없이 존재할 수 없음을 보장합니다.

    이 같은 효과적으로 쿼리 데이터베이스에, 당신은 조인에 대한 자료를 읽어 보시기 바랍니다.

  3. ==============================

    3.이것은 내가 보통 (SQL 서버)를 수행하는 방법이다.

    이것은 내가 보통 (SQL 서버)를 수행하는 방법이다.

    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

  4. ==============================

    4.당신이 SSMS를 사용하지 않는 경우 여기에 구문입니다

    당신이 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

  5. ==============================

    5.당신이 enitities 두 가지에 대해 이야기하는 경우, 당신은이 개 각 테이블과의 관계를 저장하는 세 번째를 만들 것입니다, 교사와 학생을 말한다. 이 세 번째 테이블은 두 개의 열이 teacherID 및 StudentId을 말할 수있다. 이 당신을 위해 무엇을 찾고있는없는 경우, 귀하의 질문에 정교한하시기 바랍니다.

    당신이 enitities 두 가지에 대해 이야기하는 경우, 당신은이 개 각 테이블과의 관계를 저장하는 세 번째를 만들 것입니다, 교사와 학생을 말한다. 이 세 번째 테이블은 두 개의 열이 teacherID 및 StudentId을 말할 수있다. 이 당신을 위해 무엇을 찾고있는없는 경우, 귀하의 질문에 정교한하시기 바랍니다.

  6. from https://stackoverflow.com/questions/1308339/create-a-one-to-many-relationship-using-sql-server by cc-by-sa and MIT license