gpt4 book ai didi

mysql - 跨一对多模式的主键

转载 作者:行者123 更新时间:2023-11-29 12:17:09 25 4
gpt4 key购买 nike

我有一个关于架构设计的简单问题。我的应用程序有一个名字和姓氏表 - 没有其他识别信息。当然,两个不同的人可能具有相同的名字和姓氏。每个人都有一个或多个注册号,这些注册号保存在单独的表中。注册号是唯一的。令我困扰的是,Names 表没有唯一键(除了自动生成的 ID),并且记录的唯一性实际上是名字、姓氏和注册号的组合。首先我不确定如何创建一个像我描述的那样的 key ,其次我不确定它是否有必要?这种设计是否比具有唯一性(例如注册号)的设计更容易腐败?此影响针对更新 - 我需要搜索名字、姓氏和注册号的交叉表组合。

最佳答案

两种方法都可以做到。要么创建一个唯一的 key ,我在下面解释了这一点。另一种选择是使用 ID 作为存储注册号的表中的外键。更新记录时,您需要在 where 子句中提供注册号和 ID(此表中的外键)才能更新任何记录。

我希望您创建一个唯一 key 。

您可以简单地根据三列创建一个唯一键。

CREATE TABLE Names(
ID Int(10) NOT NULL AUTO_INCREMENT,
FirstName Varchar(50) NOT NULL,
LastName Varchar (50) NOT NULL,
CONSTRAINT Names_UC UNIQUE (ID, FirstName, LastName)
);

或者更改命令,如果您已经创建了一个表:

ALTER TABLE Names ADD CONSTRAINT Names_UC UNIQUE (ID, FirstName, LastName);

关于mysql - 跨一对多模式的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29626206/

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