2016-11-23 4 views
0

아래와 같이 Cat 도메인이 있다고 가정합니다.기능을 확장하는 것이 더 나은 옵션은 무엇입니까? 1) 속성을 추가하거나 2) 새 테이블을 만드시겠습니까?

class Cat{ 

    String name 
    Integer age 

    } 

이제 고양이에게 태그를 할당 할 새로운 기능을 추가하고 싶습니다.

이제 이것을 달성하기위한 두 가지 옵션이 있습니다.

옵션 1

class CatTagAssignment{ 

Cat cat 
String tag 

static mapping = { 

     id composite: ['cat', 'tag'] 

    } 

} 

나는 그럴 생각

class Cat{ 

String name 
Integer age 
String tag 

} 

옵션 2

이 새 테이블을 만들기 고양이 도메인에 속성을 추가 어느 것이 더 나은 접근법인가 또는 어느 것이 새로운 기능을 추가하고 싶을 때 어느 것을 선호해야 하는지를 이해해야한다. 나는 당신이 찬반 양론 모두를 제공 할 수 있고, 한 접근법이 항상 다른 접근법보다 바람직한지를 고맙게 생각합니다. 도와 줘서 고마워! 감사!

답변

1

태그 모델 (태그 정의)과 cattag 모델 (태그를 고양이에 연결)을 만듭니다. 당신이 다른 것을 태그 할 수 있기를 원한다면, 그것은 새로운 모델에 대한 간단한 조인 테이블입니다.

어느 것을 선호합니까? 코드와 프레임 워크를 무시하고 모델링하는 것에 대해 생각하십시오.

별도의 엔티티로 태그를 재사용 할 수 있고 고양이는 고양이로 남아 있습니다 (은 실제로의 속성입니까?). 훌륭한 모델은 데이터베이스, 프레임 워크, 언어를 통해 전송 가능해야합니다.

1

얻을 수있는 가장 간단한 모델을 사용하십시오. 다른 옵션이 없으면 "오브젝트 방향"만을 위해 추가 테이블을 사용하지 마십시오.

내가 태그 검색이 까다로운 조금 (like 쿼리) 내가 알

+0

하나의 단점을 얻을 수 있지만이 객체를로드 할 수있는 가장 빠른 방법으로) 하나를 선택 할 것은 미래에 더 많은 열을 추가한다는 것입니다 테이블이 테이블 크기를 크게 만듭니다. 그런 경우에 옵션 2를 선택할 수 있습니까? 감사! – kofhearts

관련 문제