2010-12-02 5 views
0

내 사이트에 사용자 프로필을 만들고이 디자인 방법을 놓쳤습니다. 거주지, 생일 등 1 : 1과 같은 필드가 많습니다. 50 개 필드는 좋아하는 영화, 스포츠 팀, 데이트 환경 설정, 화면 이름, 전화 번호, 이메일 주소 등과 같이 많거나 (또는 ​​많을수록 많습니다.) 이전 회사 근무, 이전 학교 등이있을 때 더욱 복잡해집니다. 사람은 많은 회사에 속할 수 있으며 근무일, 부서, 회사 이름, 업계 이름 등이 많은 그룹이 있습니다.소셜 네트워크 - 사용자 프로필 디자인 스키마 질문

그래서이 모든 것을 저장하는 방법은 무엇입니까? 이러한 모든 프로필 필드를 표준화하면 많은 테이블을 결합하게됩니다. 내가 읽은 한, 소셜 네트워크 사람들은 비정규 화 된 접근 방식을 권장합니다. 그러나 어느쪽으로 든, 모든 사용자의 세부 사항과 프로파일 정보를 주 사용자 테이블에 저장하므로 각 행은 고유 한 사용자입니다. 좋아하는 영화와 같이 여러 가지 환경 설정을 모두 저장해야한다면 ESP는 수백 가지가 될 수 있으며 과거의 회사 자체는 전체 필드 그룹을 가지고 있으므로 사용자 테이블에 중복되는 부분이 많습니다.

소셜 네트워크는 어떤 접근 방식을 취하고 있습니까?

답변

3

소셜 네트워크 데이터 저장 질문은 일반적으로 데이터 저장 질문과 다르지 않습니다 ... 정규화 된 데이터와 관련 데이터는이 데이터를 효율적으로 '저장'하는 가장 좋은 방법입니다. RDBMS는 이러한 관계를 처리하도록 만들어졌습니다. PK-FK 관계와 JOINS는 관계형 DB의 MAIN 포인트이므로 ... 조인 조인 등을 참조하더라도 DB는 이러한 조인을 효율적으로 처리해야합니다 . 관련 데이터를 얻기의 USAGE 관점에서

- 당신의 인덱스가 정확하고 최적화되어 있는지 확인 - ...

을하고 표시 목적으로 필요한 데이터를 '평평하게'하는 VIEWS를 사용합니다 그래서 어떤 데이터를 가져 오는 데 사용하는 응용 프로그램 서버가 VIEW를 호출합니다. 개발자에게 개발자에게 '보기에 더 깔끔한'데이터 표현으로 UI 및 APP Serer 상호 작용을보다 명확하고 효율적으로 만듭니다 (리소스, 및 코딩시),

일반적인 지침으로 - 데이터 병합은 일반적으로 데이터웨어 하우징 환경에서 '수용 가능'하다고 간주됩니다 ... 물론 나는 "정상화 된 방법이"정규화 된 방법 "이라는 괴기스러운 논쟁을 열어서는 안됩니다 (첫 번째 - 정규화의 여섯 번째 형식 ...)

나는 SN이 OLTP보다 더 OLAP라고 생각할 수 있습니다. 어떤 경우에는 '일부'정규화되지 않은 데이터 저장소가 일반적이며 수용 가능합니다. 실제로, 당신은 당신이 일을 원하는 방식으로 정규화되지 않았 음을 결정하게됩니다. 예를 들어, 귀하의 사례에서 취업 역사와 영화, 스포츠 등을 예로들 수 있습니다. 내가 생각하는 것 그 단순한 1 : 같은 항목에 많은 수 있도록 중복 된 항목이 도움이되었다

희망,

+0

왜 사람들은 소셜 네트워크의 비정규 화 된 경로를 사용합니까? 또는 페이스 북과 구글 같은 큰 사람들이 그렇게해서 세계가 그들을 복사해야하기 때문입니까? – earl

+0

나는 "예, 꽤 많이"라고 말하고 싶습니다. 그러나 그것은 위험 전쟁을 시작합니다. 나는 그저 대답을 대신 upvote. – Ronnis

0

것은 당신의 표준화 전략을 고수해야 ... 벌금 및 유지 관리가 더 쉬울 것 당신의 스키마를 생성합니다. 쿼리는 특히 조인을 처리 할 때 극도의주의를 기울여 처리해야하는 고통 일 수 있습니다. 개발자가되어 있다면 LINQ가 당신을 위해 고통을 감수 할 것입니다. 귀하의 RDMS가 귀하의 우수한 성능의 쿼리. 주목할 점은 쿼리 구조입니다. 성능 기반 쿼리를 작성하십시오. LINQ는 최선을 다해야합니다 .... 건배

관련 문제