我正在为我的应用用户构建数据库架构,我正在考虑根据用户类型设置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)我完全离开了吗?
答案 0 :(得分:0)
具有不同类型的相似对象的值范围也不错。如果您愿意这样做,可以使用支持值范围的序列。这样,你可以有一个买家序列,从0到1000,卖家从1001到2000,依此类推。这也可以帮助你跟踪不同种类的增长指数!