gpt4 book ai didi

mysql - 这是一对一的例子吗?

转载 作者:行者123 更新时间:2023-11-30 21:36:37 24 4
gpt4 key购买 nike

我的老师告诉我下面这段代码是一对一关系的一个例子:

CREATE TABLE PERSON (ID INT AUTO_INCREMENT, NAME VARCHAR(20) UNIQUE NOT NULL,
CONSTRAINT PK_PERSON PRIMARY KEY (ID));

CREATE TABLE PHRASE (ID INT AUTO_INCREMENT, PHRASE VARCHAR(50) UNIQUE NOT NULL, ID_PERSON INT,
CONSTRAINT PK_PHRASE PRIMARY KEY (ID),
CONSTRAINT FK_PHRASE FOREIGN KEY (ID_PERSON) REFERENCES PERSON(ID));

但是这样我可以将两个短语设置为同一个人,让我认为正确的是下面的答案:

CREATE TABLE PERSON (ID INT AUTO_INCREMENT, NAME VARCHAR(20) UNIQUE NOT NULL,
CONSTRAINT PK_PERSON PRIMARY KEY (ID));

CREATE TABLE PHRASE (ID INT AUTO_INCREMENT, PHRASE VARCHAR(50) NOT NULL UNIQUE, ID_PERSON INT,
CONSTRAINT PK_PHRASE PRIMARY KEY (ID),
CONSTRAINT FK_PHRASE FOREIGN KEY (ID_PERSON) REFERENCES PERSON(ID),
CONSTRAINT FK_PHRASE2 UNIQUE (ID_PERSON));

第二个示例是一对一关系还是第一个?

最佳答案

您的评估是正确的。您强制 ID_PERSON 唯一的第二个选项是 1:1 关系。干得好。

您的评估也是正确的,第一种方法允许同一个人使用多个短语,这变成了 1:many 关系。

替代理论

create table person (id int primary key, name varchar(20) unique);

create table phrase (id int primary key, phrase varchar(20) unique);

create table person_phrase (person_id int primary key, phrase_id int);

上述也会导致人和短语之间的 1:1 关系,但会有单独的人表和单独的短语表。只要一个人有一个短语,您就可以将人和短语放在一起。

此设计允许您从 1:1 开始,然后扩展到多对多关系,其中一个人可以有很多短语,一个短语可以被很多人使用。您可以通过将 person_id + phrase_id 设为主要来扩展到 many:many。

关于mysql - 这是一对一的例子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53643929/

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