电影目录的数据库设计

时间:2013-10-29 05:38:06

标签: mysql sql database database-design erd

我正在设计一个用于课堂练习的数据库,我被困在设计中。在库存系统中有DVD(分为3类:电视,音乐视频,电影)。在每个类别中,它都有自己的信息子集 - 电视类别信息:TVInfo1,TVInfo2,TVInfo3;电影类别:MInfo1,MInfo2,MInfo3,MInfo4;音乐视频类别:MVInfo 1,MVInfo2。

我不确定如何合并分类类型具有依赖于每个类别的自己的唯一属性。到目前为止我的桌子:

DVD(Title [PK], CategoryID[FK])

Category(CategoryID[PK], TYPE)

CatMovie(Title [PK,FK], CategoryID[PK,FK], MInfo1, MInfo2, MInfo3, MInfo4)

CatMV(Title [PK,FK], CategoryID[PK,FK],MVInfo 1, MVInfo2)

CatTV(Title [PK,FK], CategoryID[PK,FK],TVInfo1, TVInfo2, TVInfo3)

不确定这是否正确。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

正如我所看到的,它只是一个简单的电影库数据库。你可以这样设计:

enter image description here

现在,按照您的规范,您的title_mstr表格包含所有标题。 title_category表格将包含您的类别(MovieTV)。然后,根据category_info,您的每个类别的信息都在title_category。此架构还包括每个的外键。

以下是代码:

-- -----------------------------------------------------
-- Table `title_category`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `title_category` (
  `title_cat_id` INT NOT NULL,
  `title_category_desc` VARCHAR(45) NULL,
  PRIMARY KEY (`title_cat_id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `title_mstr`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `title_mstr` (
  `title_id` INT NOT NULL AUTO_INCREMENT,
  `title_cat_id` INT NULL,
  `title_name` VARCHAR(100) NOT NULL,
  `title_desc` VARCHAR(45) NULL,
  `title_details` VARCHAR(45) NULL,
  PRIMARY KEY (`title_id`),
  UNIQUE INDEX `movie_name_UNIQUE` (`title_name` ASC),
  INDEX `title_cat_id_idx` (`title_cat_id` ASC),
  CONSTRAINT `title_cat_id`
    FOREIGN KEY (`title_cat_id`)
    REFERENCES `title_category` (`title_cat_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tape`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `tape` (
  `tape_id` INT NOT NULL,
  `tape_category_id` INT NULL,
  `movie_id` INT NULL,
  `tape_details` VARCHAR(45) NULL,
  PRIMARY KEY (`tape_id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `title_category_info`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `title_category_info` (
  `title_category_info_id` INT NOT NULL AUTO_INCREMENT,
  `title_cat_id` INT NULL,
  `title_category_info` VARCHAR(45) NULL,
  PRIMARY KEY (`title_category_info_id`),
  INDEX `title_cat_id_idx` (`title_cat_id` ASC),
  CONSTRAINT `title_cat_id`
    FOREIGN KEY (`title_cat_id`)
    REFERENCES `title_category` (`title_cat_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

为了更好地理解,您可以参考以下链接: