事件采购SQL填充父表和子表

时间:2017-09-18 04:45:08

标签: sql-server database-design foreign-keys domain-driven-design event-sourcing

跟进问题 CQRS Read Model Design when Event Sourcing with a Parent-Child-GrandChild… relationship

我们利用SQL Server 2016的事件采购示例:家具公司 (1)我们有一个父子表。说一个FurnitureDescriptionTable,(父表 - 所有家具物品的描述)和FurnitureOrders(儿童 - 多个客户订单,指的是FurnitureDescription表)。它们之间的连接列是否应该是SQL中的Guid或Integer Identity?

(2)如果是Guid,谁生成Guid,API或SQL?有什么原因吗?

1 个答案:

答案 0 :(得分:0)

选择主/外键所需的类型是RDBMS世界中的一个已知问题。简单的谷歌搜索将有所帮助。但仍然:

Guids通常在应用程序端完成。当命令处理程序可以生成完整的域对象(包括标识)时,此选项很受欢迎(因为您指的是CQRS)。否则,您需要拥有一个唯一的标识生成器,这可能非常简单,但在某些数据库中仍然可行,例如使用Oracle序列。

通常会为数据库生成的ID选择数字。然后,只有在将行插入表时才会知道新的id。对于事件源方案,这不是一个选项,因为您只会在读取端插入,但在写入端创建对象。