나는 학생 프로파일을 20,000 명까지로 데이터베이스 있도록하기로 결정, 이상 120 + 속성을 가지고 각 학생의 프로필이데이터베이스 설계 : 확장 가능 프로필 표와 같은 시나리오에 대한 많은 행 또는 추가 백업 열
DotNetNuke의 CMS 같은 많은 기업 프로젝트에서 사용 된 방법은 두 테이블이고, 하나는 USERPROFILE입니다 :
[ProfileID],[UserID],[PropertyDefinitionID],[PropertyValue]
다른 것은 ProfilePropertyDefinition
[PropertyDefinitionID],[DataType] ,[PropertyCategory],[PropertyName]
이 방법을 사용하면 20,000 x 120 = 240 만 행이됩니다!
정규화 된 데이터베이스를 가지고있는 올바른 방법이라는 것을 알고 있습니다. 데이터베이스 서버는 수백만 개의 레코드를 처리하기 위해 만들어졌지만 궁금합니다. 왜 우리는 하나의 프로필 테이블을 120 열로 만들지 않습니까? 확장 성을위한 충분한 백업 컬럼? 성과가 중요하다면, 그것은 더 좋은 해로움입니까?
답장을 보내 주셔서 감사합니다. 모든 행을 항상 읽는 것은 드뭅니다.하지만 학생 프로필을 읽고 관리하는 것은 무엇보다 어렵고 느리게 진행될 것입니다. – Alaa
@Ala : 조금 힘들어. 테이블에 가입해야합니다. 멀리 느리게, 당신은 모든 120의 재산을 항상 읽으십시오, 또는 당신은 다만 시간의 부분 집합을 필요로 할 것인가? 부분 집합 읽기는 일반적으로 빠릅니다. –
답장을 보내 주셔서 감사합니다. 대부분의 경우 프로필의 페이지로드 이벤트에서 120 개의 속성을 함께 가져와야합니다. 사실, 240 만 행을 쿼리하는 것을 두려워하기 때문에이 질문을 던졌습니다. 위험하지 않니? – Alaa