2014-08-29 3 views
-1

아래 사례가있는 프로젝트에서 작업하고 있습니다.DB 아키텍처에 대한 제안이 필요합니다.

사용자는 태그 라인을 많이 가질 수 있습니다. 우리는 DB에 미리 정의 된 많은 데이터를 가지고 있으며, 태그 라인을 타이핑하기 시작할 때 자동 승인을 보여주기 위해 사용합니다. 레일스를 사용하고 있습니다.

User has_and_belongs_to_many taglines 

Tagline has_and_belongs_to_many users 

나는 별도의 공동 테이블과 모든 것이 괜찮다고,하지만 지금은 단지 특정 사용자에게 속한 것, DB에 사용자 정의 사용자의 슬로건을 저장해야합니다.

taglines 테이블을 복제하고 사용자 ID를 추가해야합니까? 아니면 태그 라인과 같은 유스 케이스를 가진 모델이 두 개 이상있는 경우 이러한 종류의 시나리오를 처리하기위한 최상의 아키텍처는 무엇입니까?

+0

아마도'customlines'을'taglines' 테이블에 추가하고 제안 태그를 필터링하는 데 사용합니다. – BroiSatse

+0

@BroiSatse하지만 태그 라인 테이블은 현재 다 대다이지만 사용자 정의 태그 라인은 사용자 만 소유하고 있습니다. 왜 우리는 둘 다 혼합해야합니까? – Senthil

+0

두 번째 테이블을 만드는 경우 모델을 변경할 때마다 두 테이블/모델을 업데이트해야합니다. 당신은 하나의 모든 사용자 태그를 가져갈 수 없게됩니다. '다 대다'는'일대 다'관계를 유지할 수있다. 태그가 하나의 사용자 만 소유 할 수 있는지 확인하려면 유효성 검사를 추가하십시오. – BroiSatse

답변

0

@BroiSatse 의견을 말하면서, 나는 따라 갔다.

두 번째 테이블을 만드는 경우 모델을 변경하려고 할 때마다 두 개의 테이블/모델을 업데이트해야한다는 것을 기억해야합니다. 당신은 이길 것이며, 하나의 모든 사용자 태그를 가져갈 수 없게됩니다. many-to-many는 일대 다 연관을 유지할 수있는 입니다. 을 확인하는 유효성 검사를 추가하면 사용자 정의 태그 인 경우 해당 태그가 한 사용자에게만 속할 수 있습니다.

0

기존 사용자태그 라인 테이블에는 many-to-many 관계가 있습니다. 그렇게 유지하십시오. 사용자 테이블과 새로운 customTagline은 일대 다 관계가 있으므로 새 테이블을 만들면 어떨까요? customTagline은 (는) 특정 사용자에게만 공개되었습니다.

+0

그 방법은 매우 직접적인 방법입니다. 제안 사항이 좋았을 때만 태그 라인을 사용하면되지만, 동일한 시나리오에 속하는 6 가지 모델이 있습니다. 여기에 동일한 구조의 6 가지 모델을 새로 만들어야합니다. – Senthil

+0

잘 모르는 경우, 결정할 수있는 데이터가 충분하지 않다는 뜻입니다. 어떤 옵션이 현재 상황을 고려할 때 좋음을 의미하므로 테이블을 만들고 코드를 작성하십시오. 코드를 굴림으로써 요구 사항에 대한 더 많은 통찰력을 얻게되며 테이블 리팩터링/정규화/비정규 화로 돌아갈 시간입니다. 이것이 내가하는 방법이다. @Senthil – neo

+0

신속한 답변을 주셔서 감사합니다. – Senthil

관련 문제