如何使用PlantUML创建关系图,使线条与确切的字段相连?

3

我已经按照UML标准符号参考ERD示例成功创建了ERD,其中包含ERD样本

但是,我想使线条与字段名称完全接触,就像在ERD或UML中指定的那样。

在Plantuml中是否有内置的功能可用,还是我应该使用CSS简单地更改SVG元素的x y位置?

1个回答

4

理论上可以使用从/到类成员的箭头来完成。然而,它并不像你期望的那样工作:

@startuml
' hide the spot
hide circle

' avoid problems with angled crows feet
skinparam linetype ortho

entity "Entity01" as e01 {
  * e1_id : number <<generated>>
  __
  * name : text
  description : text
}

entity "Entity02" as e02 {
  * e2_id : number <<generated>>
  __
  * e1_id : number <<FK>>
  other_details : text
}

entity "Entity03" as e03 {
  * e3_id : number <<generated>>
  __
  e1_id : number <<FK>>
  other_details : text
}

e01 ||.left.o{ e02::e1_id
e01 |o.right.o{ e03::e1_id
@enduml

relations to class members

我会称之为PlantUML中的一个bug,因为线条结束于实体的中心而不是其边缘。你可以通过报告来尝试修复它。然而,我怀疑你无法得到像你问题中那样好的图表结果。
尝试调整上下和从左到右的方向,可以得到更好的结果:
@startuml
' hide the spot
hide circle

' avoid problems with angled crows feet
skinparam linetype ortho

left to right direction

entity "Entity01" as e01 {
  * e1_id : number <<generated>>
  __
  * name : text
  description : text
}

entity "Entity02" as e02 {
  * e2_id : number <<generated>>
  __
  * e1_id : number <<FK>>
  other_details : text
}

entity "Entity03" as e03 {
  * e3_id : number <<generated>>
  __
  e1_id : number <<FK>>
  other_details : text
}

e01::e1_id ||.up.o{ e02::e1_id
e01::e1_id |o.down.o{ e03::e1_id
@enduml

但是,我还是怀疑这个方法能否适用于你的例子。你可以试试看!

left to right direction hack

编辑:看一下这个例子,你可以发现它与你提到的例子非常接近。我认为关键是从左到右的方向


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