MySQL是目前使用最廣泛的關系型數據庫之一,在開發過程中,我們經常需要設計具有樹形結構特點的數據表,比如商品分類、組織架構等,這就要用到MySQL的樹形結構數據表設計。
樹形結構數據表的設計需要用到兩種方法:嵌套集(Nested Set)和鄰接表(Adjacent List)。以下是兩種方法的代碼實現:
-- 嵌套集 CREATE TABLE `category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `lft` int(11) DEFAULT NULL COMMENT '左值', `rgt` int(11) DEFAULT NULL COMMENT '右值', `level` int(11) DEFAULT NULL COMMENT '層級', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品分類'; -- 鄰接表 CREATE TABLE `category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `parent_id` int(11) DEFAULT NULL COMMENT '父級ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品分類';
嵌套集法是通過左右值和層級來表示節點之間的關系,優點是查詢效率高、無限級分類,缺點是增加、刪除、移動節點時比較復雜。
鄰接表法是通過父節點ID來表示節點之間的關系,優點是增加、刪除、移動節點簡單,缺點是查詢效率稍低、不適合無限級分類。
對于具體應用情況,我們需要根據需求選擇合適的方法,靈活設計數據表結構。
下一篇css-8