2009-11-09 4 views
8

사용자가 기사를 작성하고 해당 기사에 대해 의견을 말할 수있는 간단한 사이트를 작성하여 Rails를 배우고 있습니다. 사용자의 최신 기사와 의견을 나열하는보기가 있습니다. 이제 사용자가 위치, 나이 및 짧은 전기와 같은 정보를 입력 할 수있는 사용자 '프로필'을 추가하고 싶습니다. 이 프로파일이 별도의 모델/리소스 (Authlogic을 사용하고 있으며 대부분이 선택적 필드이기 때문에 이미 내 사용자 모델에 많은 필드를 가지고 있어야합니다.)인지 궁금합니다.사용자 프로필이 별도의 모델이어야합니까?

별도의 리소스를 사용하는 경우 장단점은 무엇입니까?

+0

다음을 참조하십시오 : http://softwareengineering.stackexchange.com/questions/241089/keep-user-and-user-profile-in-different-tables – Jon

답변

2

별도로 보관하겠습니다. 모든 사용자가 프로필을 작성하려고하는 것은 아니므로 사용자 테이블에 빈 필드가 있어야합니다. 또한 사용자 모델의 논리를 변경하지 않고 프로필 필드를 변경할 수 있음을 의미합니다.

4
  • 장점 : 한 번에 2를 관리하는

그것은 기본적으로 사용자와 프로필이 얼마나 큰 내려 오는 약간 단단하다 : 그것은 각 모델에게

  • 단점을 단순화합니다. 사용자가 5 개의 필드와 프로필 3 인 경우 아무런 의미가 없습니다. 그러나 사용자가 12 개의 필드와 프로필 20이면 분명히해야합니다.

  • +0

    각각 " 많은 들판? – Aaron

    0

    기존 사용자 테이블의 너비에 따라 다릅니다. 데이터베이스는 일반적으로 리사이스트에 포함될 수있는 바이트 수에 제한이 있습니다. 나는 당신이 한도에 가까운 값을 가진 필드가 많다면 (또는 그 이상의 값을 가질 수있는) 한계에 가까워 졌을 때 성능을 향상시키고 레코드의 가능성을 줄이기 위해 일대일 관계가있는 테이블을 추가 할 것입니다. 행 크기에 너무 많은 데이터가 있으므로 갑자기 삽입 할 수 없습니다. 한계 근처에 아무데도 없다면 기존 테이블에 추가하십시오.

    4

    나는 당신이 가장 좋은 모델이 될 것이라고 생각합니다. 모델이 데이터베이스 테이블과 어떻게 대응하는지 생각한 다음 앱에서 지원하는 다양한 유스 케이스에 대한 모델을 읽는 방법을 생각해보십시오.

    사용자가 잠시 동안 실제 프로필에 잠겨 있지만 사용자 모델에 자주 액세스하는 경우 반드시 일대일 관계로 별도의 개체로 만들어야합니다. 사용자 데이터가 필요할 때마다 프로필 데이터가 필요하면 일 수도 있고 일 수도 있습니다.

    사용자를 표시 할 때마다 위치 정보가 필요할지 모르지만 (예 : 남긴 의견에 말하기) 전기는 다른 모델이어야합니까? 적절한 분석을 찾아야하지만, 일반적인 규칙은 물건을 구성하여 즉시 사용되지 않는 데이터를 가져올 필요가 없다는 것입니다.

    4

    사용자 모델의 프로필 열을 명확하고 단순하게 유지하는 것이 좋습니다. 특정 필드 만 사용하는 경우 다음을 사용하여 필요한 열만 선택하십시오.를 선택하십시오.

    나중에 어떤 이유로 다른 테이블이 필요하다는 것을 알게되면 (예 : 한 명의 사용자가 여러 개의 프로필을 가질 수 있음) 나눠야 할 일이 많아서는 안됩니다.

    저는 두 개의 테이블을 가지고있는 실수를 저질렀습니다.하지만 더 복잡한 것이 아니라 저에게 아무것도 사지 않았습니다.

    +0

    나는 똑같은 경험을했습니다. – Aaron

    3

    사용자는 주석과 같이 사이트의 다양한 자원을 "소유"합니다. 사용자와 프로필을 분리하면 사용자는 하나 이상의 자원이됩니다. 프로필은 수시로 변경되지만 사용자는 정적입니다.

    분리하면 프로필 기록을 쉽게 유지 관리 할 수 ​​있습니다.

    관련 문제