c# - mysql数据库关系问题

标签 c# asp.net mysql sql

嗨,好的,我有两个表,一个称为“登录”,一个称为“用户”,从用户表到登录表存在一对一的关系:

Login:
=-=-=-=-
LoginID (Primary, Not Null, Auto Inc)
UserID (Primary)
Username (not null)
Password (not null)

User:
=-=-=-=-
UserID (Primary)
Email
Name etc

我无法理解它,但我不知道何时在我的页面上进行编码,如何在与实际用户相关的登录表中设置 UserID?

如果我将客户端带到创建用户页面,他填写了用户详细信息,然后我将他转发到用户名和密码字段,该字段将转到另一个表,登录表中的 UserID 是如何设置的?自动提款机不是吗?

如果有人想要对 mysql eer 图中的表数据进行逆向工程,请参阅下面的代码:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `gymwebsite` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;

USE `gymwebsite` ;
-- -----------------------------------------------------

-- Table `gymwebsite`.`User`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite`.`User` (
  `UserID` INT NOT NULL AUTO_INCREMENT ,
  `Email` VARCHAR(245) NULL ,
  `FirstName` VARCHAR(45) NULL ,    
  `SecondName` VARCHAR(45) NULL ,    
  `DOB` VARCHAR(15) NULL ,    
  `Location` VARCHAR(45) NULL ,    
  `Aboutme` VARCHAR(245) NULL ,    
  PRIMARY KEY (`UserID`) )   
ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `gymwebsite`.`Pictures`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite`.`Pictures` (
  `PictureID` INT NOT NULL AUTO_INCREMENT ,
  `UserID` INT NOT NULL ,
  PRIMARY KEY (`PictureID`, `UserID`) ,
  INDEX `fk_Pictures_Userinfo1` (`UserID` ASC) ,
  CONSTRAINT `fk_Pictures_Userinfo1`
    FOREIGN KEY (`UserID` )
    REFERENCES `gymwebsite`.`User` (`UserID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------

-- Table `gymwebsite`.`WallPostings`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite`.`WallPostings` (
  `UserwallID` INT NOT NULL AUTO_INCREMENT ,
  `UserID` INT NOT NULL ,
  PRIMARY KEY (`UserwallID`, `UserID`) ,
  INDEX `fk_WallPostings_Userinfo1` (`UserID` ASC) ,
  CONSTRAINT `fk_WallPostings_Userinfo1`
    FOREIGN KEY (`UserID` )
    REFERENCES `gymwebsite`.`User` (`UserID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------

-- Table `gymwebsite`.`Login`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite`.`Login` (
  `LoginID` INT NOT NULL AUTO_INCREMENT ,
  `UserID` INT NOT NULL ,
  `username` VARCHAR(245) NOT NULL ,
  `password` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`LoginID`, `UserID`) ,
  INDEX `fk_Login_Userinfo` (`UserID` ASC) ,
  CONSTRAINT `fk_Login_Userinfo`
    FOREIGN KEY (`UserID` )
    REFERENCES `gymwebsite`.`User` (`UserID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------

-- Table `gymwebsite`.`DietPlan`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite`.`DietPlan` (
  `DietPlanID` INT NOT NULL AUTO_INCREMENT ,
  `UserID` INT NOT NULL ,
  PRIMARY KEY (`DietPlanID`, `UserID`) ,
  INDEX `fk_DietPlan_Userinfo1` (`UserID` ASC) ,
  CONSTRAINT `fk_DietPlan_Userinfo1`
    FOREIGN KEY (`UserID` )
    REFERENCES `gymwebsite`.`User` (`UserID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------

-- Table `gymwebsite`.`WorkoutPlan`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite`.`WorkoutPlan` (

  `WorkOutID` INT NOT NULL AUTO_INCREMENT ,

  `UserID` INT NOT NULL ,

  PRIMARY KEY (`WorkOutID`, `UserID`) ,

  INDEX `fk_WorkoutPlan_Userinfo1` (`UserID` ASC) ,

  CONSTRAINT `fk_WorkoutPlan_Userinfo1`

    FOREIGN KEY (`UserID` )

    REFERENCES `gymwebsite`.`User` (`UserID` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION)

ENGINE = InnoDB;





-- -----------------------------------------------------

-- Table `gymwebsite`.`Friends`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `gymwebsite`.`Friends` (

  `idFriends` INT NOT NULL AUTO_INCREMENT ,

  `UserID` INT NOT NULL ,

  PRIMARY KEY (`idFriends`, `UserID`) ,

  INDEX `fk_Friends_Userinfo1` (`UserID` ASC) ,

  CONSTRAINT `fk_Friends_Userinfo1`

    FOREIGN KEY (`UserID` )

    REFERENCES `gymwebsite`.`User` (`UserID` )

    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;

最佳答案

如果UserLogin具有1:1关系,您应该从Login表中删除LoginID,并将UserID作为主键。
或者,如果所有用户都有登录信息,您可以考虑将这些列移至用户表中。 (通过这样做,您还可以消除与强制执行 1-1 关系相关的一整类问题)。

在用户完成整个注册表之前,您不应该在数据库中插入任何行。将表单数据保留在 session 中,然后在最后一次在所有表中执行所有插入,然后提交。

c# 中可能有一个函数可以找出最后插入的 id (UserID) 以放入登录表中,否则请查看 MySQL 文档 insert ID

关于c# - mysql数据库关系问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307180/

相关文章:

c# - 强制更改 RadioButtonGroup 中的样式?

mysql - 插入、内连接和限制字符为一

MySQL 更新越来越慢

mysql - SQL 语法错误 'GENERATED ALWAYS AS IDENTITY'

c# - 使 C# 程序能够在任何操作系统上编译

编译时的 C# 连接字符串

c# - 使用 C# 读取基于 HTML 的 XLS 时出现问题

c# - 如何以编程方式固定默认动态磁贴?

c# - 在 MVC 中为数据模型创建接口(interface)

c# - 如何使用 serilog 通过身份验证在 kibana 中将日志设置为 ELK