2010-02-14 4 views
0

관계형 데이터베이스 및 계층 구조에 대한 모범 사례에 대한 질문이 있습니다. 내 질문은 텍스트 또는 int (id) 기반 계층 구조를 사용하는 것이 더 제정신입니까?int (id) 또는 텍스트 기반 계층 구조?

나는 계층 구조를 가지고 있지만 id 기반 구조는 아닙니다. 계층 구조는 텍스트 을 기반으로합니다. id1, id2와 반대로 'level1', 'level2'

mysql과 solr을 사용하여 데이터를 관리합니다.

현재 텍스트 계층 구조를 유지하고 있으므로 원하는대로 사용할 수 있습니다. 하지만 id 계층 구조를 만들면 더 건강 해 보입니다. Int (id) 계층 구조도 더 빠르게 보이고 정규화되지 않은 데이터에 실제로 취약하지 않습니다. (나는 ID 등을 다듬을 필요가 없습니다)

이 점에 대한 의견은 많이 있습니다. 다른 사람들이 모범 사례라고 느끼는 것을 발견하는 것은 흥미로울 것입니다.

건배

답변

1

하위 트리를 가져와야하는 경우 둘 다 사용하는 경향이 있습니다.

행에는 id와 parentId로 구성된 2 개의 int 열이 있습니다. 이것은 트리 구조를 구성합니다.

또한 부모 선의 색인을 나타내는 텍스트 수준이 있습니다. 예 : idName = "44.21.31"인 행은 31의 ID, 21의 부모 ID 및 그 상위 부모는 44의 ID를 갖습니다.이 방법으로 하위 트리를 가져올 수 있습니다. 여기서 "44.21. %"와 같은 idName은 ID가 21 인 행의 모든 ​​자식, 자식 등을 가져 오십시오.

엔티티 ID에 대한 중복 정보가 있지만 정상적인 형식을 벗어납니다.하지만 가치가있을 수 있습니다. 그렇지 않으면 hierarcical 구조를지지하지 않습니다.

+0

나는 당신이 언급 한 것처럼 둘 다 지켰다. 그래서 나는 텍스트 정보를 사용해야한다면 가능하다. 정말 고마워. 정말 나를 위해 물건을 지워. 나는 내가 어떻게 속도 문제에 빠지면 나는 내가 중복 된 데이터를 제거 할 수 있다고 생각한다. 이 답변에 대해 감사합니다. –

1

나는의 int를 사용하는 것을 선호 - 그들은 더 빨리 작은 그들은 더 sematic 의미를 포함하지 않기 때문에, 텍스트를 기반으로 한 힘과 같이 변경할 필요가 없습니다.

+0

정말 다행입니다. :). 나는 총 멍청한 놈이 아니라 DB wizzkid도 아니다. 나는 올바른 방향으로 가고 있다고 생각했고, 속도는 필수적이었고 Int는 또한 계층 구조 사이에 엄격한 관계를 유지하는 최선의 방법으로 보입니다. 이것을 변경하면 내 애플 리케이션에 큰 해결 방법이 될 것이므로 정말 기쁜 마음으로 이것이 최선의 방법이라고 생각합니다. stackoverflow없이 내가 뭘할지 모르겠다. 좋은 날을 보내길 바랍니다. –

1

ID 기반 계층 구조를 사용하면 성능이 향상됩니다. DB에 두 개의 코드 (IDCode 및 코드)를 보유하는 두 개의 열을 사용할 수 있습니다. 이런 식으로 만들어진 코드 :

아이 코드 = IDCODE + 부모 코드

은 IDCODE이 고유한지 관심을합니다.

이 작업을 처리하기 위해 일부 작업이 필요하기 때문에이 솔루션은 좋지 않습니다.