MySQL DB 的设计以避免出现具有互斥字段的表

Nic*_*tti 5 mysql database-design

我正在创建一个新的数据库,但遇到了这个问题:我有两种类型的用户可以下订单:注册用户(即他们有登录名)和访客用户(即没有登录名)。注册用户和来宾用户的数据不同,这就是为什么我考虑使用两个不同的表,但订单(共享相同的工作流程)都是相同的,所以我考虑只使用一张表。

我已经读过这里这里(即使我不完全理解这个例子),我可以强制执行MySQL规则以在表中具有互斥的列(在我的例子中它们是“idGuest”和“idUser”)但我不喜欢这种方法。

有更好的方法吗?

Mik*_*ll' 1

听起来主要是一个关系超类型/子类型问题。我已经回答了类似的问题,并提供了示例代码,您应该能够轻松适应。(请务必阅读评论。)

对您来说稍微复杂的因素是一种子类型(来宾用户)有一天可能会变成另一种子类型(注册用户)。您如何处理这将取决于应用程序。(这意味着你会知道,但可能没有其他人知道。)