단일 사용자의 데이터를 저장하는 user
테이블이 있다고 가정합니다.단일 항목에 대한 데이터를 저장하는 테이블이 가로 또는 세로로 확장되어야합니까?
처음에는 사용자에 대해 알지 못하므로 표에 아무 것도 없습니다 (이 경우에는 id
과 같은 단일 열일 수 있음).
사용자에 대한 세부 정보가 무엇인지 알 수 없으며 세부 정보를 얻는 순서를 알 수 없습니다. 사용자에 대한 세부 정보는 어떤 순서로든 점차적으로 얻을 수 있습니다.
예를 들어, 사용자 이름이있는 경우 테이블에 어떻게 입력해야합니까?
나는 두 가지 옵션
1) 테이블 구조를 변경하고 열라는 이름을 추가하고이 데이터를 저장할 수 있습니다. 모든 새로운 세부 사항에 대해이 과정이 반복됩니다. 따라서 모든 데이터는 한 행에 있습니다.
2) 테이블 구조를 변경하고 key
및 value
열에 추가하십시오. name
을 key
으로 지정하고 사용자 이름을 value
으로 저장하십시오. 따라서 사용자에 대한 각 세부 사항에 대해 새 행이 키 값 쌍으로 삽입됩니다.
첫 번째 방법은 테이블을 수평으로 만듭니다. 두 번째로 세로로 커집니다.
좋은 디자인 방법과 쿼리의 용이성을 바탕으로 좋은 것은 무엇입니까?
일반적으로 잘 정의 된 열이있는 올바르게 설계된 테이블이 가장 좋습니다. 키/값 쌍이 유용 할 수도 있지만, 데이터를 입력하기 전에 테이블 구조를 정의하는 것이 가장 좋습니다. –
대답은 (거의 모든 디자인 관련 질문에 대해) 정확한 상황에 달려 있다는 것입니다. 일반적인 지침을 제공하는 것은 꽤 어렵습니다. – Shadow
모든 사람의 첫 번째 반응은 "당연히 사용자가 특성을 알고 있는지"알기 때문에 "사용자"를 예제로 사용하여 정의를 질문하지 않을 수도 있습니다.엔티티별로 다를 수있는 알려지지 않은 속성을 저장해야하는 경우 솔루션을 찾고있는 문제를 설명하려고 할 때 질문이 일반적으로 더 잘 작동한다고 말하십시오. –