2011-03-15 4 views
0

안녕 확인 나는이 두 테이블 로그인라는 하나의 로그인 테이블에 사용자 테이블에서 일대일 관계가 하나라는 사용자 : 내가 주위에 내 머리를 얻을 어차피MySQL 데이터베이스 관계형 문제

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

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

가 하지만 내 페이지에 코딩 할 때 사용자 ID가 실제 사용자와 관련된 로그인 테이블에 설정되는 방법에 관해서는 잘 모릅니다.

클라이언트를 사용자 작성 페이지로 가져 와서 사용자 세부 정보를 채운 다음 다른 테이블로 이동하는 사용자 이름 및 암호 필드로 전달합니다. 로그인 테이블에 UserID가 어떻게 설정되어 있습니까? 그게 아니라고?

는 Incase의 하나가 참조 MySQL의 EER 다이어그램 내 테이블 데이터를 리버스 엔지니어링 싶어 아래 코드 :

SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 
SET @[email protected]@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 [email protected]_SQL_MODE; 

SET [email protected]_FOREIGN_KEY_CHECKS; 

SET [email protected]_UNIQUE_CHECKS; 

답변

1

UserLogin 경우 하나있다 : 1 관계가, 당신은 로그인 테이블은 loginid을 삭제해야하며, 대신 UserID를 기본 키로 만듭니다.
또는 모든 사용자가 로그인 정보를 가지고있는 경우 대신 열을 사용자 테이블로 이동하는 것이 좋습니다. (이렇게함으로써 1-1 관계를 강화하는 것과 관련된 모든 문제를 제거합니다).

아니요은 사용자가 전체 등록 양식을 완료 할 때까지 데이터베이스에 행을 삽입해야합니다. 세션에서 양식 데이터를 유지 한 다음 끝에 모든 테이블의 모든 삽입을 한 번에 수행 한 다음 커밋하십시오.

로그인 테이블에 넣어 마지막으로 삽입 된 ID (아이디)를 알아내는 C#에서 함수가 아마있다, 그렇지 않으면 insert ID

+0

그래 내가 가지고 있었 을까 생각에 대한 MySQL의 문서를 보라 확인해 주셔서 감사합니다. –

관련 문제