2009-06-03 2 views
1

회원 테이블과 메일 링리스트 테이블이 2 개 있습니다.다른 테이블의 열에서 데이터 통합 ​​설계 문제

[Members] 
Username 
Password 
EmailAddress 
MailingListOptIn [bit] 
Planes [bit] 
Boats [bit] 
Cars [bit] 
  • 과일 열은 사용자 환경 설정입니다.

[MailingList] 
EmailAddress 
MailingListOptIn 
  • mailinglist'er

    는 뉴스 레터를 수신하도록 선택할 수 있지만 반드시 내가 mailinglist'ers에 ​​대한 기본 설정을 저장하기 시작하고 싶은 멤버

하지 않을 수 있습니다. 내 질문은이 2 테이블 데이터를 통합하는 가장 좋은 방법은 무엇입니까?

나는 사용자 이름, 암호 등의 회원 정보와 이메일 주소 및 환경 설정을 저장하는 별도의 프로필 테이블 만 저장하는 회원 테이블을 실험했습니다. 회원 및 메일 링리스트 환경 설정 모두가이 프로필 테이블에 저장 될 수 있지만 FK 제약 조건을 추가 할 수 없어서 메일 링리스트를 추가 할 수 없습니다. 2 개 테이블

  1. 스틱하지만 메일 링리스트 테이블에 중복 된 "환경 설정"열을 소개 :

    그래서 지금 내 옵션이 있습니다.
  2. 단일 프로파일 테이블과 나사 참조 무결성을 사용하십시오.

아니면 더 좋은 방법이 있을까요?

답변

0

나는 이런 식으로 할 것 :

전)

ⅱ) "회원"테이블과 이메일 주소를 가진 "사람"테이블, 구성원 만이 표에 기록이됩니다, EMAILADDRESS (표에도 키)

ⅲ) "메일 링리스트"테이블, 메일 링리스트, 설명 및 어쩌면 다른 필드

IV)는 "mailingListSubscriber"에 대한 고유 ID를 구비하여 "사용자"연결된 그 PE의 이메일 주소와 테이블 (관계) rson과 메일 링리스트의 이드.

죄송합니다. 테이블을 추가해 주셔서 죄송 합니다만, 요구 사항을 고려할 때 적절한 정규화를위한 최소한의 설정이라고 생각합니다.

1
CREATE TABLE Profiles (
Username 
Password 
EmailAddress 
MailingListOptIn [bit] 
Planes [bit] 
Boats [bit] 
Cars [bit] 
); 

CREATE VIEW Members AS 
    SELECT * FROM Profiles WHERE Username IS NOT NULL 
    WITH CHECK OPTION; 

CREATE VIEW MailingList AS 
    SELECT EmailAddress, MailingListOptIn, Planes, Boats, Cars 
    FROM Profiles WHERE Username IS NULL 
    WITH CHECK OPTION; 
관련 문제