如何在数据库上添加网站类别

时间:2015-11-11 10:22:26

标签: php mysql sql web

我正在开设一个娱乐网站,为用户推荐节目,并且ID为单个节目添加多个类别,因此我有一个名为shows的数据库表,其中包含有关节目的信息,例如预览图像,名称,开始日期等等。我有另一个类别表,所以我想问我应该如何规划数据库,每个节目都有自己的类别。

2 个答案:

答案 0 :(得分:0)

使用showcategory

为该表格中的show_idcategory_id之间的关系创建另一个表格

Sample Database Structure

为了获得您想要加入show,category,show_category表格的节目类别。

答案 1 :(得分:0)

我建议使用数据透视表。

CREATE TABLE `categories` (
  `id` int(10) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `categories` (`id`, `name`) VALUES
(1, 'Kids and Family'),
(2, 'Adult Content'),
(3, 'Teen'),
(4, 'Cartoon'),
(5, 'Unrated'),
(6, 'Movie'),
(7, 'Series');

CREATE TABLE `shows` (
  `id` int(10) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `network` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `shows` (`id`, `name`, `network`) VALUES
(1, 'The Simpsons', 'Fox'),
(2, 'Seinfeld', 'NBC');

CREATE TABLE `show_categories` (
  `id` int(10) UNSIGNED NOT NULL,
  `show_id` int(10) UNSIGNED NOT NULL,
  `category_id` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `show_categories` (`id`, `show_id`, `category_id`) VALUES
(1, 1, 3),
(2, 1, 4),
(3, 1, 7),
(4, 2, 3),
(5, 2, 7);

ALTER TABLE `categories`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `shows`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `show_categories`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `categories`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

ALTER TABLE `shows`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

ALTER TABLE `show_categories`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

然后你可以写一个像这样的JOIN语句来获取给定节目的类别:

SELECT a.name as 'show',c.name as 'category' FROM shows a LEFT JOIN show_categories b ON a.id=b.show_id LEFT JOIN categories c ON c.id=b.category_id

您可以在sql fiddle here中运行上述内容。