Как организовать мои страницы по жанру или категории? Должен ли я использовать базу данных 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);

SQL FIDDLE DEMO

В ответ на замечания ниже. Вы можете поменять 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;

Другие вопросы по тегам