我做旅游网站 然后存储用户发表的文章 按照地名存储 比如西湖 昆明等 但是当用户访问时 我需要调用该地以及其下属地区所有的文章 我在文章里加入了地名信息(地名id以及name)
但是当我访问某一个地区时 比如云南 那么我需要调用关于云南 昆明 丽江 等下属地区的文章 此时我不能进行搜索 帮助我改善数据库 或者重新设计以下我不知道怎样进行数据库的规划
但是当我访问某一个地区时 比如云南 那么我需要调用关于云南 昆明 丽江 等下属地区的文章 此时我不能进行搜索 帮助我改善数据库 或者重新设计以下我不知道怎样进行数据库的规划
CREATE DATABASE travel_agent;USE travel_agent;CREATE TABLE places (
id INT PRIMARY KEY auto_increment,
name VARCHAR(20) NOT NULL,
fullname VARCHAR(255) NULL,
parent_id INT NULL
) ENGINE = innoDB;ALTER TABLE places
ADD FOREIGN KEY (parent_id) REFERENCES places (id);CREATE TABLE essays (
id INT PRIMARY KEY auto_increment,
title VARCHAR(255) NOT NULL,
place_id INT NOT NULL
) ENGINE = innoDB;ALTER TABLE essays
ADD FOREIGN KEY (place_id) REFERENCES places (id);DELIMITER /CREATE TRIGGER trig_set_fullname
BEFORE INSERT ON places
FOR EACH ROW
SET NEW.fullname = CONCAT(
IF(ISNULL(NEW.parent_id),
'',
(SELECT fullname FROM places
WHERE id = NEW.parent_id)),
' ',
NEW.name);
/DELIMITER ;INSERT INTO places (id, name, parent_id)
SELECT 1, '云南', NULL UNION
SELECT 2, '昆明', 1 UNION
SELECT 3, '丽江', 1;INSERT INTO essays (id, title, place_id)
SELECT 1, 'YN', 1 UNION
SELECT 2, 'KM', 2 UNION
SELECT 3, 'LJ', 3;SELECT * FROM places;SELECT * FROM essays WHERE id IN (SELECT id FROM places WHERE fullname LIKE CONCAT((SELECT fullname FROM places WHERE name = '云南'), '%'));