나는 대부분의 시간을 채울 수있는 몇 개의 열이 이미있는 모델을 가지고 있습니다. 이제 매번 다른 필드를 추가해야합니다.추가 속성이있는 레코드 : 스파 스 테이블 또는 EAV?
무엇이 최선의 방법입니까? 나는 EAV 패턴을 좋아하지 않는다. 나는이 여분의 속성이 매우 다른 것을 고려할 때 특히 드문 드문 한 테이블을 가지고 있다는 생각을 좋아하지 않습니다.
예 :
WorkOrder:
PK id
FK assigned_to
FK contractor
DATE expected_completion
DATE actual_completion
... (many more)
가 지금과 같은 속성을 추가 할 이러한 추가 특성이 기록은 기록 할에서 격렬하게 다를 수 있습니다
ep_1 (extra_property)
ep_2
ep_3
ep_4
... (many more)
, 그리고 대부분의 시간 제한이있을 것 그들의 수는 있지만 보증은 없습니다. 로 기록
생각한다
나는 그 여분의 속성이 실제로 컬럼 인 경우, 예를 들면 같이, 필터링 및 검색 기록을 나열 할 수 있도록하려면id | assigned_to | contractor | ... | ep_1 | ep_2 | ep_3 | ... | ep_n
1 | 2 | 3 | ... | XYZ | NULL | NULL | ... | 23
2 | 3 | 5 | ... | NULL | 1 | NULL | ... | NULL
3 | 2 | 1 | ... | NULL | 0 | NULL | ... | NULL
4 | 4 | 1 | ... | XYZ | NUL | NULL | ... | 45
: 나는 SELECT fields FROM table WHERE ep_n > 20
같은 쿼리를 만들 수 있어야하고 SELECT fields FROM table WHERE ep_1='ABC'
무엇이 최선의 해결책입니까?
예상되는 모든 속성을 알지 못하면 제안을하기가 어렵습니다. –
@OMG 이렇게하면 질문이 너무 현지화됩니다. 데이터로 생각하십시오. 나는'SELECT table FRERE table WHERE ep_n> 20'이나'SELECT fields FROM table WHERE ep_1 = 'ABC''와 같은 쿼리를 만들 수 있어야합니다. – Aillyn
나는 당신의 기대에 동의하지 않습니다. 대신 테이블을 적절히 모델링하고 필요한 조인을 통합하는 것이 대안입니다. 그들이 무엇인지 모른 채 그 테이블을 모델링 할 수는 없습니다 ... –