区分关系 table 名称和描述性实体 table 名称

Distinguishing between relational table names and descriptive entity table names

我有两个 table:

我将如何命名一个将用户映射到他们的状态的 table?

您可以随意命名 table。

一个用户一次只能有一个状态吗? 您是否需要保留用户状态的历史记录? 状态table中唯一的属性是状态值吗?如果不是,这个 table 中还有哪些其他属性?

这并没有真正回答你的问题,但无论如何我必须 post 这个。

你问的是many-to-many(M-M)的情况,但是你承认你的数据确实是one-to-many(1-M),也就是说一个用户可以有一个而且只有一个状态。是的,您可以使用 M-M 对其进行建模,是的,您可以使用它来跟踪历史记录(用户状态如何随时间变化),但是在较长的 运行 中,这将使您承受不必要的过于复杂的结构充其量是尴尬的工作。 (去过那里,做到了。相信我。)我强烈建议使用 tables User 和 UserStatus,将 UserStatusId 列作为 table User 中的列,并添加 table UserStatusHistory 当(不是如果!)您需要跟踪它如何随时间变化。

好吧,话虽如此,如果一个用户可以一次分配多个用户状态,我会做

用户

UserStatus(无下划线,保存以备不时之需)

User_UserStatus(比如现在)

(我不会UserStatus_User,因为大概用户是模型中更“重要”的实体。)