将范围分配给用户ID是一种好习惯吗?

时间:2017-05-19 15:16:03

标签: database foreign-keys schema primary-key userid

我正在为我的应用用户构建数据库架构,我正在考虑根据用户类型设置userid值。所以, 买家:10001至19999 卖家:20001至29999 托运人:30001至39999

接下来,我为userid分配唯一的电子邮件地址: Login_table

电子邮件.......密码.......用户id

aaaaa@yy.com .......密码....... 10005 --->此电子邮件属于用户10005(买方)

bbbbb@yy.com .......密码....... 20008 --->此邮件属于user 20008(卖家)

ccccc@yy.com .......密码....... 30187 --->此电子邮件属于用户30187(托运人)

然后我为买家,卖家和托运人提供了3张桌子,因为每张桌子可能有不同的属性:

buyer_table

buyerid .......名字.......母亲

10005 .......约翰.......玛丽

10006 .......克里斯.......南希

seller_table

卖家.......名字.......宠物

20008 .......亚当.......狗

20018 .......托尼.......猫

shipper_table

shipperid .......名字.......汽车

30187 .......乔治....... GMC

30188 .......拉里.......本田

这里的优点是我对所有用户类型都有一个login_table。我不希望每种类型都有3个登录表。基于userid值,我知道它是什么类型的用户。除了能够为每个用户类型分配不同的属性之外,为每个用户保留三个表(buyer_table,seller_table和shipper_table)有助于使架构更易理解。 听起来不错?也许

但是,我有一个问题,即login_table指的是“userid”,而三个用户表每个用户的id名称都不同,所以在buyer_table中我有buyerid作为主键,在seller_table中它是sellid作为主键,最后在shipper_table中,shipperid是主键 如何将这三个主键链接到login_table? login_table将userid作为这三个表之一的外键,但它被称为“userid”,而不是buyerid,或sellid,或者shipperid!

1)根据范围对用户ID值进行分类是个好主意吗?

2)如果是这样,我如何解决如上所述的PK-FK问题?

3)我完全离开了吗?

1 个答案:

答案 0 :(得分:0)

具有不同类型的相似对象的值范围也不错。如果您愿意这样做,可以使用支持值范围的序列。这样,你可以有一个买家序列,从0到1000,卖家从1001到2000,依此类推。这也可以帮助你跟踪不同种类的增长指数!