2014-01-17 5 views
0

sql 명령에 두 개의 테이블을 설정하려고합니다.SQL 명령에서 1 : 0 ... 1 관계 정의

나는 Customer 테이블과 User Account 테이블을 가지고 있습니다.

Customer에는 1 또는 0이 없습니다. User_account (0 ... 1) 관계입니다.

그러나 USER_ACCOUNT은 항상 CUSTOMER입니다.

SQL 명령으로 어떻게 할 수 있습니까?

것은 행할 수 있어야 ..

ALTER TABLE UserAccount DROP CONSTRAINT FKUserAccountToCustomer 
GO 

DROP TABLE Customer; 
DROP TABLE UserAccount; 
GO 

CREATE TABLE Customer 
(
    CustomerID INT NOT NULL IDENTITY, 
    (...) 
); 
GO 

CREATE TABLE UserAccount 
(
    UserAccountID INT NOT NULL IDENTITY, 
    CustomerID INT NOT NULL, 
    (...) 
); 
GO 

ALTER TABLE Customer ADD PRIMARY KEY (CustomerID); 
GO 

ALTER TABLE UserAccount ADD PRIMARY KEY(UserAccountID); 
GO 

IF NOT EXISTS (SELECT * FROM sysdiagrams WHERE name = 'FKUserAccountToCustomer') 
BEGIN 
    ALTER TABLE UserAccount 
    ADD CONSTRAINT FKUserAccountToCustomer 
    FOREIGN KEY(CustomerID) 
    REFERENCES Customer(CustomerID) 
END; 
+0

코드를 요청하는 질문은 최소한의 노력을 보여 주어야합니다. 당신이 시도한 것을 보여주십시오. – Kermit

+0

기쁨으로 잠시만 기다려주세요. – hsim

+0

당신이 무엇을하려고하는지 명확하지 않습니다. 테이블을 생성 하시겠습니까? 또는 기존 데이터를 쿼리합니까? – musefan

답변

1

고객이 0 또는 1 개의 사용자 계정을 가질 수있는 경우 UserAccount 이드는 고객 ID와 같은를 만드과 같이 기본 키 및 외부 키 제한 조건에 적용 :

CREATE TABLE Customer 
(
    CustomerId  int not null identity(1,1) 
    constraint PK_Customer 
    primary key clustered 
    ,(...) 
) 

CREATE TABLE UserAccount 
(
    UserAccountId int not null 
    constraint PK_UserAccount 
    primary key clustered 
    constraint FK_UserAccount__Customer 
    foreign key references Customer (CustomerId) 
    ,(...) 
) 

이 방법 :

  • 은 먼저 고객
  • 을 만들지 않고 사용자 계정을 만들 수 없습니다 "당신의"고객 ID가 UserAccount에없는 경우
  • 같은 고객 ID
  • 에 할당 된 두 개 이상의 사용자 계정을 가질 수 없습니다, 당신은 어떤 사용자 계정이없는
+0

와우! 좋아, 나는 그것을 시도 할 것이다. – hsim

+0

흥미 롭군요 :이 일이 잘 된 것 같습니다. 'clustered' 단어는 무엇을 의미합니까? – hsim

+1

클러스터 된 인덱스와 클러스터되지 않은 인덱스를 설명하는 것은 긴 논의입니다. 다음은 SQL 온라인 설명서입니다. http://technet.microsoft.com/en-us/library/ms190457.aspx –

0

당신은 그 고객이 여러 개의 계정을 가질 수 있도록 UserAccount에서 CustomerId에 고유 한 제약 조건을 만들 수 있습니다

EDIT 여기 내가 지금까지 시도 무엇 like

ALTER TABLE UserAccount ADD CONSTRAINT IX_Customer UNIQUE(CustomerId) 
+0

나는 이것을 시험해 보겠다. – hsim

+0

필자가 작성한 스크립트를 따라 고유 한 스크립트를 작성하려면 어떻게해야할까요? 고객에게 어떻게 추천합니까? – hsim