您好我正在一个项目中,我必须使用父子关系保存数据。
数据结构如下:
flight_id child_id Flight_name
1 1 E213
2 2 E333
3 2 E444
第1次航班没有child_id
因此它的父级ID替换了它,2号航班有两个child_id
所以在每个child_id
中我必须放置父级ID。
知道我该怎么做?
答案 0 :(得分:1)
父子关系通常以相反的方式建模:孩子属于父母。想一想,一个孩子只能有一个父母,这很容易建模;但是有很多孩子ID的父母很难建模。
此外,您可以使用嵌套集a.k.a. MPTT更轻松地查询儿童/父母。
请参阅http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/和http://en.wikipedia.org/wiki/MPTT。
答案 1 :(得分:0)
通常,您不会存储所有子ID,而是存储父ID:
CREATE TABLE `flight` (
`id` int(11) NOT NULL,
`parent` int(11) DEFAULT NULL,
`flight_name` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`parent`) REFERENCES `flight` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
您的数据如下:
id parent flight_name
1 NULL E213
2 NULL E333
3 2 E444
4 2 E555
5 2 E666