2009-06-19 4 views
2

특정 순서로 있기를 원하는 레코드/오브젝트가있을 때마다 보통 필자는 서수라는 필드를 만듭니다.서수에 사용할 데이터 유형은 무엇입니까?

서수 필드에 정수 또는 10 진수 값을 사용하는 것이 더 나은지 궁금합니다. 당신이 연속 정수를 사용하는 경우

  • , 당신은 서수의 모든 (또는 적어도 몇 가지 심각한 재 작업을 할 필요가 : 순서에 따라 다른 위치에 객체를 이동할 때

    이것은 고려 사항이다 이동중인 개체의 원래 위치보다 앞에있는 서수).

  • 정수를 사용하지만 1000 개 간격으로 간격을 띄우면 개체를 이동할 주변 개체 사이의 중간 값으로 서수를 변경할 수 있습니다. 이것은 연속적인 정수로 끝나는 라인의 어딘가에서 실패 할 수 있습니다.

  • 십진수를 사용하면 서라운드 오브젝트의 서수의 평균을 찾아 이동할 오브젝트에 사용할 수 있습니다.

  • 문자열을 사용하는 것이 가능할 수도 있지만 꽤 구피 해지는 것을 볼 수 있습니다.

내가 생각하지 못한 다른 고려 사항이 있습니다. 무엇을 사용하며 왜 사용합니까?

+0

방금 ​​비슷한 질문을 발견했습니다. 링크를 보려면 내 업데이트를 참조하십시오. – kemiller2002

답변

1

"줄 바꿈을하면 연속 정수로 끝날 수 있습니다."

이 경우 (아마도 드물기 때문에 성능이 중요하지 않을 수 있음)이 경우에는 다시 공백 문자를 사용하는 번호 매기기 방법을 구현할 수 있습니다. 내가 COMAL로 프로그래밍 할 때 (누구든지 그 언어를 아는가?), 당신은 줄 번호로이 일을 할 수 있습니다.

0

나는 이것이 이전 게시물과 비슷한 질문이라는 것을 기억합니다.

SQL Server Priority Ordering

링크 된 목록이 여전히 작동,하지만 당신은 부모 자식 관계를 추적하지 않으려면이 훨씬 쉽게 솔루션입니다 : 여기에서 찾을 수 있습니다.

원하는 사운드는 연결된 목록입니다. 그런 식으로 당신은 항상 다음에 오는 것을 알기 때문에 추측 할 필요가 없습니다. 따라서 position 필드는 그 뒤에 오는 객체에 대한 포인터가됩니다.

위치에 대해 임의의 숫자를 사용하여 항상 갖고 있었던 문제는 엔트로피에 빠르게 빠질 수 있다는 것입니다. 더 많은 항목이 추가되고 번호가 연속되는 경우 등은 무엇입니까? 항목 목록이 변경되면 신속하게 관리하기 어려워 질 수 있습니다.

SQL Server 테이블에서이를 구현하려면 기본 키와 동일한 데이터 형식을 가진 다른 필드를 추가하십시오. 필드가 null의 경우,리스트 내의 맨 아래의 요소가됩니다. 같은 테이블에 여러 개의 목록을 저장하는 경우 ListID라는 다른 필드를 추가하여 동일한 ListID와 관련된 모든 행을 같은 목록에 추가 할 수 있습니다. 이렇게 뭔가.

Table: 
ID INT 
ListID INT 
Child INT 

Pararent Row For first list: 
1, 1, 2 
First Child 
2, 1, 3 
Second Child 
3, 1, NULL 

Parent Row for second list: 
4, 2, 5 
First Child 
5, 2, 6 
Second Child 
6, 2, NULL 

당신은 아마 삽입 및 갱신 조금 지루한 될 수있는 행을 추가 할 때마다해야 할 것이다, 그러나 그것은 항상 목록 라인업을 만들 것입니다.

+0

흥미 롭습니다. 이것은 나를위한 새로운 개념입니다. 어떻게 이것을 SQL Server 데이터베이스에 구현합니까? –

+0

SQL Server에서 어떻게 사용하는지 보여주는 정보를 추가했습니다. – kemiller2002

+0

링크 된 목록은 일종의 재귀 구문없이 SQL Server에서 정렬하기가 어렵지만 항상 클라이언트에서 조합하도록 요구할 수 있습니다. –

0

필자는 실제로 고객에게 노출 된 테이블의 레코드를 주문하기 위해이 종류의 필드에 십진 형식을 사용하여 고유 한 순서를 설정할 수있었습니다. 고객이 그것을 좋아한다는 점이 들리 겠지만, 그들은 그것을 매우 직관적이라고 발견했습니다. 그들은 21.5와 같은 숫자를 사용하여 21에서 22 사이의 숫자를 사용할 수 있다고 매우 빨리 파악했습니다.

아마 회계사이기 때문일 수 있습니다.

-1

"특정 순서"는 테이블 외부의 데이터를 기반으로합니까? 그렇다면 왜 동적 정렬을 할 수 있도록 포함시키지 않겠습니까? 이미 테이블에있는 경우 필드 추가는 중복됩니다.

2

십진수는 문제를 꽤 잘 해결해주는 것 같습니다. Decimals는 기본 10 개의 부동 소수점이므로 실제로 사용할 수있는 숫자는 많습니다. 당신이 꽤 많은 숫자로 나왔고 무제한의 숫자가 필요하다는 이유를 의심 할만한 이유가있는 경우를 보지 않았다면, 나는 그것을 들게 할 것입니다.

대체 의학이 필요하고 기본 데이터를 고수 할 필요가없는 경우 tumbler arithmetic으로 갈 수 있습니다. 기본 개념은 각 위치에서 무한히 확장 할 수있는 장소 표기법이라는 것입니다. 아주 간단하게 개념.

0

필자는 정수를 사용하고 주문 중간에 새 항목을 삽입해야하는 경우 필요한 경우 다시 정렬합니다. 하나의 update 문으로 필요한 간격을 만들 수 있기 때문에 매우 간단합니다. 그러나, 나는 단지 수십 행의 조회 테이블에서이 작업을 수행 한 적이 있습니다. 분명히이 작업은 약간 잘못되었습니다. 그러나 많은 수의 행에 대해이 문제에 대한 해결책이 필요한 경우 순서를 유지 관리하는 프로세스가 어쨌든 절차에 따라 처리되어야하므로 데이터 유형을 크게 선택하지 않아야한다고 말합니다.

관련 문제