2012-12-03 4 views
0

웹 사이트의 프런트 엔드에 표시된 일련의 기사가 데이터베이스에 인코딩되어 있습니다.사용자 정의 순서 - 추가 열 또는 테이블?

사용자 지정 순서 지정에 대한 지원이 추가되면 데이터베이스에서이를 어떻게 표현할 수 있습니까?

P .: 기사가 둘 이상의 목록에 표시되는 경우가있을 수 있습니다.

+1

주문 옵션은 테이블의 구조를 기반으로해야하며 자주 변경하지 않는 한 메타 데이터로 혼란을 더할 수 있습니다. 나는 개인적으로 응용 프로그램에서만 정의 된 명령의 정의를 유지합니다. –

+0

"나는 개인적으로 응용 프로그램에서만 정의 된 주문의 정의를 유지할 것입니다." 예를 들어 XML 파일에서? –

답변

3

사용자 정의 순서를 데이터베이스에 저장하는 유일한 방법은 테이블에있는 데이터 행과 같습니다. 그렇게하려면, 당신은

  • 기사를 식별, 사용자를 식별

    • 에 열을해야하고,
    • 순서를 식별합니다.

    처음 두 개는 쉽습니다. 주문을 저장하는 방법에는 여러 가지가 있습니다. 설계 목표는 일반적으로 주문을 다시 작성해야 할 필요성을 줄이는 것입니다.

    create table user_defined_order (
        user_id integer not null references users (user_id), 
        article_id integer not null references articles (article_id), 
        sort_order <sort_data_type> not null, 
        primary key (user_id, article_id), 
        unique (user_id, sort_order) 
    ); 
    

    마지막 제한 조건 인 unique (user_id, sort_order)은 응용 프로그램에 따라 다릅니다.

    sort_data_type 옵션

    다른 데이터 유형은 당신에게 삽입하고 순서를 변경하기위한 다양한 옵션을 제공합니다. 가장 일반적으로 사용되는은 (

  • 플로트 (갭 닫을 때 행의 무리를 재기록 간극에 삽입) 갭
  • 정수 (삽입은 행 무리 재기록 요구) 간극없이

    • 정수 기존 플로트의 중간에 삽입, 분할 실패시 재 작성)
  • 2

    정확하게 이해하면 모든 사용자가 다른 순서로 주문을 표시 할 수 있습니다. 모든 사용자에게 ID가 있다고 가정하면 사용자 ID/기사 ID/표시 순서의 세 가지 필드로 구성된 표가 필요합니다. 여기서 사용자 ID와 기사 ID는 표의 복합 기본 키를 제공합니다.

    관련 문제