2011-03-15 9 views
0

こんにちは[OK]を私は2つのテーブルのログインと呼ばれる1つずつというユーザーを持つログインテーブルにユーザテーブルから1対1の関係があります:mysqlデータベースのリレーショナル問題が

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

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

が、私はそれのまわりで私の頭を取得カント実際のユーザーに関連するログインテーブルでUserIDがどのように設定されているのかについては、私のページでコーディングするときは分かりません。

クライアントを作成してユーザーの詳細を入力すると、彼はユーザーの詳細を入力して、別のテーブルに移動するユーザー名とパスワードのフィールドに転送します。ユーザーIDはどのようにログインテーブルに設定されていますか? Atmはそうではありませんか? UserLoginが1持っている場合

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

:1の関係を、あなたはログインテーブルからログインIDをドロップする必要があり、包みなさいいずれかが以下のコードを参照してくださいMySQLのEER図に私のテーブルのデータをリバースエンジニアリングしたい

代わりにUserIDを主キーにします。
また、すべてのユーザーにログイン情報がある場合は、列をユーザー表に移動することを検討することもできます。 (そうすることで、1-1の関係を強制することに関連する問題のクラス全体も削除されます)。

ユーザーが登録フォーム全体を完了するまで、データベース内の行を挿入する必要があります。セッションでフォームデータを保持し、最後にすべてのテーブルのすべての挿入を一度に実行してからコミットします。

ログインテーブルに置くために最後に挿入ID(ユーザーID)を見つけるためにC#での機能は、おそらくあり、それ以外の場合はinsert ID

+0

うん、私は私が持っていなければならなかっただろうと思ったのMySQLのドキュメントを見てそれを確認していただきありがとうございます –