이전에 정의했던 getCustAttr과 setCustAttr 두 함수는 테이블이 아닌 addCustRecord와 getCustRecord 같은 낮은 수준의 함수를 만드는 재료로 사용할 수 있다. addCustRecord 함수의 의사 코드는 다음과 같다.
define addCustRecord (p_id, p_fname, p_lname, p_addr, p_city, p_state, p_zip) begin setCustAttr(p_id,'fname', p_fname); setCustAttr(p_id,'lname',p_lname); setCustAttr(p_id,'addr',p_addr); setCustAttr(p_id,'city',p_city); setCustAttr(p_id,'state',p_state); setCustAttr(p_id,'zip', p_zip); end;
다음은 getCustRecord 함수의 의사 코드다.
define getCustRecord (p_id) begin v_custRec = make_list ( getCustAttr(p_id,'fname', p_fname), getCustAttr(p_id,'lname',p_lname), getCustAttr(p_id,'addr',p_addr), getCustAttr(p_id,'city',p_city), getCustAttr(p_id,'state',p_state), getCustAttr(p_id,'zip', p_zip) ); return(v_custRec); end;
테이블 기능을 모방하는 것은 주기적으로 관련 속성을 가져오거나 설정할 때 도움이 된다. 이 패턴은 적은 수의 모방된 테이블로 작업할 때 유용하다.
많은 테이블을 모방하거나 복잡한 필터 조건과 범위 검색을 구현할 때는 대안이 될 만한 방법이 있는지 고려해봐야 한다. 대안으로 다음과 같은 기능을 지원하는 키-값 데이터베이스를 사용하는 것도 포함될 수 있다.
• Oracle NoSQL Database 같은 테이블 구조
• Riak 같은 향상된 검색 기능
• MySQL 같은 관계형 데이터베이스