我开始建立一个集邮网络应用程序。 Python / flask后端(我认为:))mySQL为db。我对数据库设计了解不多,所以如果我按照我想的方式做了一些非常愚蠢的错误,请记住这一点。我想把数据分成3个表。
问题:如果我将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` ));
答案 0 :(得分:1)
如果用户可以在多个状态下拥有相同的标记,那么状态应该进入“拥有”表并成为密钥的一部分。如果他可以拥有相同印章的多个副本,那么在该表中有一个“数量”列(不是密钥的一部分)是有意义的。
答案 1 :(得分:0)
在id
表格中添加一个带有自动增量的owned
字段,并将其作为主键。
关于另一个问题:它只是Workbench为您的外键生成唯一ID。您可以重命名它们,只保持它们的独特性。