문제

데이터베이스에 두 개의 테이블이 있습니다.

  • 회사 테이블 (ID, CompanyName, CompanyUserName, CompanyPassword)
  • Employee Table (ID, CompanyID, 이름, 사용자 이름, 비밀번호)

지금은 직원이 서로에게 쓸 수있는 내부 메일 시스템을 설계하고 있지만 회사 계정에 직접 편지를 쓰고 있습니다.

내 내부 메일 테이블에는 다음 분야가 있습니다.

  • ID
  • Fromid
  • 토드
  • 메시지
  • ...

이제 내 문제가 발생합니다. 메시지 테이블을 ID (From/To)로 채우면 메시지가 회사 나 직원이 있거나 ID가 두 테이블에 존재할 수있는 경우 단서가 없습니다.

내 해결책은 무엇 일 수 있습니까?

업데이트

위의 예는 내 질문을 단순화하는 것이 었습니다.

직원 및 회사 테이블에는 사용자 이름이나 비밀번호가 포함되어 있지 않지만 ASP.NET의 멤버십에 대한 참조 uniqueidentifier 로그인 관리를 위해. 아래에서 UI를 사용하여 Froms and the Reciever를 제어하여 ASP.NET 멤버십 컨트롤러에서 UI를 사용합니다. 감사. :-)

도움이 되었습니까?

해결책

회사 및 직원 테이블에서 ID에 대해 고유 한 식별자를 사용하고 기본값으로 NewID ()를 사용하십시오.

또는 테이블을 병합하고 필드를 추가하여 레코드가 회사인지 직원인지를 보여줍니다.

다른 팁

두 개의 외국 열쇠를 회사와 직원에게 사용하고 하나만 설정되도록 할 수 있습니다.

그래서 이메일 .Toid는 Employee.id 또는 Company.ID를 참조 할 수 있습니다. 그 이메일을 적어도 하나의 (Employee.id 또는 company.id)에 존재 해야하는 이메일을 선언 적으로 제한 할 수 없습니다. 몇 가지 솔루션 :

  1. 이메일 테이블 (Toemployeeid, TocompanyID)에 ID를 가지고 있으며, 주어진 이메일에 하나만 지정할 수 있다는 제한 조건이 있습니다.
  2. 동일한 ID 공간에 직원 및 회사 ID를 보유하고 있으며 예를 들어 ID는 어떤 종류의 연락 테이블에 마스터되어 있으며 Company.Id 및 Employee.ID 모두 FK를 참조하여 contact.id를 참조하십시오. 접촉은이 다른 테이블의 꽤 절름발이 유형이기 때문에이 솔루션이 매우 좋다고 생각하지 않습니다.
  3. 연락 테이블 (ContactID, EmployeeId, CompanyID)과 같은 연락 테이블이 있습니다. 우편물이 EmployeeId = X로 회전하면 EmployeeId = x가있는 연락 행을 찾습니다. 존재하지 않으면 새 ContactID를 작성하고 사용합니다. CompanyID도 마찬가지입니다. 이것은 향후 다른 ID 세트를 사용할 수 있도록 확장 할 수 있습니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top