如何在mySql中创建弱实体?

4

我想知道如何通过创建表在mySql中创建弱实体,我的代码如下:

CREATE TABLE users(
    user_Id int AUTO_INCREMENT,
    full_Name varchar(60),
    email varchar(30),
    password varchar(30),
    reg_Date timestamp
);

CREATE TABLE personal_Infos(

   ...
);

以下是表格,我想知道如何通过外键将它们连接起来,第二个表格是否需要创建另一个主键?(第二个表格包含第一个表格的一些更多信息)


2
  1. "弱实体"是什么意思?
  2. 为了给出有用的建议,您需要至少展示“personal_Infos”的一部分定义,并解释它与“users”的关系。
- user149341
1个回答

1

我应该在第二个表中创建另一个主键吗?

是的,您需要在第二个表personal_Infos中创建一个主键,并且该主键将成为您的users表中的外键。

如何使用外键连接彼此?

假设您的personal_Infos表中的主键是P_id,则可以将其添加为users表中的外键,如下所示:

CREATE TABLE users(
    user_Id int AUTO_INCREMENT,
    full_Name varchar(60),
    email varchar(30),
    password varchar(30),
    reg_Date timestamp,
    p_id int not null,
FOREIGN KEY (P_Id) REFERENCES personal_Infos(P_Id)
);

(user_Id, p_id) 这一列对代表了一个关系。目前的实现方式是一对多的关系,因为相同的 p_id 可以出现多次,允许将相同的 p_id 值与许多不同的 user_Id 值相关联。要将其转换为一对一的关系,可以在 p_id 列上添加唯一约束。请注意,表定义中的 FK 约束不连接或关联行,它只确保 p_id 值是 personal_Infos 表中值的子集。 - reaanb
无论是1:1还是1:many关系,都取决于personal_Infos表中包含的数据类型。如果personal_Infos表中任何一行的数据可以与users表中的多个user_Id相关联,则为1:many关系。如果personal_Infos表中任何一行的数据只能与users表中的任何一个user_Id相关联,则为1:1关系。 - Yousaf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接