我有一个RoleEnum带有四个值User(1),Supervisor(2),Admin(3)和ITOperator(4)的Enum .我有一个公告表,显然存储公告数据(标题,文本,开始和结束日期).但是,我希望能够添加一个名为Roles的新列,用于定义哪些角色可以查看公告的用户.
通常,当在SQL中存储枚举时,我只使用smallint数据类型,但是在这种情况下这不会起作用,因为可以通过多个角色看到通知.
我正在考虑做的是将Roles列定义为varchar(x),并在存储它们时用逗号分隔它们.但是,我不认为/知道这是否是最好的选择.我不想创建一个新的表来保持一对多的关系.
有任何想法吗?
如果你关心可维护性,我会尽可能地坚持第三范式.
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)
AnnouncementID RoleID
1 1
1 2
2 2
2 3
2 4
Run Code Online (Sandbox Code Playgroud)