具有非唯一条目的交汇表

时间:2011-07-28 19:10:18

标签: mysql database

我开始建立一个集邮网络应用程序。 Python / flask后端(我认为:))mySQL为db。我对数据库设计了解不多,所以如果我按照我想的方式做了一些非常愚蠢的错误,请记住这一点。我想把数据分成3个表。

  • 用户表(在注册到此表时应添加所有用户)
  • 邮票表(所有邮票应该留在这里,只有我修改)
  • 拥有的表(使用user_id和stamp_id作为外键的联结表)

问题:如果我将user_id和stamp_id作为主键,则只有一个此类型的唯一条目,例如user_1具有card_1。但是user_1可能有card_1的副本,所以我应该有2行 user_1 card_1 user_1 card_1 出现的另一个问题是我想要包含自有印章。例如,user_1可能具有处于完好状态的card_1和处于不良状态的card_1。据我所知,我只能输入一对唯一的user_1 card_1。我该怎么做才能得到理想的结果?如果有更好的方法,请告诉我。

有条件的问题。我正在使用mysql workbench来尝试绘制db,所以我对它生成的sql有疑问。 CONSTRAINT“fk_gibberish”,这是正常的还是......为什么会这样?

CREATE  TABLE IF NOT EXISTS `stampcollect`.`users` (
  `user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `user_username` VARCHAR(45) NULL ,
  `user_password` VARCHAR(45) NULL ,
  `user_email` VARCHAR(45) NULL ,
  PRIMARY KEY (`user_id`) )

CREATE  TABLE IF NOT EXISTS `stampcollect`.`stamps` (
  `stamp_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `stamp_name` VARCHAR(45) NULL ,
  PRIMARY KEY (`stamp_id`) )

CREATE  TABLE IF NOT EXISTS `stampcollect`.`owned` (
  `user_id` INT NOT NULL ,
  `stamp_id` INT NOT NULL ,
  `stamp_status` BIT NULL ,
  PRIMARY KEY (`user_id`, `stamp_id`) ,
  INDEX `fk_{F5DBEF0D-24E0-4AFF-A5CB-2A6A0D448C96}` (`stamp_id` ASC) ,
  CONSTRAINT `fk_{22B4468E-A5FB-4702-A8A9-576AA48A0543}`
    FOREIGN KEY (`user_id` )
    REFERENCES `stampcollect`.`users` (`user_id` ),
  CONSTRAINT `fk_{F5DBEF0D-24E0-4AFF-A5CB-2A6A0D448C96}`
    FOREIGN KEY (`stamp_id` )
    REFERENCES `stampcollect`.`stamps` (`stamp_id` ));

2 个答案:

答案 0 :(得分:1)

如果用户可以在多个状态下拥有相同的标记,那么状态应该进入“拥有”表并成为密钥的一部分。如果他可以拥有相同印章的多个副本,那么在该表中有一个“数量”列(不是密钥的一部分)是有意义的。

答案 1 :(得分:0)

id表格中添加一个带有自动增量的owned字段,并将其作为主键。

关于另一个问题:它只是Workbench为您的外键生成唯一ID。您可以重命名它们,只保持它们的独特性。