2012-05-14 2 views
1

방법 PHP를 적절한 방식으로 다음과 같은 구조를 주문 주문 각각에는 행의 순서를 표시하는 순서 필드가 있습니다. 데이터를 필터링하기 위해 쿼리를 분리하고 두 배열을 병합하는 중입니다. 내 문제는 : 첫 번째 테이블 주문 필드 값이 두 번째 테이블 주문 값과 같은 경우 행의 순서가 적절한 방식으로 렌더링되지 않습니다. 최선의 결과를 얻기 위해이 문제에 어떻게 대처해야합니까?정규화 행 PHP

+---domain----+ 

id name 

1 example 


+----text_modules----+ 

id name  domain_id position 
1 example 1   1 

+----text_modules-----+ 

1 example 1   1 

답변

1

내 문제 위치 열의 값을 정규화하는 방법 : 첫 번째 테이블 필드 값이 두 번째 테이블 순서 값과 동일 주문할 경우, 행의 순서는 아니다 적절한 방법으로 렌더링.

그럼 position을 사용하지 마세요.

는 공통 테이블에 position을 "추출"을 상속을 사용하는 text_module이 (같은 domain_id 용) product_module 같은 position을 수 없다는 적용 할 DBMS를 활용, 직접에이 UNIQUE 만들려면 그 테이블. 이런 식으로 뭔가가 :

enter image description here

U1{domain_id, position}에 UNIQUE 제약 조건을 의미한다.

중간에 자연스러운 키 (InnoDB 테이블이 clustered이고 보조 인덱스가 비싸다)를 사용하는 것이 좋습니다. 한편


는 상속는 자신의 합병증을 제공합니다, 그래서 당신은 당신의 현재 테이블을 유지하고 다음 중 하나를 수행 고려해 볼 수 있습니다 : 순서 중 하나를 테이블에 앞서 삽입에 이미있는 경우

  • 확인 둘 중 하나에 새 행이 있습니다. 동시 환경에서는 추가 잠금 없이는 작동하지 않습니다.
  • 적절한 경우 position 대신 시간 소인을 사용하십시오.
+0

Whoa !!이 세심한 반응에 대해 감사드립니다. 나는 일부 choises 만들 수 있도록 그것을 수정하려고합니다. – lgt