如何在PlantUML的实体关系图中添加背景色

3

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

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

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

skinparam entity {
  backgroundColor<<usr>> DarkOrchid
}

skinparam entity {
  backgroundColor<<User>> DarkOrchid
}

这些都不起作用...有谁可以帮忙吗?

谢谢

========= 编辑

按照要求,给出一个小例子:

'==========='
'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

这将生成以下图表:

默认的图表

而我想看到像这样的东西:

彩色的图表

或者至少是这样的:

带有背景矩形的图表


请问您能否添加一个小的完整示例以展示您的问题? - albert
添加了可视化辅助和示例图。这里我需要的是否清晰明了?我原以为这有一个简单的解决方案,但我真的很困扰哈哈。谢谢。 - Pstr
1个回答

5
entity 对象使用 class 的 skinparams!因此,您需要使用 skinparam class 而不是 skinparam entity 来更改实体的背景颜色。
要将特定的背景颜色应用于一组实体,您需要向它们添加一个元素类型,以便可以通过 skinparam class 命令来识别它们。例如,您可以向 ProfessorStudent 实体添加 <<personnel>>,并在 skinparam class 中添加 BackgroundColor<<personnel>>
这应该满足您第一个示例的要求:
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

1
嗯,好的,但第一种方法会改变所有实体的颜色...我只想改变一些,那么有没有标签可以添加到它们上面只改变一些?在我的图表中,我有两个带浅蓝色和两个默认黄色的实体...我想改变特定的实体...我可以创建某种命名类,或者使用ID进行更改吗? 我可以使用包的方法,但我不能将它们彼此着色不同的颜色,对吧? - Pstr
1
你是完全正确的。抱歉,我误解了您的要求。我已经更新了答案,通过使用构造型来应用背景颜色到某些实体,并直接在包语句中添加颜色(而不是使用skinparam语句)。 - khalito
1
太棒了,我尝试使用实体名称或别名来使用构造型,而没有在实际实体中定义构造型。非常感谢! - Pstr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接