입니다. 내 프로젝트의 권한 시스템에 대해 생각하고 있으며 권한 시스템을 구성하는 방법을 결정할 수 없습니다. 짧은 추상적 인 형태로 나는 내 질문을 다음과 같이 설명 할 것이다.
공유 엔티티 (행)를 만들고 사용 권한을 적용하거나 각 사용자에 대해 별도의 엔티티 (행) 복사본을 만들어야합니까?이 데이터베이스 설계 또는 권한/사용 권한은
내 상황 : 나는 다 대다 관계가 두 기관
Company
{
[PK]
Id,
Name,
Contacts,
OwnerUser
},
Contact
{
[PK]
Phone,
ContactPerson
}
있습니다. 사용자는 자신이 만든 회사 엔티티를 수정할 수 있습니다.
내 문제 : 다른 사용자가 소유 한 회사간에 연락처 엔티티 (행)를 공유 할 수 있으며 두 사용자가 Contact.ContactPerson을 다른 값으로 편집하려고한다고 가정합니다 (예를 들어 한 사용자가 전화 번호가 John , 다른 사람은 Tom의 번호 임)이 상황은 각 회사 (따라서 사용자)에 대해 별도의 연락처 사본을 만들면 해결할 수 있지만 비즈니스 규칙은 동일한 전화 번호를 가진 중복 연락처를 허용하지 않으며 다른 연락처 속성 전화 번호 외에 (내 비즈니스 규칙에 따라) 공유해야합니다.
이 상황을 해결하는 방법은 무엇입니까?
이 전화 번호가있는 모든 회사에서 공유해야하는 속성이 포함되어있어 전화가 고유하고 공유됩니다. 그렇지 않으면 일부 전화 속성이 변경되면 (일부 플래그 가정) DB의 모든 전화 인스턴스를 찾아이 플래그 속성을 업데이트해야합니다. –
좋아요. 이 경우 ContactPerson과 전화 번호를 구분해야한다고 말하는 것은 옳습니다. 이들은 별도의 개체입니다. 그러나 여러 연락처를 하나의 전화 번호로 연결하는 외래 키가되므로 연락처에 중복 된 전화 번호가있을 수 없다는 요구 사항은 의미가 없습니다. – kander