left to right direction
'top to bottom direction
hide circle
'avoide "." issues:
set namespaceSeparator none


skinparam class {
  BackgroundColor White
  BackgroundColor<<FN>> Yellow
  BackgroundColor<<FS>> Yellow
  BackgroundColor<<FT>> LightGray
  BackgroundColor<<IF>> Yellow
  BackgroundColor<<IS>> Yellow
  BackgroundColor<<P>> Aqua
  BackgroundColor<<PC>> Aqua
  BackgroundColor<<SN>> Yellow
  BackgroundColor<<SO>> SlateBlue
  BackgroundColor<<TF>> LightGray
  BackgroundColor<<TR>> Tomato
  BackgroundColor<<U>> White
  BackgroundColor<<V>> WhiteSmoke
  BackgroundColor<<X>> Aqua
}


entity repo.Index_gross << V >> {
  * **index_guid** : uniqueidentifier
  --
  AntoraIndexColumnList : nvarchar(max)
  ColumnList : nvarchar(max)
  ConstraintColumnList : nvarchar(max)
  DbmlIndexColumnList : nvarchar(max)
  index_name : nvarchar(450)
  index_type : tinyint
  IndexPatternColumnDatatype : nvarchar(4000)
  IndexPatternColumnName : nvarchar(4000)
  IndexSemanticGroup : nvarchar(512)
  is_index_disabled : bit
  is_index_primary_key : bit
  is_index_real : bit
  is_index_unique : bit
  is_persistence : bit
  is_repo_managed : bit
  parent_RepoObject_guid : uniqueidentifier
  PersistenceWhereColumnList : nvarchar(max)
  PumlIndexColumnList : nvarchar(max)
  referenced_index_guid : uniqueidentifier
  * RepoObject_fullname : nvarchar(261)
  * RepoObject_fullname2 : nvarchar(257)
  RowNumber_PatternPerParentObject : bigint
  RowNumber_PkPerParentObject : bigint
  * SysObject_fullname : nvarchar(261)
  * SysObject_fullname2 : nvarchar(257)
  SysObject_id : int
  * SysObject_name : nvarchar(128)
  * SysObject_schema_name : nvarchar(128)
  SysObject_type : char(2)
  --
}

entity repo.Index_Settings << U >> {
  * **index_guid** : uniqueidentifier
  --
  IndexPatternColumnDatatype : nvarchar(4000)
  IndexPatternColumnName : nvarchar(4000)
  IndexSemanticGroup : nvarchar(512)
  * is_create_constraint : bit
  --
}

entity repo.Index_Settings_ForUpdate << V >> {
  --
  * index_guid : uniqueidentifier
  index_name : nvarchar(128)
  IndexPatternColumnDatatype : nvarchar(4000)
  IndexPatternColumnName : nvarchar(4000)
  IndexSemanticGroup : nvarchar(512)
  * is_create_constraint : bit
  parent_RepoObject_guid : uniqueidentifier
  RepoObject_fullname : nvarchar(261)
  --
}

entity repo.Index_SqlConstraint_PkUq << V >> {
  **index_guid** : uniqueidentifier
  --
  parent_RepoObject_guid : uniqueidentifier
  * SqlConstraint : nvarchar(max)
  --
}

entity repo.Index_virtual_ForUpdate << V >> {
  * **index_guid** : uniqueidentifier
  --
  * has_managedName : bit
  index_name : nvarchar(128)
  * index_type : tinyint
  IndexPatternColumnDatatype : nvarchar(4000)
  IndexPatternColumnName : nvarchar(4000)
  IndexSemanticGroup : nvarchar(512)
  * is_index_disabled : bit
  * is_index_primary_key : bit
  * is_index_unique : bit
  is_persistence : bit
  is_repo_managed : bit
  * parent_RepoObject_guid : uniqueidentifier
  referenced_index_guid : uniqueidentifier
  * RepoObject_fullname : nvarchar(261)
  * RepoObject_fullname2 : nvarchar(257)
  RowNumberInReferencing : int
  * SysObject_fullname : nvarchar(261)
  * SysObject_fullname2 : nvarchar(257)
  --
}

entity repo.Index_virtual_SysObject << V >> {
  * **index_guid** : uniqueidentifier
  --
  index_name : nvarchar(128)
  IndexPatternColumnDatatype : nvarchar(4000)
  IndexPatternColumnName : nvarchar(4000)
  IndexSemanticGroup : nvarchar(512)
  * is_index_disabled : bit
  * is_index_primary_key : bit
  * is_index_unique : bit
  * parent_RepoObject_guid : uniqueidentifier
  pk_index_guid : uniqueidentifier
  referenced_index_guid : uniqueidentifier
  SysObject_id : int
  * SysObject_name : nvarchar(128)
  * SysObject_schema_name : nvarchar(128)
  SysObject_type : char(2)
  --
}

entity repo.IndexColumn_ReferencedReferencing_HasFullColumnsInReferencing_check << V >> {
  --
  * index_column_id : int
  index_guid : uniqueidentifier
  IndexPatternColumnDatatype : nvarchar(4000)
  IndexPatternColumnName : nvarchar(4000)
  IndexSemanticGroup : nvarchar(512)
  is_descending_key : bit
  referenced_RepoObject_fullname : nvarchar(261)
  referenced_RepoObject_guid : uniqueidentifier
  referenced_RepoObjectColumn_guid : uniqueidentifier
  referenced_RepoObjectColumn_name : nvarchar(128)
  referencing_RepoObject_fullname : nvarchar(261)
  referencing_RepoObject_guid : uniqueidentifier
  referencing_RepoObjectColumn_guid : uniqueidentifier
  referencing_RepoObjectColumn_name : nvarchar(128)
  RowNumberInReferencing : bigint
  --
}

entity repo.RepoObject_gross << V >> {
  * **RepoObject_guid** : uniqueidentifier
  --
  Description : nvarchar(max)
  has_different_sys_names : bit
  has_execution_plan_issue : bit
  has_get_referenced_issue : bit
  has_history : bit
  has_history_columns : bit
  history_schema_name : nvarchar(128)
  history_table_name : nvarchar(128)
  Inheritance_StringAggSeparatorSql : nvarchar(4000)
  InheritanceDefinition : nvarchar(4000)
  InheritanceType : tinyint
  * is_DocsExclude : bit
  is_DocsOutput : int
  * is_in_reference : int
  is_persistence : bit
  is_persistence_check_duplicate_per_pk : bit
  is_persistence_check_for_empty_source : bit
  is_persistence_delete_changed : bit
  is_persistence_delete_missing : bit
  is_persistence_insert : bit
  is_persistence_merge_delete_missing : bit
  is_persistence_merge_insert : bit
  is_persistence_merge_update_changed : bit
  is_persistence_truncate : bit
  is_persistence_update_changed : bit
  is_repo_managed : bit
  * is_RepoObject_name_uniqueidentifier : int
  is_required_ObjectMerge : bit
  * is_ssas : bit
  is_SysObject_missing : bit
  * is_SysObject_name_uniqueidentifier : int
  * modify_dt : datetime
  node_id : bigint
  persistence_source_RepoObject_fullname : nvarchar(261)
  persistence_source_RepoObject_fullname2 : nvarchar(257)
  persistence_source_RepoObject_guid : uniqueidentifier
  persistence_source_RepoObject_xref : nvarchar(269)
  persistence_source_SysObject_fullname : nvarchar(261)
  persistence_source_SysObject_fullname2 : nvarchar(257)
  persistence_source_SysObject_xref : nvarchar(269)
  pk_index_guid : uniqueidentifier
  pk_IndexPatternColumnDatatype : nvarchar(4000)
  pk_IndexPatternColumnName : nvarchar(4000)
  pk_IndexPatternColumnName_new : nvarchar(4000)
  pk_IndexSemanticGroup : nvarchar(512)
  Property_ms_description : nvarchar(4000)
  Repo_history_table_guid : uniqueidentifier
  Repo_temporal_type : tinyint
  * RepoObject_fullname : nvarchar(261)
  * RepoObject_fullname2 : nvarchar(257)
  * RepoObject_name : nvarchar(128)
  RepoObject_Referencing_Count : int
  * RepoObject_schema_name : nvarchar(128)
  * RepoObject_type : char(2)
  RepoObject_type_name : nvarchar(128)
  source_filter : nvarchar(4000)
  * SysObject_fullname : nvarchar(261)
  * SysObject_fullname2 : nvarchar(257)
  SysObject_id : int
  SysObject_modify_date : datetime
  * SysObject_name : nvarchar(128)
  * SysObject_parent_object_id : int
  SysObject_query_executed_dt : datetime
  SysObject_query_plan : xml
  * SysObject_query_sql : nvarchar(406)
  * SysObject_schema_name : nvarchar(128)
  SysObject_type : char(2)
  SysObject_type_name : nvarchar(128)
  tables_dataCategory : nvarchar(500)
  tables_description : nvarchar(max)
  tables_isHidden : nvarchar(500)
  target_filter : nvarchar(4000)
  temporal_type : tinyint
  * usp_persistence_name : nvarchar(140)
  usp_persistence_RepoObject_guid : uniqueidentifier
  --
}

entity repo.usp_Index_finish << P >> {
  --
  --
}

entity repo.usp_Index_Settings << P >> {
  --
  --
}

entity repo.usp_Index_virtual_set << P >> {
  --
  --
}

repo.Index_Settings <.. repo.Index_virtual_SysObject
repo.Index_Settings <.. repo.Index_SqlConstraint_PkUq
repo.Index_Settings <.. repo.RepoObject_gross
repo.Index_Settings <.. repo.Index_gross
repo.Index_Settings <.. repo.usp_Index_Settings
repo.Index_Settings <.. repo.usp_Index_virtual_set
repo.Index_Settings <.. repo.usp_Index_finish
repo.Index_Settings <.. repo.Index_virtual_ForUpdate
repo.Index_Settings <.. repo.Index_Settings_ForUpdate
repo.Index_Settings <.. repo.IndexColumn_ReferencedReferencing_HasFullColumnsInReferencing_check
repo.Index_Settings::index_guid <-- repo.Index_gross::index_guid
repo.Index_Settings::index_guid <-- repo.Index_Settings_ForUpdate::index_guid
repo.Index_Settings::IndexPatternColumnDatatype <-- repo.Index_virtual_SysObject::IndexPatternColumnDatatype
repo.Index_Settings::IndexPatternColumnDatatype <-- repo.Index_gross::IndexPatternColumnDatatype
repo.Index_Settings::IndexPatternColumnDatatype <-- repo.RepoObject_gross::pk_IndexPatternColumnDatatype
repo.Index_Settings::IndexPatternColumnDatatype <-- repo.Index_virtual_ForUpdate::IndexPatternColumnDatatype
repo.Index_Settings::IndexPatternColumnDatatype <-- repo.Index_Settings_ForUpdate::IndexPatternColumnDatatype
repo.Index_Settings::IndexPatternColumnDatatype <-- repo.IndexColumn_ReferencedReferencing_HasFullColumnsInReferencing_check::IndexPatternColumnDatatype
repo.Index_Settings::IndexPatternColumnName <-- repo.Index_virtual_SysObject::IndexPatternColumnName
repo.Index_Settings::IndexPatternColumnName <-- repo.Index_gross::IndexPatternColumnName
repo.Index_Settings::IndexPatternColumnName <-- repo.RepoObject_gross::pk_IndexPatternColumnName
repo.Index_Settings::IndexPatternColumnName <-- repo.Index_virtual_ForUpdate::IndexPatternColumnName
repo.Index_Settings::IndexPatternColumnName <-- repo.Index_Settings_ForUpdate::IndexPatternColumnName
repo.Index_Settings::IndexPatternColumnName <-- repo.IndexColumn_ReferencedReferencing_HasFullColumnsInReferencing_check::IndexPatternColumnName
repo.Index_Settings::IndexSemanticGroup <-- repo.Index_virtual_SysObject::IndexSemanticGroup
repo.Index_Settings::IndexSemanticGroup <-- repo.Index_gross::IndexSemanticGroup
repo.Index_Settings::IndexSemanticGroup <-- repo.RepoObject_gross::pk_IndexSemanticGroup
repo.Index_Settings::IndexSemanticGroup <-- repo.Index_virtual_ForUpdate::IndexSemanticGroup
repo.Index_Settings::IndexSemanticGroup <-- repo.Index_Settings_ForUpdate::IndexSemanticGroup
repo.Index_Settings::IndexSemanticGroup <-- repo.IndexColumn_ReferencedReferencing_HasFullColumnsInReferencing_check::IndexSemanticGroup
repo.Index_Settings::is_create_constraint <-- repo.Index_Settings_ForUpdate::is_create_constraint
