在数据库中存储多个枚举的最佳方法

Jus*_*ins 5 c# sql enums

我有一个RoleEnum带有四个值User(1),Supervisor(2),Admin(3)和ITOperator(4)的Enum .我有一个公告表,显然存储公告数据(标题,文本,开始和结束日期).但是,我希望能够添加一个名为Roles的新列,用于定义哪些角色可以查看公告的用户.

通常,当在SQL中存储枚举时,我只使用smallint数据类型,但是在这种情况下这不会起作用,因为可以通过多个角色看到通知.

我正在考虑做的是将Roles列定义为varchar(x),并在存储它们时用逗号分隔它们.但是,我不认为/知道这是否是最好的选择.我不想创建一个新的表来保持一对多的关系.

有任何想法吗?

JDB*_*JDB 5

如果你关心可维护性,我会尽可能地坚持第三范式.

角色

RoleID  RoleName
1       User
2       Supervisor
3       Admin
4       ITOperator
Run Code Online (Sandbox Code Playgroud)

通告

AnnouncementID  Title   ...
1               Foo     ...
2               Bar     ...
Run Code Online (Sandbox Code Playgroud)

AnnouncementsVisibility

AnnouncementID  RoleID
1               1
1               2
2               2
2               3
2               4
Run Code Online (Sandbox Code Playgroud)