너무 많은 사람들이 데이터베이스 스키마 Products /Product Properties
을 찾고 있습니다. 루비 온 레일즈 (Ruby on Rails)와 스핑크스 (Sphinx)를 사용하여 측면 검색을하고 있습니다.제품 속성에 대한 데이터베이스 스키마
요구 사항 :
- 새로운 제품 유형과 옵션을 추가하면
- 지원 측면 검색이 스핑크스를 사용하여 데이터베이스 스키마에 대한 변경을 요구해서는 안된다.
솔루션은 내가 건너했습니다
(See Bill Karwin's answer)
옵션 1 : 단일 테이블 상속
하지 옵션 정말. 테이블은 많은 컬럼에 대한 길을 포함합니다.
옵션 2 : 레일에 클래스 표 상속
루비는 제품의 새로운 유형이 도입 될 때마다 다시 시작을 의미 시작에 대한 데이터베이스 스키마를 캐시합니다. 유능한 제품 카탈로그가 있으면 수백 개의 테이블을 의미 할 수 있습니다.
옵션 3 : 직렬화 된 LOB 무거운 응용 프로그램 논리없이 측면 검색을 수행 할 수있는
킬은.
옵션 4 : 엔티티 - 속성 - 값 테스트 목적으로
는 EAV 괜찮 았는데. 그러나 옵션이 추가 될 때 (예 : 옵션이 가격 또는 배달 시간을 늘릴 때) 신속하게 혼란과 유지 보수가 될 수 있습니다.
어떤 옵션을 사용해야합니까? 거기에 다른 해결책이 있습니까? 내가 간과 한은 총알 (하)이 있습니까?
나는 2 명의 사람을 여기에서 저쪽에 수송 할 수있는 차량을 짓는 것을 말하는 것이 다소 좋다. 오, 내가 심해 다이빙이나 오프로드 또는 날아 가기를 원한다면 수정없이 동일한 차량을 사용할 수 있어야합니다. –