sto*_*tom 8 architecture sql-server database-design database-schema
我们有一个网站,其子域名如下:
每个域和子域都有不同的数据库,如下所示:
你有什么尝试?
目前,对于单点登录,我们已计划在主站点中重定向用户以进行注册.
子域中的订单处理从主DB获取UserID并存储在相应的子域的Orders表中.
出于报告目的,我们将UserID不存储FK constraint在Orders表中,因为我们有单独的数据库.
我在这里可以看到堆栈交换站点有单独的数据库,但它是否也有单独的用户表?
StackExchange Network配置文件是否存储在单独的数据库中?
我可以从这里看到每个站点的用户表都有StackExchange网络配置文件的AccountId.
一个例子:
我无法Accounts在数据愚蠢的任何地方看到表格,所以AccountId存储了吗?如何使用多个站点完成SSO AccountId?
我的问题:我们是否需要主数据库中的单个用户表,或者我们必须为子域的数据库创建单独的用户表,Link Main DB UserID而不是FK约束?哪个是购物网站的最佳设计?
任何帮助都会很棒.
小智 5
您提到的 UserID 仅在单个数据库中的特定用户表中相同。它实际上不是您域中任何用户的标识符。要识别多个数据库中的用户,您需要为每个用户提供域级 ID。一种简单的方法是向全局唯一 ID(GUID,请参阅https://msdn.microsoft.com/en-us/library/system)的用户类(表)添加一个名为 UID 或类似名称的属性(列).guid(v=vs.110).aspx ) 并将其用作域级 ID 来识别用户而不是 UserId。通过这种方式,您可以自由地将用户信息存储在域中的多个数据库中。所以:
小智 2
1]您需要在所有三个数据库中拥有单独的用户表,因为没有外键的引用完整性。这里,如果任何数据库出现故障,那么其他域将启动并运行。权衡是,数据库管理需要更多维护,但性能不会妨碍。
或者,您可以生成以下数据库计划。
1]为所有三个域(一个主域和两个子域)保留一个数据库
2]创建一个用户表,其中有两个状态标志:food_order、fashion_order
3]分别为食品和时尚创建订单表
4] 用户订购 i) 食品或 ii) 时尚或 iii) 食品/时尚两者都有三种可能性。
5] 根据食品或时尚或食品/时尚订单保留更新状态标志。
这里的权衡是,如果您的数据库出现故障,那么您的所有三个网站都会出现故障。因此,请保持非常好的数据库灾难恢复模型。
| 归档时间: |
|
| 查看次数: |
1413 次 |
| 最近记录: |