28.05.2015, 13:09
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от dimke931
|
а что нужно предоставить?)
|
Ну вообще-то дамп таблицы данных, чтобы видеть структуру и связи. Но эта тема (да и вообще весть пост данный) к JS отношения не имеет, ну только, если на уровне "щелкнуть и показать", не более.
|
|
28.05.2015, 13:10
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от dimke931
|
сами связи дополнительно хранятся отдельно
|
Почему отдельно?
|
|
28.05.2015, 13:29
|
Интересующийся
|
|
Регистрация: 27.05.2015
Сообщений: 25
|
|
Сообщение от laimas
|
Почему отдельно?
|
Вот честно, я не знаю... Это не моя структура данных... как я изначально и писал это французская разработка, но ее забросили в 2014 году и я решил ее дописать, как то поиграться с ней, но было куча вопросов, которые приходится разбирать, получалось вроде самому до сего момента а про то что отдельно, я читал статью о хранении сложных структур данных в реляционных бд и там советовали отдельно хранить связи (метод М-арного дерева)
|
|
28.05.2015, 13:37
|
Интересующийся
|
|
Регистрация: 27.05.2015
Сообщений: 25
|
|
CREATE TABLE `got_kievsky_even_sour` (
`id_indi` mediumint(9) NOT NULL DEFAULT '0',
`id_husb` mediumint(9) NOT NULL DEFAULT '0',
`id_wife` mediumint(9) NOT NULL DEFAULT '0',
`type_evene` varchar(4) NOT NULL,
`date_evene` varchar(32) DEFAULT NULL,
`lieu_evene` varchar(42) DEFAULT NULL,
`dept_evene` varchar(42) DEFAULT NULL,
`id_sour` mediumint(9) NOT NULL DEFAULT '0',
`type_sourc` varchar(4) NOT NULL,
`attr_sourc` varchar(255) DEFAULT NULL,
KEY `FK1_INDI` (`id_indi`,`type_evene`),
KEY `FK2_HUSB` (`id_husb`,`type_evene`),
KEY `FK3_WIFE` (`id_wife`,`type_evene`),
KEY `FK4_SOUR` (`id_sour`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
# TC`got_kievsky_evenement`utf8_general_ci ;
CREATE TABLE `got_kievsky_evenement` (
`id_indi` mediumint(9) NOT NULL DEFAULT '0',
`id_husb` mediumint(9) NOT NULL DEFAULT '0',
`id_wife` mediumint(9) NOT NULL DEFAULT '0',
`type_evene` varchar(4) NOT NULL,
`date_evene` varchar(32) DEFAULT NULL,
`lieu_evene` varchar(42) DEFAULT NULL,
`dept_evene` varchar(42) DEFAULT NULL,
`note_evene` mediumtext,
`anne_evene` smallint(6) DEFAULT NULL,
KEY `FK1_INDI` (`id_indi`),
KEY `FK2_HUSB` (`id_husb`),
KEY `FK3_WIFE` (`id_wife`),
KEY `FK4_LIEU` (`lieu_evene`),
KEY `FK5_TYPE` (`type_evene`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
# TC`got_kievsky_individu`utf8_general_ci ;
CREATE TABLE `got_kievsky_individu` (
`id_indi` int(9) NOT NULL DEFAULT '0',
`nom` varchar(32) DEFAULT NULL,
`prenom1` varchar(32) DEFAULT NULL,
`prenom2` varchar(32) DEFAULT NULL,
`prenom3` varchar(32) DEFAULT NULL,
`sexe` tinytext,
`profession` varchar(42) DEFAULT NULL,
`date_naiss` varchar(32) DEFAULT NULL,
`lieu_naiss` varchar(42) DEFAULT NULL,
`dept_naiss` varchar(42) DEFAULT NULL,
`date_deces` varchar(32) DEFAULT NULL,
`lieu_deces` varchar(42) DEFAULT NULL,
`dept_deces` varchar(42) DEFAULT NULL,
`note_indi` text,
`id_pere` mediumint(9) DEFAULT NULL,
`id_mere` mediumint(9) DEFAULT NULL,
`tri` smallint(6) DEFAULT NULL,
`sosa_dyn` bigint(20) DEFAULT NULL,
`anne_deces` smallint(6) DEFAULT NULL,
PRIMARY KEY (`id_indi`),
KEY `FK1_NOM` (`nom`),
KEY `FK2_PREN` (`prenom1`),
KEY `FK3_PERE` (`id_pere`),
KEY `FK4_MERE` (`id_mere`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
# TC`got_kievsky_relation`utf8_general_ci ;
CREATE TABLE `got_kievsky_relation` (
`id_parent` mediumint(9) NOT NULL DEFAULT '0',
`id_enfant` mediumint(9) NOT NULL DEFAULT '0',
`type_parent` char(1) DEFAULT NULL,
PRIMARY KEY (`id_parent`,`id_enfant`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
# TC`got_kievsky_source`utf8_general_ci ;
CREATE TABLE `got_kievsky_source` (
`id_sour` mediumint(9) NOT NULL DEFAULT '0',
`note_source` mediumtext,
PRIMARY KEY (`id_sour`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
вот я сделал дамп таблиц
|
|
28.05.2015, 13:40
|
Интересующийся
|
|
Регистрация: 27.05.2015
Сообщений: 25
|
|
Я только не как не могу понять, почему мне не выдает связей... ведь они должны быть...
|
|
28.05.2015, 13:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Код:
|
CREATE TABLE `got_kievsky_relation` (
`id_parent` mediumint(9) NOT NULL DEFAULT '0',
`id_enfant` mediumint(9) NOT NULL DEFAULT '0',
`type_parent` char(1) DEFAULT NULL,
PRIMARY KEY (`id_parent`,`id_enfant`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
Это и есть таблица связывающая потомков с предками? А какова максимальная глубина вложения, или она не ограничивается?
|
|
28.05.2015, 13:46
|
Интересующийся
|
|
Регистрация: 27.05.2015
Сообщений: 25
|
|
Сообщение от laimas
|
Код:
|
CREATE TABLE `got_kievsky_relation` (
`id_parent` mediumint(9) NOT NULL DEFAULT '0',
`id_enfant` mediumint(9) NOT NULL DEFAULT '0',
`type_parent` char(1) DEFAULT NULL,
PRIMARY KEY (`id_parent`,`id_enfant`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
Это и есть таблица связывающая потомков с предками? А какова максимальная глубина вложения, или она не ограничивается?
|
не ограниивается
|
|
28.05.2015, 13:46
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от dimke931
|
Я только не как не могу понять, почему мне не выдает связей... ведь они должны быть...
|
А где в этом запросе вообще есть упоминание о каких либо связях?:
"select id_indi as id, nom as name, prenom1 as surname, ifnull(id_pere,0) as id_fat, ifnull(id_mere,0) as id_mot from got_".$_REQUEST['ibase']."_individu "
|
|
28.05.2015, 13:49
|
Интересующийся
|
|
Регистрация: 27.05.2015
Сообщений: 25
|
|
Сообщение от laimas
|
А где в этом запросе вообще есть упоминание о каких либо связях?:
"select id_indi as id, nom as name, prenom1 as surname, ifnull(id_pere,0) as id_fat, ifnull(id_mere,0) as id_mot from got_".$_REQUEST['ibase']."_individu "
|
хм... нигде... просто я когда изучал sql в университете мы делали в erwin концептуальную модель и генерировали скрипт, который содержал в себе связи... а тут мне не дали связи вот я и растерялся
|
|
28.05.2015, 14:02
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
мы делали в erwin концептуальную модель - а не шаляй валяй. ) Ну а запрос ваш, это же просто запрос к одной таблице для получения указанных полей и все, без всякой концепции, то бишь углубленной задачи.
Совет, хотя можете его и не воспринимать - не пишите в запросах имена полей и названия функций в одном регистре, плохо читается такой запрос. Лучше так:
$sql = 'SELECT id_indi AS id, nom name, prenom1 surname, ifnull(id_pere,0) id_fat, ifnull(id_mere,0) id_mot FROM got_'.$_REQUEST['ibase'].'_individu';
AS указан только раз, ибо уж не помню с какой версии его можно опускать.
А вот это - got_' . $_REQUEST['ibase'] . '_individu - не допустимо.
Нет времени сейчас, а выбор из таблицы дерева, это извечный вопрос, и о нем уже столько переписано. Есть такой подход: NESTED SETS есть и иные. Могу добавить, по секрету, что можно вообще сформировать строку запроса, выполнить один запрос и получить дерево, и тоже без рекурсий. Только одно условие для этого нужно - ограничение максимального вложения какой либо величиной.
|
|
|
|