Я хочу создать сайт семейного древа, в который можно динамически добавлять участников через бэкэнд. Я использую php-mvc, mysql.
Я добавляю участников через бэкэнд, и у меня есть 4 таблицы: 1. Детали участников, а также идентификаторы отца, матери;
2 партнер-показать партнерские отношения
3 ребенка — показать отношения ребенка
4 братьев и сестер — показать родственные отношения
Моя структура таблицы
члены
CREATE TABLE IF NOT EXISTS `members` (
`members_id` int(10) NOT NULL AUTO_INCREMENT,
`members_family` int(10) NOT NULL,
`members_first_name` varchar(500) NOT NULL,
`members_sur_name` varchar(500) DEFAULT NULL,
`members_gender` int(10) DEFAULT '0' COMMENT '0-notset,1-male,2-female,3-transgender',
`members_birth_date` date DEFAULT NULL,
`members_is_living` int(10) DEFAULT NULL,
`members_death_date` date NOT NULL DEFAULT '0000-00-00',
`members_email` varchar(1000) DEFAULT NULL,
`members_mobile` varchar(500) DEFAULT NULL,
`members_telephone` varchar(500) DEFAULT NULL,
`members_website` varchar(1000) DEFAULT NULL,
`members_blog` varchar(1000) DEFAULT NULL,
`members_skype` varchar(1000) DEFAULT NULL,
`members_address` varchar(5000) DEFAULT NULL,
`members_birth_place` varchar(1000) DEFAULT NULL,
`members_death_place` varchar(1000) DEFAULT NULL,
`members_profession` varchar(1000) DEFAULT NULL,
`members_company` varchar(1000) DEFAULT NULL,
`members_interests` varchar(5000) DEFAULT NULL,
`members_notes` varchar(1000) DEFAULT NULL,
`members_father` varchar(10) DEFAULT NULL,
`members_mother` int(10) DEFAULT NULL,
`members_generation` int(10) DEFAULT NULL,
`members_status` int(10) NOT NULL,
`members_image` varchar(1000) DEFAULT NULL,
`members_inserttime` datetime NOT NULL,
`members_updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`members_id`)
)
партнер
CREATE TABLE IF NOT EXISTS `partner` (
`partner_id` int(10) NOT NULL AUTO_INCREMENT,
`partner_member` int(10) NOT NULL,
`partner_of_member` int(10) NOT NULL COMMENT 'partner of which member in members_table',
`partner_relation_status` int(10) NOT NULL COMMENT '1-current,2-ex-partner',
`partner_status` int(10) NOT NULL,
`partner_inserttime` datetime NOT NULL,
`partner_updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`partner_id`)
)
ребенок
CREATE TABLE IF NOT EXISTS `child` (
`child_id` int(10) NOT NULL AUTO_INCREMENT,
`child_member` int(10) NOT NULL,
`child_of_member` int(10) NOT NULL,
`child_status` int(10) NOT NULL,
`child_inserttime` datetime NOT NULL,
`child_updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`child_id`)
)
родной брат
CREATE TABLE IF NOT EXISTS `sibling` (
`sibling_id` int(10) NOT NULL AUTO_INCREMENT,
`sibling_member` int(10) NOT NULL,
`sibling_of_member` int(10) NOT NULL COMMENT 'sibling of which member in mebers table',
`sibling_relation` int(10) NOT NULL COMMENT '1-younger,2-elder',
`sibling_status` int(10) NOT NULL,
`sibling_inserttime` datetime NOT NULL,
`sibling_updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`sibling_id`)
)
Я добавляю значения в эту таблицу. Теперь мне нужно показать это в виде древовидной структуры.
Я не получил никакой идеи от моих поисков,
Может ли кто-нибудь помочь мне пройти данные как родословная.
Я не думаю, что ваша структура таблицы является лучшим решением. Вы должны создать 1 таблицу: «Персона» и поместить каждого человека в эту таблицу. Вы можете добавить поле «роль» в таблицу «Персона», которое указывает «роль» (отец, мать, партнер и т. Д.) Этого человека. Больше информации об иерархических данных: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/.
Если вы можете запросить данные, вам нужно только преобразовать их в дерево json. Взгляни на «jqTree«для получения дополнительной информации о древовидной структуре json.
Других решений пока нет …