Как организовать мои страницы по жанру или категории? Должен ли я использовать базу данных MySQL?
Я очень новичок в концепции баз данных mySQL и не уверен, что это то, что мне нужно для организации контента моего сайта. Я собираю сайт, на котором есть база фильмов, и я хочу, чтобы фильмы делились по жанрам, категориям, годам и т. Д. Некоторые из этих фильмов имеют несколько жанров и категорий, и я не знаю, как организовать организацию контента и тегов.
Примером того, что я ищу, может быть что-то вроде этого: http://www.thelonelyisland.com/videos
Я действительно хочу знать, должен ли я использовать базу данных mySQL или есть ли другой способ фильтрации содержимого. Я извиняюсь за наивность вопроса, но я искал везде и понятия не имею, что я делаю!!
1 ответ
Использование базы данных, безусловно, будет лучшим решением. Это базовый макет:
Начните с таблицы фильмов: ID_movie, имя, год и т. Д.
Жанровая таблица: ID_genre, имя.
Таблица категорий: ID_категория, имя.
Фильмы имеют много-много-много отношений с жанром / категорией. Таким образом, вам понадобится промежуточный стол между фильмами и жанром / категорией. В этой таблице вы найдете комбинации фильмов и жанров / категорий.
таблица movie_genre: ID_movies, ID_genre
таблица кинофильмов: 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, если хотите иметь только годы. Одним из способов было бы превратить их в строковое значение (Year VARCHAR(4) вместо release_date DATETIME). Кроме того, я включил уникальные и индексные таблицы мостов. Индекс ускорит ваше время запроса.
Ниже вы найдете пример запроса, который будет извлекать имя и жанр из фильма № 2. ВЫБЕРИТЕ m.name AS Movie, g.name AS Жанр ОТ (фильм AS m оставлен JOIN movie_genre AS mg ON mg.id_movie = m.id_movie) Жанр JOIN AS g ON g.id_genre = mg.ID_genre ГДЕ m.id_movie = 2;