2015-11-11 61 views
-1

我正在一個娛樂網站上建議顯示爲用戶和編號喜歡爲單個節目添加多個類別,所以我有一個數據庫表名爲節目有關於節目的信息例如預覽圖像,名稱,開始日期等。我有另一個表類別,所以我問我應該如何規劃數據庫的方式,每個節目都有自己的一套類別。如何添加數據庫上的網站類別

+0

爲'show'和'category'之間的關係創建另一個表,就像'show_categories'一樣,並在該表中使用'show_id'和'category_id' –

+0

您還需要子類別嗎? – Ultimater

回答

0

創建該表showcategory之間的關係另一個表使用show_idcategory_id

Sample Database Structure

序來獲取你只是想加入show,category,show_category表表演的類別。

+0

你可以發佈你需要獲取show id 1類別的sql查詢嗎? – Sidneyvan94

+0

'select * from show_category在A.category_id = B.category_id上的聯接類別B,其中A.show_id = 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小提琴here運行上面。