用户名:
密 码:
忘记密码?
 
版主:黑木崖
    
 · 九阳全新免清洗型豆浆机 全美最低
 
刚试了一个入门级的数据库设计问题,答案不对。不知道是不是我没说清楚
送交者: 渔樵闲话 2025月02月04日09:54:54 于 [世界军事论坛] 发送悄悄话
回  答: 也别把AI吹那么神。AI以前是被当笑话看的。 渔樵闲话 于 2025-02-04 06:09:34

对ON DELETE CASCADE的理解完全错了。

image.png

为了满足以下需求:

  1. 当用户被删除时,自动删除相关地址;

  2. 当地址被删除时,保留用户。

我们可以设计一个关系数据库,其中:

  • 用户和地址之间的关系是一对多(一个用户可以有一个办公地址,但一个地址可以被多个用户引用)。

  • 使用外键约束和 ON DELETE CASCADE 来实现用户删除时自动删除地址。

  • 使用 ON DELETE SET NULL 来实现地址删除时保留用户,但取消用户对地址的引用。

以下是详细的设计:


1. 地址表 (Address)

这个表存储地址信息,包括街道地址和邮政编码。

列名数据类型约束条件
AddressIDINT主键,自增
StreetAddressVARCHAR非空
PostalCodeVARCHAR非空

SQL 创建语句:

sql
Copy
CREATE TABLE Address (     AddressID INT PRIMARY KEY AUTO_INCREMENT,     StreetAddress VARCHAR(255) NOT NULL,     PostalCode VARCHAR(20) NOT NULL);

2. 用户表 (User)

这个表存储用户信息,包括用户的名字和办公地址。办公地址是一个可选字段,因此可以为空。

列名数据类型约束条件
UserIDINT主键,自增
FirstNameVARCHAR非空
OfficeAddressIDINT外键,引用 Address.AddressID,可为空

SQL 创建语句:

sql
Copy
CREATE TABLE User (     UserID INT PRIMARY KEY AUTO_INCREMENT,     FirstName VARCHAR(100) NOT NULL,     OfficeAddressID INT,     FOREIGN KEY (OfficeAddressID) REFERENCES Address(AddressID) ON DELETE SET NULL);

3. 用户-地址关系表 (UserAddress)

为了实现“当用户被删除时,自动删除相关地址”,我们需要一个额外的表来管理用户和地址之间的关系。这个表将记录哪些地址是由用户创建的。

列名数据类型约束条件
UserIDINT外键,引用 User.UserID,级联删除
AddressIDINT外键,引用 Address.AddressID,级联删除

SQL 创建语句:

sql
Copy
CREATE TABLE UserAddress (     UserID INT,     AddressID INT,     PRIMARY KEY (UserID, AddressID),     FOREIGN KEY (UserID) REFERENCES User(UserID) ON DELETE CASCADE,     FOREIGN KEY (AddressID) REFERENCES Address(AddressID) ON DELETE CASCADE);

4. 关键设计点

  1. 用户删除时自动删除地址

    • 当用户被删除时,UserAddress 表中与该用户相关的记录会被自动删除(由于 ON DELETE CASCADE)。

    • 由于 AddressID 在 UserAddress 表中被级联删除,相关的地址记录也会被删除。(错了!)

  2. 地址删除时保留用户

    • 当地址被删除时,User 表中的 OfficeAddressID 会被设置为 NULL(由于 ON DELETE SET NULL),从而取消用户对地址的引用。

  3. 用户和地址的关系

    • UserAddress 表用于记录哪些地址是由用户创建的,确保只有用户创建的地址才会在用户删除时被级联删除。



0%(0)
0%(0)
笔 名 (必选项): 密 码 (必选项): 注册新用户
标 题 (必选项):
内 容 (选填项):

段落格式
字体
字号
实用资讯
北美最大最全的折扣机票网站
美国名厂保健品一级代理,花旗参,维他命,鱼油,卵磷脂,30天退货保证.买百免邮.


一周点击热帖 更多>>
1 气机交锋,我们大胜了 zt eastwest
2 航母造到12万吨,舰载机根本就不 道友
3 时来天地皆同力,运去英雄不自由 zebraman
4 美国“断粮”,尼泊尔急了,印度 eastwest
5 自古以来乌克兰饱受外国入侵,但 围棋
6 一夜爆火的Manus是下一个DeepSee eastwest
7 一个美国博主对中美机械的对比 z eastwest
8 EUV光刻机通过验收一般是假消息 eastwest
9 默茨急剧掉头,“这是典型的‘尼 eastwest
10 空中巡洋舰!歼-36果然不简单,主 eastwest
一周回复热帖
1 为啥说“西方伪史论”是邪教?( eastwest
2 《哪吒2》讓老美看傻眼!票房殺� eastwest
3 中国这么强大了,为什么港台人依 eastwest
4 台湾禁止和大陆「国防七子」大学 eastwest
5 要撕破脸了,床铺正计划签新的总 unix
6 社评:下一个“中国”还是中国, eastwest
7 太震撼!中国人用10,000多面镜子 eastwest
8 为啥说“西方伪史论”是邪教?( eastwest
9 咱们亚洲邻国们希望中国崛起吗? eastwest
10 沙特會談|烏克蘭願受提議立即停 omegago
历史上的今天:回复热帖
2024: 美国大萧条前兆
2024: 习思想救市救成股灾 股民信心崩塌
2023: 气球战略武器:只有中国打美国,美无法
2023: 外交部发言人就美方宣布推迟美国务卿布
2022: 強迫消費?冬奧一瓶水賣340元 媒體中心
2022: ​美国运动员盛赞北京奥运村高
2021: 东郭先生的尴尬 贫限想之八
2021: 如何制裁台湾买美国武器 妙招之三
2020: 中国驻美国纽约领事馆,华春莹讲话全文
2020: 李兰娟院士发布最新研究成果:阿比朵尔