【发布时间】:2020-02-19 17:27:23
【问题描述】:
我尝试创建一个包含用户、组、文档和权限的数据库架构。
- 用户可以加入多个群组
- 组可以有多个用户
- 用户可以拥有文档权限
- 群组可以拥有文档权限
- 权限可以是任何东西,不仅仅适用于文档
我试图为此创建一个小图形
我开始设计实体
用户
@Entity('User')
export class UserEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@ManyToMany((type: any) => GroupEntity, (group: GroupEntity) => group.users)
@JoinTable()
groups: GroupEntity[];
@ManyToMany((type: any) => DocumentEntity, (document: DocumentEntity) => document.users)
@JoinTable()
documents: DocumentEntity[];
}
组
@Entity('Group')
export class GroupEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@ManyToMany((type: any) => UserEntity, (user: UserEntity) => user.groups)
users: UserEntity[];
@ManyToMany((type: any) => DocumentEntity, (document: DocumentEntity) => document.groups)
@JoinTable()
documents: DocumentEntity[];
}
文档
@Entity('Document')
export class DocumentEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@ManyToMany((type: any) => UserEntity, (user: UserEntity) => user.documents)
users: UserEntity[];
@ManyToMany((type: any) => GroupEntity, (group: GroupEntity) => group.documents)
groups: GroupEntity[];
}
当涉及到文档的权限时,您会看到 3 个表、用户/组、文档和权限之间存在关系。
我将 TypeORM 用于 REST API (NestJs),但我不确定权限是否为实体。由于我正在设计 REST 端点,这个权限实体将是多个端点的共享实体。
如何扩展我的实体以获得这些权限?
...也许你会想出更好的数据库设计:)
【问题讨论】:
标签: javascript typescript orm nestjs typeorm