gpt4 book ai didi

mysql - 具有非唯一条目的连接表

转载 作者:行者123 更新时间:2023-11-29 14:46:33 24 4
gpt4 key购买 nike

我开始构建一个集邮网络应用程序。 Python/flask 后端(我认为:)) mySQL 作为数据库。我对数据库设计不太了解,所以如果我按照我的想法犯了一些非常愚蠢的错误,请记住这一点。我正在考虑将数据分成 3 个表。

  • 用户表(所有用户应在注册时添加到此表中)
  • 邮票表(所有邮票都应驻留在此处,并且只能由我修改)
  • 拥有的表(以 user_id 和 stamp_id 作为外键的联结表)

问题:如果我将 user_id 和 stamp_id 作为主键,则只会有一个此类型的唯一条目,例如 user_1 有 card_1。但 user_1 可能有 card_1 的重复项,所以我应该有 2 行user_1 卡_1user_1 卡_1出现的另一个问题是我想包括拥有的邮票的状态。例如,user_1 可能有一张状况良好的卡_1 和一张状况不佳的卡_1。据我了解,我只能输入一对唯一的 user_1 card_1 。我该怎么做才能得到想要的结果?另外,如果有更好的方法,请告诉我。

附加问题。我正在使用 mysql 工作台尝试绘制数据库,所以我对它生成的 sql 有疑问。约束“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` ));

最佳答案

如果用户可以在多个州拥有相同的邮票,那么该州应该进入“拥有”表并成为 key 的一部分。如果他可以拥有同一张邮票的多个副本,那么在该表中拥有一个“数量”列(不是 key 的一部分)是有意义的。

关于mysql - 具有非唯一条目的连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6864351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com