기본적으로 질문은 계층 적 데이터를 사용하는 모든 테이블에서 동일한 열을 사용해야하는지, 아니면 모든 데이터 유형의 계층 적 데이터를 처리하는 열이 하나의 테이블인지를 결정하는 것입니다.MySQL 아키텍처 (계층 적 데이터)
내 데이터베이스에는 다양한 유형의 계층 적 데이터가 저장됩니다 (페이지, 질문 등). 아래에는 questions
데이터베이스가 제공됩니다.
CREATE TABLE `hp_questions` (
`client_id` int(4) unsigned NOT NULL,
`id` int(4) unsigned NOT NULL AUTO_INCREMENT,
`root_id` int(4) unsigned NOT NULL,
`parent_id` int(4) unsigned NOT NULL,
`depth` int(4) unsigned NOT NULL DEFAULT '0',
`position` int(4) unsigned NOT NULL DEFAULT '0',
`absolute_position` int(4) unsigned NOT NULL DEFAULT '0',
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`slug` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`uri` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`body` longtext COLLATE utf8_unicode_ci,
`last_modified_by_id` int(4) unsigned DEFAULT NULL,
`last_modified_on` int(4) unsigned DEFAULT NULL,
`language` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `client_id` (`client_id`)
) ENGINE=InnoDB AUTO_INCREMENT=738 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
이제 root_id, parent_id, depth, position, absolute_position
은 계층 적 데이터에만 사용됩니다. 동일한 열은 pages
, filesystem
, templates
및 permissions
테이블입니다. 그 대신 하나의 테이블에 두는 것이 더 정확한지 궁금하고 데이터 형식을 나타내는 추가 열 type
을 추가 하시겠습니까?