我对 mySQL 数据库的概念还很陌生,不确定这是否是我组织网站内容所需要的。我正在建立一个拥有电影数据库的网站,我希望能够将电影按流派、类别、年份等进行划分......其中一些电影有多种流派和类别,我不知道如何组织内容和标签。
我正在寻找的示例可能是这样的: http://www.thelonelyisland.com/videos
我真的很想知道我是否应该使用 mySQL 数据库,或者是否有另一种方法来过滤内容。对于这个问题的幼稚,我深表歉意,但我到处都看过,却不知道自己在做什么!!
最佳答案
使用数据库肯定是最好的选择。这是一个基本布局:
从一张电影表开始: ID_movie、名称、年份等
流派表: ID_流派,名称。
分类表: ID_类别,名称。
电影与流派/类别之间存在多对多关系。所以你需要一个电影和流派/类别之间的桥接表。在此表中,您将看到电影和流派/类别之间的组合。
movies_genre 表: ID_movies, ID_genre
movies_category 表: ID_movies, ID_category
这是一个用于创建表结构和示例数据的 SQL 查询:
CREATE TABLE movie(
id_movie INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
release_date DATETIME
);
CREATE TABLE genre(
id_genre INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE category(
id_category INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE movie_genre (
ID_movie_genre INT AUTO_INCREMENT PRIMARY KEY,
ID_movie INT,
ID_genre INT,
UNIQUE (ID_movie,ID_genre),
INDEX (ID_movie,ID_genre)
);
CREATE TABLE movie_category (
ID_movie INT,
ID_category INT
);
INSERT INTO movie (name, release_date) VALUES
('Transformers 3 Dark of the moon','2012-01-01'),
('Harry potter and the deathly hallows 2','2011-01-01'),
('Pirates of the caribbean. On stranger tides', '2012-01-01');
INSERT INTO genre (name) VALUES ('Action'), ('Fantasy'), ('Comedy');
INSERT INTO movie_genre(id_movie, id_genre) VALUES (1,1), (2,1),(2,2),(3,2),(3,1);
回应以下评论。如果您只想拥有年份,则可以将 release_date 更改为年份。一种方法是将它们转换为字符串值(Year VARCHAR(4) 而不是 release_date DATETIME)。此外,我在桥接表中包含了唯一索引。索引将加快您的查询时间。
您将在下面找到一个示例查询,该查询将从电影编号 2 中检索名称和类型。 SELECT m.name AS Movie,g.name AS Genre FROM (movie AS m left JOIN movie_genre AS 毫克 ON mg.id_movie = m.id_movie) 加入流派 AS g ON g.id_genre = mg.ID_genre 其中 m.id_movie = 2;
关于mysql - 如何按流派或类别组织我的页面?我应该使用 mysql 数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677803/