【问题标题】:Create table with description properties access to song list [closed]创建具有描述属性访问歌曲列表的表[关闭]
【发布时间】:2015-02-09 21:38:02
【问题描述】:

有 3 个表 User 和 SongList(一对多),1 个用户可以拥有 1 个或多个 songList。子列表(一对多)到 SongList。 SongList 可以是公开的(对所有人可见)、私有的(只有所有者可以查看)和友好的(所有者 + 一些其他用户)。也许对于 SubList 相同(私有,公共 ...)应该是,但现在并不重要。

如何更好地做到这一点?

CREATE TABLE IF NOT EXISTS `mydb`.`user` (
  `username` VARCHAR(45) NULL,
  `password` VARCHAR(45) NULL,
  `id` INT NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB


CREATE TABLE IF NOT EXISTS `mydb`.`song_list` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(100) NOT NULL,
  `cretaed` DATE NOT NULL,
  `updated` DATE NULL,
  `user_id` INT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_group_user1_idx` (`user_id` ASC),
  CONSTRAINT `fk_group_user1`
    FOREIGN KEY (`user_id`)
    REFERENCES `mydb`.`user` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `mydb`.`subgroup` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(100) NULL,
  `created` DATE NULL,
  `updated` DATE NULL,
  `song_list_id` INT NOT NULL,
  PRIMARY KEY (`id`, `song_list_id`),
  INDEX `fk_subgroup_song_list1_idx` (`song_list_id` ASC),
  CONSTRAINT `fk_subgroup_song_list1`
    FOREIGN KEY (`song_list_id`)
    REFERENCES `mydb`.`song_list` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

谢谢。

【问题讨论】:

  • 你有什么问题?

标签: mysql sql diagram


【解决方案1】:

直接建模即可。添加另一个表,例如
AccessType (AccessTypeID int, AccessTypeName varchar(200))
在此处插入记录,例如1-public、2-private 等。然后在您的表中
SongList 和 SubSongList 添加 AccessTypeID 列和
使它们指向 AccessType 表的外键 (FK)。
像 AccessType 这样的表通常称为查找表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2021-01-29
    • 2016-08-04
    相关资源
    最近更新 更多