PHP 및 MySQL에서 패밀리 트리를 작성해야합니다. 오픈 소스 사용자 정의 가능한 html 패밀리 트리 작성 소프트웨어가 부족하다는 점에 저는 놀랍습니다. MySQL 다이어그램과 패밀리 트리를 저장하는 것에 대해 많은 시간을 보냈습니다. 모든 것이 나에게 의미가 있습니다. 노드 (사람)가있는 테이블과 가장자리가있는 테이블 (관계)이 있습니다.MySQL 스토어 관계 (패밀리) 트리
유일한 문제는 형제와 조부모 관계와 같이 반드시 인접하지 않은 관계를 저장하는 가장 좋은 방법은 아닌지입니다. 처음에는 이러한 연결을 해결할 수있는 부모 (모두 부모가 있음)를 눈에 보이지 않게 적용 할 수 있기 때문에 이것이 큰 문제는 아니라고 생각했습니다.
그러나 낭만적 인 파트너와 같은 공통 부모가없는 관계를 저장할 수도 있어야합니다. 내가 읽은 모든 것은 부모 - 자식 관계를 제안하지만 낭만적 인 파트너는 일반적인 부모 (잘하면)를 공유하지 않기 때문에 모서리 테이블에 저장하는 방법을 모르겠습니다. 다른 테이블을 사용해야합니까, 아니면 무엇을 사용해야합니까? 그것이 같은 테이블에 있다면 어떻게 표현할 수 있습니까? 내가 익숙하지 않은 관계로 이것을하고있는 한, 나는 가족과 마찬가지로 그렇게 할 것입니다.
요약하면, 세 가지 질문 :
- 어떻게 수평 관계를 표현합니까?
- 측면 관계에 공통 상위 항목이있는 경우 어떻게 저장합니까? 다른 측면 관계가 저장되어있는 테이블에
family
플래그가 있어야합니까? - 자식이 두 개 이상의 가장자리 (조부모)이지만 직접 부모를 사용할 수없는 부모 - 자식 관계는 어떻게 저장합니까?
어떤 도움을 주셔서 감사합니다. 누군가가 javascript/html 가계도 작성 소프트웨어에 대한 제안 사항이 있으면 훌륭합니다.
이것은 재미 있고 문제를 해결할 잠재력이 있습니다 (필자는 필요한 경우 자리 표시자를 사용하여 원거리 관계에 공백을 두지 말 것을 제안합니다). 내가 가진 유일한 질문은 어떻게 내가 투명하게 관계의 방향을 결정할 수 있는가하는 것입니다. 지금 당장은 한 노드가 다른 노드와 상대적으로 어디에 위치하는지에 대한 판단을 내리기 위해 매번 이벤트 유형 설명이나 역할을 조사해야 할 것처럼 보입니다. –
@tandu '관계의 방향'이 무슨 뜻인지 모르겠다. 나는 그것이 SQL보다는 당신의 프로그램 논리에 달려 있다고 생각한다. 데이터베이스는 단지 'Bob'의 'birth'이벤트에이를 저장하고 'Geoff'는 아버지 였고 'Alice'는 어머니 였고 'Bob'은 'baby'였습니다. 프로그램에서, Bob의 부모가 누구인지 알아 보려면 person_event_role에서 선택하십시오. 여기서 life_event_id는 Bob의 출생이고 life_event_role_id는 어머니 또는 아버지입니다. –
그것이 바로 내가 지향하는 것입니다. 예를 들어 사용자가 Bob 인 경우 Bob의 아들, 아버지 및 아내가 트리에서 어디에 있는지 찾아야합니다. 그의 아들은 남쪽, 그의 아버지는 북쪽, 그의 아내는 서쪽 또는 동쪽입니다. 당신이 이미 대답 한 것처럼 보이지만, 당신은 사람의 역할에 기초하여이 방향을 계산하라는 말을합니다. PHP에서 각 문자열을 검사하고 그 방향을 계산해야한다면 MySQL에서이 작업을 투명하게 수행 할 수는 없지만 스키마가 필요하지 않다고 말하는 것 같습니다. –