如何将背景颜色添加到 PlantUML 中的实体关系图中

How can I put background color to Entity-Relationship diagram in PlantUML

我目前正在使用 PlantUML 来设计我的数据库的 ERD。一切顺利,图表已完成,但我正在尝试为我的实体添加背景颜色,以在它们各自的模式中区分它们。

我正在考虑实体的背景颜色,或者可能是一个包含实体的彩色矩形。

我尝试将 skinparam 与实体名称及其别名一起使用...

skinparam entity {
  backgroundColor<<usr>> DarkOrchid
}
skinparam entity {
  backgroundColor<<User>> DarkOrchid
}

None 这些工作...有人可以帮忙吗?

谢谢

========= 编辑

应要求,举个小例子:

'==========='
'auth schema'
entity "User" as usr {
  *id : number <<PK>>
  --
  password: varchar
  salt: varchar
  role: number <<FK>>
  last_login_at : datetime
  is_active : boolean
}

entity "User Role" as url {
  *id : number <<PK>>
  --
  name: varchar
  clearance_lvl: text
  is_active : boolean
}

'====================='
'personnel data schema'

entity "Professor" as prof {
  *id : number <<PK>>
  --
  name: varchar
  office: integer
  user_id: number <<FK>>
  wage: number
  last_login_at : datetime
  is_active : boolean
}

entity "Student" as stu {
  *id : number <<PK>>
  --
  name: varchar
  semester: text
  user_id: number <<FK>>
  specialization: text
  is_active : boolean
}

usr ||--o{ url
prof ||--|| usr
stu ||--|| usr

这会生成下图:

我想看到这样的东西:

或者至少是这样的:

entity 对象使用 class 的皮肤参数!因此,您必须说 skinparam class 而不是 skinparam entity 来更改实体的背景颜色。

要将某种背景颜色应用于选定的实体,您必须向它们添加构造型,以便可以通过 skinparam class 命令识别它们。例如,您可以将 <<personnel>> 添加到 ProfessorStudent 实体,将 BackgroundColor<<personnel>> 添加到 skinparam class.

这应该满足您第一个示例的要求:

skinparam  class {
    BackgroundColor<<personnel>> #A9DCDF
}


'==========='
'auth schema'
entity "User" as usr {
  *id : number <<PK>>
  --
  password: varchar
  salt: varchar
  role: number <<FK>>
  last_login_at : datetime
  is_active : boolean
}

entity "User Role" as url {
  *id : number <<PK>>
  --
  name: varchar
  clearance_lvl: text
  is_active : boolean
}

'====================='
'personnel data schema'

entity "Professor" as prof <<personnel>> {
  *id : number <<PK>>
  --
  name: varchar
  office: integer
  user_id: number <<FK>>
  wage: number
  last_login_at : datetime
  is_active : boolean
}

entity "Student" as stu <<personnel>> {
  *id : number <<PK>>
  --
  name: varchar
  semester: text
  user_id: number <<FK>>
  specialization: text
  is_active : boolean
}

usr ||--o{ url
prof ||--|| usr
stu ||--|| usr

要实现您的第二个示例,您可以将您的实体包装到包中并直接应用不同的背景作为 package 语句的一部分。

'==========='
'auth schema'
package "auth schema" #B4A7E5 {
entity "User" as usr {
}

entity "User Role" as url {
}
}

'====================='
'personnel data schema'
package "personnel data schema" #A9DCDF {
entity "Professor" as prof <<person>> {
}

entity "Student" as stu <<person>> {
}

usr ||--o{ url
prof ||--|| usr
stu ||--|| usr