如何将背景颜色添加到 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
命令识别。例如,您可以将<<personnel>>
添加到Professor
和Student
实体,并将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
【讨论】:
嗯,好的,但是第一种方法会更改所有实体的颜色。我只想更改一些,所以我可以在它们上添加一个标签以仅更改一些吗?在我的图表中,我有 2 个浅蓝色的实体和 2 个默认黄色的实体……我想更改特定的实体……我可以创建某种命名类,还是使用 id 进行更改?我可以使用包装方法,但我不能用彼此不同的颜色给它们上色,可以吗? 你是绝对正确的。对不起,我误解了你的要求。我已经更新了将背景颜色应用于某些实体的答案(通过使用构造型)并直接在 packages 语句中添加颜色(而不是使用 skinparam 语句)。 太棒了,我尝试使用实体名称或别名的构造型,并没有在实际实体中定义构造型。非常感谢!以上是关于如何将背景颜色添加到 PlantUML 中的实体关系图的主要内容,如果未能解决你的问题,请参考以下文章