首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库中有多个ID

数据库中有多个ID
EN

Stack Overflow用户
提问于 2013-11-04 11:43:52
回答 3查看 38关注 0票数 0

我有一个数据库,其中包含一些表,如person、staff、member和supporter。

person表包含有关每个员工、成员和支持者的信息。它包含的信息包括姓名、地址、电子邮件和电话。我还创建了一个id,它是主键。

我的问题是,我还有一个员工、成员和支持者的主键ID。

例如,在person表中是id为1的John。他是一个支持者,因此在supporter表中是pID(代表person ID),用他的所有信息和ID(代表supporter )引用John。

pID引用person表,每个person的ID都从1开始递增1。supporter是每个支持者的ID,也是从1开始递增1。

在supporter表中是否可以有pID =1和supporter ID = 1?另一个人的pID = 26,支持者ID = 5。

或者支持者ID必须不同于pID,并类似于"sup"?因此,pID =1,supporter = sup1或pID = 26,supporter = sup5

EN

回答 3

Stack Overflow用户

发布于 2013-11-04 11:50:16

主键仅在表的上下文中是唯一的。如果一个表中的列引用了另一个表中的主键,那么您应该设置一个外键约束,这样在同步时引用就不会意外中断。

票数 3
EN

Stack Overflow用户

发布于 2013-11-04 11:46:10

是的,person ID和supporter可以是相同的编号,只要您的代码跟踪哪种ID类型就是哪种。

票数 0
EN

Stack Overflow用户

发布于 2013-11-04 13:40:16

外键,这就是你要找的。person表中的主键可以被所有其他表引用。

代码语言:javascript
运行
复制
    CREATE TABLE person(personId INT PRIMARY KEY IDENTITY(1,1), FirstName VARCHAR(50), LastName VARCHAR(50))
    CREATE TABLE staff(id INT PRIMARY KEY IDENTITY(1,1), personId INT  REFERENCES person(personId))
    CREATE TABLE member(id INT PRIMARY KEY IDENTITY(1,1), personId INT  REFERENCES person(personId))
    CREATE TABLE supporter(id INT PRIMARY KEY IDENTITY(1,1), personId INT  REFERENCES person(personId))

    INSERT INTO person VALUES ('Adrian', 'Sullivan'), ('Frank', 'Sullivan'), ('Another', 'Sullivan'),('John', 'Sullivan') 
    SELECT * FROM person

    INSERT INTO staff VALUES (1),(3)
    INSERT INTO member VALUES (2),(3),(4)
    INSERT INTO supporter VALUES (1),(4)

    SELECT 
    person.personId
    , person.FirstName
    , person.LastName
    , staff.id [IsStaff]
    , member.id [IsMember]
    , supporter.id [IsSupporter]
    FROM person
    LEFT OUTER JOIN staff ON person.personid = staff.personId 
    LEFT OUTER JOIN member ON person.personid = member.personId
    LEFT OUTER JOIN supporter ON person.personid = supporter.personId

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19761313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档