0

クラスの演習用にデータベースを設計していますが、設計に行き詰まっています。在庫システムには DVD があります (3 つのカテゴリに分けられます: TV、Music Vid、Movie)。これらの各カテゴリ内には、独自の情報のサブセットがあります。TV カテゴリ情報: 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)

それが正しいかどうかはわかりません。助けてくれてありがとう。

4

1 に答える 1

0

私が見ることができるように、それは映画のライブラリのための単純なデータベースです. 次のようなデザインを作成できます。

ここに画像の説明を入力

これで、仕様に従って、title_mstrテーブルにすべてのタイトルが含まれます。表にはtitle_categoryカテゴリ (MovieまたはTV) が含まれます。次に、カテゴリごとの情報はcategory_infotitle_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;

理解を深めるために、次のリンクを参照してください。

于 2013-10-29T06:27:10.977 に答える