2014-07-23 1 views
0

테스트 질문이있는 테이블이 있습니다. 표의 각 행에는 특정 사용자에 대한 테스트 질문에 대한 세부 정보가 들어 있습니다.SQL Server의 열에 데이터와 같은 배열을 저장하는 방법이 있습니까?

사용자에게 3-5 개의 답변이 표시되며 행에 표시된 답변의 세부 정보를 저장하고 싶습니다. 많은 수의 행을 생성하므로 모든 대답에 대해 새로운 행을 추가하고 싶지는 않습니다.

SQL Server의 열에 배열 배열을 저장할 수있는 방법이 있습니까? 현재 JSON 문자열로 데이터를 저장하고 있지만 오라클에 배열 데이터를 저장할 수있는 방법이 있다는 것을 기억하고 있습니다. SQL Server에도 동일한 데이터가 있는지 궁금합니다.

+3

Nooooooooooooooo !!!!!! –

+1

엄청난 수의 행에 대해 걱정하지 않겠습니다. 엄청난 양의 행을 처리 할 수 ​​있도록 SQL Server가 구축되었습니다. 또한 일단 데이터를 행으로 사용하면 좋은 쿼리를 작성하여 json이나 필드 안에 저장된 것보다 훨씬 쉽게 요약하고보고 할 수 있습니다. http://www.xprogramming.com/Practices/PracSimplest.html –

+0

이 기능을 쉽게 사용할 수 있습니다. http://stackoverflow.com/questions/759244/sql-server-the-maximum-number-ofrows- 표 안의 –

답변

2

일반적으로 denormallizing은 좋은 생각이 아닙니다. 드물게 좋은 아이디어입니다. 그러나 성능상의 이유로 때때로 필요합니다. 너무 느리지 않으면 고려하지 마십시오.

TestQuestionID (또는 하나의 질문에 대한 답을 무엇이라고 부르는지)를 사용하여 보조 답변 테이블을 클러스터 된 인덱스로 만들면 a와 비교할 때 성능상의 차이는 거의 없습니다. 비정규 화 된 테이블.

설명 테이블을 비정규 화하는 경우 테이블의 열을 5 개만 만들면됩니다. xml 필드도 사용할 수 있지만 저장하는 것은 모두 5 개의 답변이므로이 간단한 경우에는 xml을 사용하지 않습니다.

이 질문을하기 때문에 숙련 된 전문가가 아닙니다 (모두 초심자로 시작합니다). 비정규 화하기 전에 로컬 SQL 전문가에게 문의해야합니다. 이 대답을 받아 이후

ADDED주의,

, 당신은 정말 역 정규화가 거의 항상 할 수있는 잘못된 일이라고 확실히 이해할 필요가있다. 그래서 나를 포함한 모든 사람들이 당신에게 말하려고했습니다. 귀하의 DBA와 이야기하지 않고 이것을하지 마십시오. - 불행히도 너무 흔한 로컬 DBA가 없다면 집단적 조언을 받고 비정규 화하지 마십시오. 나는 비 정규화가 올바른 해결책이라고 생각하는 나의 경력을 단지 1 시간 만 생각할 수있다. 그리고 나는 많은 경우에 불법적 인 denormlazation으로 나쁜 디자인 (나에게 강요 당했다)에 물렸다.

+0

... 학교, 교육구 또는 주에서 적시에 코스 위치를 식별하는 하위 집합에 대한 (정답)/(답변 수)의 집계보기를 반환하는 데 걸림돌이되는 것을 제외하고는 예외입니다. –

+0

분명히 당신은 99.97 %의 시간을 역 정규화에 반대한다고 주장합니다. 그러나 성능 문제는 여전히 있습니다. 모든 것을 다했을 때 무엇을합니까? 너무 느립니다. 귀하의 의견이 너무 느리긴하지만 대단히 느립니다. 성능 고려 사항은 귀하의 신청을 위반하고 귀하는 신속하게 처리해야합니다. 총알을 물고 비정규 화하고 그 결과를 지불합니다. –

관련 문제