관리자가 팀 캡틴을 만들어야합니다. 일단 생성되면 팀 캡틴은 멤버를 추가하여 나머지 팀을 생성 할 수 있습니다. 별도의 팀 캡틴 테이블을 보유하거나 팀 테이블의 팀 멤버 역할 (캡틴 또는 멤버)을 할당하는 것이 더 합리적입니까?순서대로 생성해야하는 개체의 스키마 디자인은 동일하지 않은 경우 밀접하게 관련됩니다.
답변
캡틴이 팀 구성원과 비즈니스 논리가 크게 다른 경우가 아니면 동일한 모델이어야합니다.
언급 한대로 역할을 사용하여 차이를 처리하거나 (모두가 속하는 Team
모델을 가지고 있다고 가정) 팀장을 별도의 연결을 통해 팀과 관련시킬 수 있습니다. 다음과 같은
뭔가 : 여기
class Team
has_one :captain, class_name: 'TeamMember'
has_many :team_members
end
나의 첫번째 질문은 : 당신이 팀 캡틴에 대해 생각할 때, 당신은의 맥락에서 무감각 될 것입니다 그 사람에 대한 정보를 저장해야합니다 팀 멤버? 그리고 캡틴은 객체 모델과 관련된 많은 양의 행동이나 논리를 필요로 할 것인데, 이는 다른 팀 구성원과 관련이 없습니까? 이 두 가지 중 하나라도 그렇다면, 이제 캡틴을 분리하면 장기적으로 더 깨끗한 스키마로 끝날 수 있습니다.
예를 들어, 팀장의 좋아하는 음식과 음악을 저장하기 위해 여러 개의 열이 필요하지만 나머지 팀원은이 정보를 신경 쓰지 않으면 " 팀 캡틴 (team captain) "과"팀원 (team member) "은 서로 밀접한 관련이 있다면 실제로는 다른 동물입니다.
또한, 어떤 팀 캡틴이 어떤 팀의 캡틴인지 추적해야합니까? 그렇다면 스키마가 좀 더 단순해질 수 있습니다. 특별한 팀의 주장들이 팀을 captaining하고 있다는 사실이다 만드는 유일한 경우에, 당신은 대략 다음과 같이 대다 스키마를 고려할 수 :
- team_members를 (ID, 이름 , 좋아하는 색깔, 무엇이든)
- captains_to_teams (MEMBER_ID, team_id)
- members_to_teams (MEMBER_ID, team_id)
- 팀 어쩌면
심지어 간단한, 당신은 트루 경우 일이 각 사람은 단일 팀과 연관 될 것이라는 점을 당신은 시간이 지남에 따라 장의 자격 또는 회원의 변화를 추적 할 필요가없는 경우 :
- team_members (ID, 이름, 좋아하는 색깔, team_id, is_captain)
- 팀 (ID, 이름) 위의 두 시나리오 중 하나에서
, 나는 선장이 살 수 있습니다, 그래서 당신은 팀의 주장에 대해 "많이"추가 정보를 저장할 필요가 없습니다 겠지 팀 멤버들과 함께 (그리고 팀 멤버들과 함께). 그러나 선장, 팀 구성원과 관련이없는 정보에 대해 더 많은 정보를 추적해야하는 경우 선장을 별도의 테이블로 분리하는 것이 더 예쁘고 더 합리적 일 수 있습니다.
- 1. 색인을 생성해야하는 경우와 그렇지 않은 경우
- 2. 밀접하게 결합 된 수업 : 내 상황에서 더 좋은 디자인은 무엇입니까?
- 3. CSS가 동일하지 않은 경우 확인하는 방법
- 4. NW.js : 두 배열이 동일하지 않은 경우
- 5. 팬더 - 내가 이벤트를 나타내는 날짜 개체의 목록이 동일하지 않은 간격
- 6. Excel에서 동일하지 않은 셀 정렬
- 7. 작업 큐에 대한 올바른 몽고 스키마 디자인은 무엇인가?
- 8. (...) 경우 - 동일한 두 측면은 동일하지
- 9. 문자열이 동일하지 않은 이유는 무엇입니까?
- 10. 파이썬 두 값이 동일하지 않은 경우 if 문에서 참이되지 않습니다
- 11. 작업 영역의 jre가 jre_home과 동일하지 않은 경우 NoClassDefFoundError
- 12. 제목 ID가 동일하지 않은 경우 모든 메시지를 선택하십시오.
- 13. BATCH : 선택 사항이 동일하지 않은 경우 다시 시작하십시오.
- 14. rownames와 열 이름이 동일하지 않은 경우 그래프를 그릴 때
- 15. AppleScript로 파일 형식을 확인하고 동일하지 않은 경우 오류가 발생합니다
- 16. 몽구스 스키마 개체의 폼 생성?
- 17. 디자인은
- 18. 동일하지 않은 중복 문자열 필터링
- 19. start-dfs와 동일하지 않은 항목
- 20. 비트 동일하지 않은 JAR 파일
- 21. bash에서 동일하지 않은 파일 분할
- 22. KendoUI 슬라이더, 동일하지 않은 단계
- 23. 동일하지 않은 작업을 수행하는 샐러리
- 24. 동일하지 않은 행으로 변수 생성하기
- 25. Z3Py : 동일하지 않은 튜플의 제약
- 26. 테이블 너비가 동일하지 않은 열
- 27. 동일하지 않은 사운드 파일 비교
- 28. 밀접하게 캡슐화 된 클래스
- 29. CSS가 워드 프레스와 관련됩니다.
- 30. node.js는 Meteor의 파일 시스템과 관련됩니다.