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

Posted

技术标签:

【中文标题】如何将背景颜色添加到 PlantUML 中的实体关系图【英文标题】:How can I put background color to Entity-Relationship diagram in PlantUML 【发布时间】:2020-10-06 03:50:34 【问题描述】:

我目前正在使用 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

这会生成下图:

我想看到这样的东西:

或者至少是这样的:

【问题讨论】:

您能否添加一个完整的小示例来说明您的问题? 添加了视觉辅助和示例图。清楚我在这里寻找什么吗?我以为这会有一个简单的解决方案,但我真的很挣扎哈哈谢谢 【参考方案1】:

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

要将特定背景颜色应用于选定的实体,您必须向它们添加构造型,以便它们可以被skinparam class 命令识别。例如,您可以将&lt;&lt;personnel&gt;&gt; 添加到ProfessorStudent 实体,并将BackgroundColor&lt;&lt;personnel&gt;&gt; 添加到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

【讨论】:

嗯,好的,但是第一种方法会更改所有实体的颜色。我只想更改一些,所以我可以在它们上添加一个标签以仅更改一些吗?在我的图表中,我有 2 个浅蓝色的实体和 2 个默认黄色的实体……我想更改特定的实体……我可以创建某种命名类,还是使用 id 进行更改?我可以使用包装方法,但我不能用彼此不同的颜色给它们上色,可以吗? 你是绝对正确的。对不起,我误解了你的要求。我已经更新了将背景颜色应用于某些实体的答案(通过使用构造型)并直接在 packages 语句中添加颜色(而不是使用 skinparam 语句)。 太棒了,我尝试使用实体名称或别名的构造型,并没有在实际实体中定义构造型。非常感谢!

以上是关于如何将背景颜色添加到 PlantUML 中的实体关系图的主要内容,如果未能解决你的问题,请参考以下文章

如何将具有突出显示颜色背景的文本添加到 ImageView

如何在swiftUI中将背景颜色添加到列表中

如何将图像视图颜色设置为文本字段背景颜色

如何在 JavaFX 中为组布局添加背景颜色?

使用 flexbox (tailwindcss: flex-1) 如何将背景颜色添加到整个元素而不仅仅是文本?

将背景颜色添加到单元格 Google 工作表(python)