+--------+-----------+-----------+
| id | name | description | status | parent_id | path |
+----+-----------+-----------------------+--------+-----------+-----------+
| 1 | 中国 | 中华人民共和家 | Y | NULL | 1/ |
| 4 | 广东省| 广东省 | Y | 1 | 1/4 |
| 5 | 深圳市| NULL | Y | 4 | 1/4/5 |
| 6 | 宝安区| NULL | Y | 5 | 1/4/5/6 |
| 7 | 龙华镇| NULL | Y | 6 | 1/4/5/6/7 |
+----+-----------+-----------------------+--------+-----------+-----------+
CREATE TABLE `category` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '分类ID',
`name` VARCHAR(50) NOT NULL COMMENT '分类名称',
`description` VARCHAR(200) NULL DEFAULT NULL COMMENT '分类描述',
`status` ENUM('Y','N') NOT NULL DEFAULT 'Y' COMMENT '分类状态有继承性',
`parent_id` INT(10) NULL DEFAULT '1' COMMENT '分类父ID',
`path` VARCHAR(255) NOT NULL COMMENT '分类递归路径索引',
INDEX `PK` (`id`),
INDEX `relation` (`id`, `parent_id`),
INDEX `FK_category_category` (`parent_id`),
INDEX `path` (`path`)
)
COMMENT='分类表'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=0
insert into category(`name`,`description`,`status`,`parent_id`,`path`) values('中国','中华人民共和家','Y',null,'1/')
ALTER TABLE `category`
ADD CONSTRAINT `FK_category_category` FOREIGN KEY (`parent_id`) REFERENCES `category` (`id`)
抽取广东子树
select * from category where path like '1/4%';
mysql> select * from category where path like '1/4%';
+----+-----------+-------------+--------+-----------+-----------+
| id | name | description | status | parent_id | path |
+----+-----------+-------------+--------+-----------+-----------+
| 4 | 广东省| 广东省 | Y | 1 | 1/4 |
| 5 | 深圳市| NULL | Y | 4 | 1/4/5 |
| 6 | 宝安区| NULL | Y | 5 | 1/4/5/6 |
| 7 | 龙华镇| NULL | Y | 6 | 1/4/5/6/7 |
+----+-----------+-------------+--------+-----------+-----------+
4 rows in set (0.00 sec)
文章表设计
看具体情况,拆分表,可按“日”,“月”,“年”等等
+-----------+
| category |
|-----------|
+-->|id | <---+
| |title | |
| |description| 1:n
| |status | |
| |parent_id | o---+
| +-----------+
|
1:n
|
| +-----------------+ +------------------+
| | article_2008_01 | | feedback_2008_01 |
| |-----------------| |------------------|
| |id |<--1:n--+ |id |
| |title | | |title |
| |content | | |content |
| |datetime | | |datetime |
| |status | | |status |
+--o|category_id | +--o|news_id |
+--o|user_id | +-->|user_id |
| +-----------------+ | +------------------+
| |
1:n +----------+ +---1:n---+
| | user | |
| |----------| |
+-->|id | <---+
|user |
|passwd |
|nickname |
|status |
+----------+
4.1. 分区表设计
分区表可以通过表空间,等等技术实现,优点是解决了Union查询问题,保证了数据的一致性。
+-----------+
| category |