这就是我的表格:
tableMembers | memberID as primary key
tableAddress | addressID as primary key references memberID
tableSubscription | subsID as primary key references memberID
此数据库适用于订阅站点。基本上,如果在tableMembers中插入一行,则会向每个其他表插入相应的行。
我为最后两个表设置了外键,因此我可以访问与tableMembers相关的外键。基本上,如果我从tableAddress访问一行,我会这样做:
SELECT * FROM tableAddress WHERE addressID = (SELECT memberID FROM tableMembers WHERE uname = 'John');
我的设置问题是,当ID的同步搞砸了,外键将不再起作用。比方说,当我在tableMembers中插入一行然后tableSubscription由于一些奇怪的原因而几秒钟内功能失调?或者在用户注册的情况下(最新的memberID变为= 2 ),请说他/她没有订阅哪个会使与memberID不同步的subsID(仍然= 1 ) 。稍后,新用户注册(最新成员ID变为= 3 )并订阅( subsID变为= 2 )。这使得我的查询更加令人满意。我该如何防止这种情况?或者如果您认为我不理解外键的概念,请赐教。
答案 0 :(得分:2)
确保只有一个表具有自动增量ID 。其他人应该从应用程序代码中的插入查询中获取其id,以确保它们是正确的成员。
在伪代码中: