考虑两个表User
和UserDetails
首先,我将详细输入User
表
然后我希望在UserDetails
表中输入关于第一个表的主键的详细信息,即UserID
自动增量。
考虑这种情况..
用户:(101,abc,xyz),(102,asd,war)
现在我想在第二个表中存储关于主键UserID= 102
我该如何做到这一点?
答案 0 :(得分:0)
重新开始设计。这是一个开始,它贯穿始终并且不会爆炸。对电子邮件也这样做。保持数据规范化并且不会导致不必要的查找。当您有很多约束时,这表明您关心数据的质量。如果它们不受约束,并不是没有约束。
我们都在网上看到我们应该如何在一个表格中保留main
个信息,在另一个表格中保留details
个信息。很好的广泛画笔描边。但是你的上升到那个水平。你的桌子太多了。请参阅底部的Note1
了解有关实体的信息。请参阅底部的Note2
有关效果的信息。如果您有任何广泛或具体的问题,请与我们联系。
create table user
( userId int auto_increment primary key,
fullName varchar(100) not null
-- other columns
);
create table phoneType
( phoneType int auto_increment primary key, -- here is the code
long_description varchar(100) not null
-- other columns
);
create table userPhone
( id int auto_increment primary key,
userId int not null,
phone varchar(20) not null,
phoneType int not null,
-- other columns
CONSTRAINT fk_up_2_user FOREIGN KEY (userId) REFERENCES user(userId),
CONSTRAINT fk_up_2_phoneType FOREIGN KEY (phoneType) REFERENCES phoneType(phoneType)
);
Note1:
我怀疑你所说的第二个表真的是第三个表,因为你试图引入真正属于实体的缺失信息。
在制作我们的想法之前,许多人已经来到我们的设计中。许多糟糕的选择都是由您自己做出的。良好的读数是数据标准化技术的第三范式(3NF)。
Note2:
性能。性能需要在实时用户和开发人员解决数据的过程中进行测量。许多开发人员花费大量时间为不强制数据完整性的模式执行数据补丁。因此,这会影响性能,因为这些时间会累积在用户体验(UX)的那些分秒中。
答案 1 :(得分:-2)
你可以试试这个: -
INSERT INTO userDetails
(SELECT UserID, Name FROM User WHERE USerID= 102), 'Mob_No', EMail;