내 비즈니스 논리에서 나는 사용자, 회사 (사용자는 회사의 일부가 될 수 있으며 직원으로, 나는 "에이전트"라고 부름) 및 제품을 보유하고 있습니다.소유자를 추적하는 데이터베이스 설계
제품을 사용자 또는 회사가 소유 할 수있는 회사는 나중에 사용자 (에이전트)에게 할당 할 수 있지만 회사가 계속 소유하게됩니다 (회사에서 에이전트를 실행할 경우).
내 생각은 제품의 소유자가 누구인지 추적 할 수있는 사용자 테이블, 회사 테이블과 제품 테이블과 테이블을 가지고있다 : 제품이 사용자가 소유하는 경우
--------------
| users |
--------------
| user_id |
| name |
--------------
--------------
| products |
--------------
| product_id |
| title |
--------------
--------------
| company |
--------------
| company_id |
| name |
--------------
--------------
| agents |
--------------
| agent_id |
| user_id |
| company_id |
--------------
----------------
|product_owner |
----------------
| id |
| product_id |
| user_id |
| company_id |
|agent_assigned|
----------------
을 만 product_id 및 user_id가 채워집니다. 회사가 소유 한 경우 product_id, company_id 및 agent_assigned가 채워집니다.
나중에 제품을 가져 와서 소유자가 누구인지 알고 싶습니다 (사용자 정보 또는 에이전트 및 회사 정보).
이렇게하는 것이 가장 좋은 방법입니까? 그게 나에게 좋지 않은 것 같아.
연락처 데이터베이스가 있습니다. 모든 연락처는 (적어도) 하나의 조직에 속해야하지만 일부 조직은 약간 추상적입니다. '프로젝트 x 클라이언트 그룹'. 따라서 시나리오에 따라 모든 제품은 조직에서 소유하게 될 것입니다. 이러한 조직 중 일부는 가상의 의미를 지니기는하지만 말입니다. 이 질문은 SO의 요구 사항에 엄격히 부합하지 않지만, 어쨌든 나는 그것을 좋아한다. 왜냐하면 나는 그것을 좋아한다. – Strawberry
product_owner에 company_id를 저장할 필요가 없습니다.이 정보는 이미 agents 테이블에 보관되어 있습니다. 또 다른 가능성은 같은 필드에 항상 owner_id를 저장하고 owner_type, Owner_ID, slave_type, slave_ID와 같은 소유자 유형 – niyou
을 정의하는 다른 필드를 추가하는 것입니다. 그리고 거기에 가능한 모든 관계를 두십시오. 이렇게하면 모든 것을 동일한 방식으로 처리 할 수 있고 항목을 여러 소유자에게 할당 할 수 있습니다. OT = 'company', OI = company_id_2, ST = 'product', SI = product_id_25 – Viridis