1

여러 회사의 연락처 데이터베이스를 만들려고합니다. 담당자와 비즈니스는 데이터베이스의 두 개의 개별 테이블에 저장됩니다. 각 연락처가 특정 회사에 연결되기를 바랍니다. 전체 테이블의 모든 열에 대해 외래 키를 사용하거나 어떻게 구성해야합니까?SQL 외래 키 관계

연락 테이블은 다음과 같은 속성이 있습니다

Firstname 
Lastname 
Email 
Phone 

과 회사에 테이블이 있습니다

Name 

내가 원하지 않는를 더 이상 열을!

+0

두 테이블 사이의 관계를 원할 경우 더 많은 열이 있어야합니다. – Siyual

+0

데이터 정규화에 대해 자세히 읽고 이해해야합니다. 물론 두 테이블 모두에 모든 데이터가있는 것은 아닙니다. 그것은 관계형 데이터의 핵심을 완전히 무너 뜨릴 것입니다. 연락처 테이블에 회사 테이블에 회사 ID에 대한 외래 키 참조가있는 CompanyID를 만듭니다. –

+0

그러면 너는 망했다. 더 이상의 열을 추가하지 않으면 해당 기능을 추가 할 수 없습니다. 연락처가 둘 이상의 회사에있을 수있는 경우 먼저 연락처 테이블에 기본 키 (PK) 열 (예 : ContactId)이 필요합니다. 그런 다음 ContactId 및 CompanyName이있는 다른 테이블을 추가하는 것이 가장 좋습니다 (2 열 PK). 연락처가 한 회사에만있을 수있는 경우 Contacts 테이블에 CompanyName을 추가해야합니다. –

답변

1

댓글이 너무 깁니다. 당신은 자신의 Primary Keys 역할을하기 위해 테이블에 Identity 열을 추가 할 필요가

Create Table Contact 
(
    Id   Int Identity(1,1) Not Null Primary Key Clustered, 
    Firstname Varchar (20), 
    Lastname Varchar (20), 
    Email  Varchar (50), 
    Phone  Varchar (15), 
    CompanyId Int Not Null 
) 

Create Table Company 
(
    Id   Int Identity(1,1) Not Null Primary Key Clustered, 
    Name  Varchar (100) 
) 

Alter Table Contact 
Add Constraint FK_Contact_Company 
Foreign Key (CompanyId) References Company (Id) 

다음 FK가 보일 것입니다 방법에 대한 의견을 해결하기 위해, 이것은 당신이 찾고해야 테이블 구조입니다.

다음으로 관계를 유지하려면 Contact 테이블에 CompanyId 열을 추가해야합니다.

그리고 마지막으로 실제 Foreign Key Constraint을 만들어야합니다.

데이터 유형이 내가 예상했던 것과 분명히 다르지만, 이것은 외래 키 관계에 사용해야하는 개념입니다.

+0

코드를 복사하여 쿼리에 추가하면 원하는 결과를 얻을 수 있습니까? – Malphai

+0

내가 제공 한 코드를 복사하면 외래 키 제약 조건이 추가 된 질문에서 언급 한 두 개의 테이블이 생성됩니다. 테이블을 이미 만들었 으면이 스크립트를 실행하면 실패합니다. 이미 가지고있는 것에 이것을 통합시켜야합니다. – Siyual

+1

예 이전 표를 삭제하고이 코드를 실행했습니다. 정확히 내가 설명한대로, 당신의 도움에 감사드립니다! – Malphai