0

我的问题是

在 MySQL 中建立 1-1 关系是正确的吗?

子表中的数据必须是唯一的互联网上存在关于这样做的令人困惑的信息。在我看来,第一种形式是正确的,因为它更容易。

DROP TABLE IF EXISTS test.users;
CREATE TABLE test.users(

    idUser CHAR( 5 ) BINARY NOT NULL,
    name VARCHAR( 40 ) NOT NULL,
    lastName VARCHAR( 25 ) NOT NULL,
    maternalSurname VARCHAR( 25 ) NOT NULL,

    PRIMARY KEY( idUser )

)
ENGINE = InnoDB;

--

DROP TABLE IF EXISTS test.activities;
CREATE TABLE test.activities(

    user CHAR( 5 ) BINARY NOT NULL,
    sessionActive BOOLEAN NOT NULL DEFAULT FALSE,
    live DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    attempt TINYINT UNSIGNED NOT NULL DEFAULT 0,

    PRIMARY KEY( user ),

    FOREIGN KEY( user ) REFERENCES users( idUser )
    ON DELETE CASCADE ON UPDATE CASCADE

)
ENGINE = InnoDB;

我发现的另一种方法

DROP TABLE IF EXISTS test.users;
CREATE TABLE test.users(

    idUser CHAR( 5 ) BINARY NOT NULL,
    name VARCHAR( 40 ) NOT NULL,
    lastName VARCHAR( 25 ) NOT NULL,
    maternalSurname VARCHAR( 25 ) NOT NULL,

    PRIMARY KEY( idUser )

)
ENGINE = InnoDB;

--

DROP TABLE IF EXISTS test.activities;
CREATE TABLE test.activities(

    idActivity INT UNSIGNED NOT NULL,
    sessionActive BOOLEAN NOT NULL DEFAULT FALSE,
    live DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    attempt TINYINT UNSIGNED NOT NULL DEFAULT 0,
    user CHAR( 5 ) BINARY NOT NULL,

    UNIQUE( user ),

    PRIMARY KEY( idActivity ),

    INDEX( user ),
    FOREIGN KEY( user ) REFERENCES users( idUser )
    ON DELETE CASCADE ON UPDATE CASCADE

)
ENGINE = InnoDB;

什么是正确的

来自墨西哥的问候!!!!

4

0 回答 0