133 lines
2.1 KiB
Text
133 lines
2.1 KiB
Text
|
|
# Items database object and table schema
|
||
|
|
|
||
|
|
The base schema of the item objects are data and link object, which have both a
|
||
|
|
type. This way you could model the description "Chassis contains Mainboard" or
|
||
|
|
"Service runs on Server".
|
||
|
|
|
||
|
|
.Object schema concept
|
||
|
|
[plantuml, format=svg]
|
||
|
|
----
|
||
|
|
@startuml
|
||
|
|
|
||
|
|
left to right direction
|
||
|
|
scale 200 width
|
||
|
|
|
||
|
|
header Concept
|
||
|
|
title General object and link
|
||
|
|
|
||
|
|
object data1
|
||
|
|
object data2
|
||
|
|
object link1
|
||
|
|
|
||
|
|
data1 : id: "uuid"
|
||
|
|
data1 : type: "data type"
|
||
|
|
data1 : data: "json"
|
||
|
|
|
||
|
|
data2 : id: "uuid"
|
||
|
|
data2 : type: "data type"
|
||
|
|
data2 : data: "json"
|
||
|
|
|
||
|
|
link1 : id: "uuid"
|
||
|
|
link1 : type: "link type"
|
||
|
|
link1 : from: "data.id"
|
||
|
|
link1 : to: "data.id"
|
||
|
|
|
||
|
|
|
||
|
|
data1::id <- link1::from
|
||
|
|
link1::to -> data2::id
|
||
|
|
@enduml
|
||
|
|
----
|
||
|
|
|
||
|
|
.Object schema example
|
||
|
|
[plantuml, format=svg]
|
||
|
|
----
|
||
|
|
@startuml
|
||
|
|
|
||
|
|
left to right direction
|
||
|
|
scale 400 width
|
||
|
|
|
||
|
|
header Example
|
||
|
|
title Chassis contains Mainboard
|
||
|
|
|
||
|
|
object data3
|
||
|
|
object data4
|
||
|
|
object link2
|
||
|
|
|
||
|
|
data3 : id: "afd61751-dbee-4010-91dc-1263155d6a56"
|
||
|
|
data3 : type: "Chassis"
|
||
|
|
data3 : data: "{\n"serial": "12345678"\n}"
|
||
|
|
|
||
|
|
data4 : id: "96dcf778-0875-437f-adc0-03545f9f06be"
|
||
|
|
data4 : type: "Mainboard"
|
||
|
|
data4 : data: "{\n "serial": "ABCDEFGHI"\n}"
|
||
|
|
|
||
|
|
link2 : id: "f4402dbb-05db-4903-a378-5bff14cf91ca"
|
||
|
|
link2 : type: "contains"
|
||
|
|
link2 : from: "afd61751-dbee-4010-91dc-1263155d6a56"
|
||
|
|
link2 : to: "96dcf778-0875-437f-adc0-03545f9f06be"
|
||
|
|
|
||
|
|
|
||
|
|
data3::id <- link2::from
|
||
|
|
link2::to -> data4::id
|
||
|
|
|
||
|
|
@enduml
|
||
|
|
|
||
|
|
----
|
||
|
|
|
||
|
|
.Table schema
|
||
|
|
[plantuml, format=svg]
|
||
|
|
----
|
||
|
|
@startuml
|
||
|
|
|
||
|
|
left to right direction
|
||
|
|
' scale 350 width
|
||
|
|
' skinparam linetype ortho
|
||
|
|
|
||
|
|
entity link_schema #eee8d5 {
|
||
|
|
* id: "uuid"
|
||
|
|
--
|
||
|
|
* type: "a|b|c"
|
||
|
|
}
|
||
|
|
|
||
|
|
entity link #fdf6e3 {
|
||
|
|
* id: "uuid"
|
||
|
|
--
|
||
|
|
* type: "schema_link"
|
||
|
|
* from: "data.id uuid"
|
||
|
|
* to: "data.id uuid"
|
||
|
|
}
|
||
|
|
|
||
|
|
note right of link_schema #add1b2
|
||
|
|
link_schema has only an 'object_type'
|
||
|
|
end note
|
||
|
|
|
||
|
|
entity data_schema #eee8d5 {
|
||
|
|
* id: "uuid"
|
||
|
|
--
|
||
|
|
* type: "x|y|z"
|
||
|
|
* schema: "json"
|
||
|
|
}
|
||
|
|
|
||
|
|
entity data #fdf6e3 {
|
||
|
|
* id: "uuid"
|
||
|
|
--
|
||
|
|
* type: "data_schema"
|
||
|
|
* data: "data_schema.schema json"
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
link::from -> data::id #A9DCDF
|
||
|
|
link::to -> data::id #A9DCDF
|
||
|
|
|
||
|
|
|
||
|
|
link_schema::type -> link::type
|
||
|
|
|
||
|
|
data_schema::type -> data::type
|
||
|
|
data_schema::schema -> data::data
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
@enduml
|
||
|
|
----
|