2011-09-05 4 views
3

바보 같은 질문 일 수도 있지만 여기에 있습니다 :가변 열이있는 테이블을 가질 수 있습니까?

가변 개수의 열과 사용자 정의 열 이름을 가진 행을 포함 할 수있는 동적 테이블을 만들 수 있습니까?

저는 EAV 모델링을 훑어 보았지만 무거워 보입니다. 실제 생활 예는 다음과 같습니다.

고객과 등록한 경우를 가정 해 봅시다. 그러나 각 고객은 입력해야 할 정보가 다를 수 있습니다. 입력하려는 내용에 따라 데이터베이스에 반영되어야합니다. (I.E. 각 고객마다 다른 열이 있음)

이것은 불가능합니까?

업데이트 : (만를 NULL로 남아있는 사람을 설정하는 동안 특정 고객에 대한 이해가 열로 즉 필요한 모든 열이있는 테이블을 가진 정보를 저장)

표준 접근 방식은하지 않습니다 왜냐하면 내가 원하는 것은 '고정 된'열 이름을 사용할 수 없기 때문입니다. 예를 들어 한 고객이 CVR 번호를 원하고 다른 고객이 자신의 전화 번호를 참조 번호로 원할 수 있습니다. 그리고 3 분의 1은 완전히 다른 정보를 원할 수도 있습니다. 따라서 500 열을 포함하는 테이블을 피하기 위해 이제는 열 데이터의 행을 포함하는 추가 테이블을 만드는 방법을 생각해 보았습니다. 이렇게 : Id, Name, Value, CustomerId. 따라서 고객 정보를 원하면 특정 고객 ID로이 테이블을 반복해야합니다.

내 자신의 편집! :

이 간단한 SQL-문제가 당신을 괴롭 죄송합니다! :-) 좋은 하루 되세요 ...

+2

나는 그것이 불가능하다고 생각합니다. 제안 사항은 db 필드에 가변 형식의 사용자 데이터 (예 : XML)를 저장하고 db에서 데이터를 검색 할 때 데이터를 디코딩하는 것입니다. 내 것이 대답이 될지 모르겠다. 이번에는 코멘트로 남겨 두는 것을 더 좋아한다. ... – Marco

+0

그것은 Entity-Attribute-Value 데이터 모델이라고 불린다. https://en.wikipedia.org/wiki/Entity % E2 % 80 % 93attribute % E2 % 80 % 93value_model 그리고 SQL 쿼리에 필요한 복잡성 때문에 일반적으로이를 피합니다. – Caltor

답변

6

고객과 CustomerAttributes 테이블 간의 일대 다 관계로 모델링 할 수 있습니다. 뭔가 같은 :

**Customer table** 
CustomerId 
LastName 
FirstName 
... 

**CustomerAttributes table** 
CustomerId 
AttributeName 
AttributeValue 
+0

적합한 아이디어, 감사합니다! – KristianB

0

지금까지 나는 그것이 표준 관계형 데이터베이스에 불가능하지만,이 불가능 MongoDB

1

당신이 좋아 '없음-SQL'호출되지 스키마없는 데이터베이스에 좀 걸릴 수 있습니다 알고 SQL Server에서. Marco가 말했듯이 각 고객의 데이터를 XML로 저장할 수 있습니다.

모든 열을 미리 알고 있고 일부 고객이 한 세트를 사용하고 다른 고객이 다른 세트를 사용하는 경우 각 열 세트가있는 서브 테이블이 일반적인 방법입니다.

열을 미리 알 수없는 경우 데이터를 어떻게 사용합니까? 어떤 코드 나 보고서도이를 참조 할 수 없습니다. 아마도 범용 'Notes'필드에 구조화되지 않은 형식으로 저장되어야합니다.

관련 문제