我们目前有一个用户登录的网站。
我们有一个userId的用户表。
我们现在希望用户拥有重复的个人资料,这与他们的主要个人资料完全分开。这需要是一个秘密的配置文件。
现在我们可以在数据库中添加两条记录,但是id会是顺序的(直到我们达到高命中注册率),这样用户就可以锻炼userId与一个更高的ID相关。
我意识到这不是一个理想的解决方案,但它是对一个大型软件项目的后期更改,因此我们尽可能务实,同时尽可能减少代码更改。
选项:
问题是,是否有密钥运行,1,1000000000,2,1000000001,3,1000000002导致大量索引问题?我们是否必须一直强制进行索引重建?
意味着检查用户ID从前端传递到站点的所有位置。
由于我们没有这么做,(我们显然主要是安全地抓取登录用户的userId,它可能不会那么糟糕。
无论如何,只是想知道是否有人对此有任何想法?
///////修改
要将其放入更多上下文中,想象一下在stackoverflow或facebook上,您有两个可以控制的配置文件,它们之间没有链接。就像Facebook上的多个用户都可以充当页面帐户的方式一样,但是没有从该帐户返回到真实用户个人资料的链接。
基本上为了不破坏引用完整性或重写太多代码,我真的想将ID(int)传递回这些帐户的前端。然后整个系统就像它已经完成的那样继续滴答作响。
Guid可能很酷!但它会产生性能开销(不是我真正关心的那样;)但它也意味着要编写大量代码来处理传递到前端的Guids(而不是我们依赖前端变量是正确的)但这就是为什么我建议上面的高int解决方案。由于我们仍然隐藏在后台的ASP.NET成员资格,我几乎认为这可能是好的但是A)我们计划删除那一天(或迁移到简单的成员资格)b)我们在用户表中使用顺序Guid生成来提高性能(对不起再次谈论优化,在需要之前)
答案 0 :(得分:1)
Guid,网络服务提供的randon数字。很多解决方案。我宁愿选择GUID。
这意味着:这是一个商业密钥,我仍然会使用自动增量样式技术密钥来实现参照完整性。