repo.IndexReferencedReferencing - V

type: V ( view ), modify_date: 2022-01-05 18:06:35

RepoObject_guid: 6690291C-9D61-EB11-84DC-A81E8446D5B0

Description

Examples

Entity Diagram

entity-repo.indexreferencedreferencing

Columns

Table 1. Columns of repo.IndexReferencedReferencing - V
PK Column Name Data Type NULL? ID

uniqueidentifier

NULL

uniqueidentifier

NOT NULL

uniqueidentifier

NOT NULL

int

NULL

uniqueidentifier

NULL

tinyint

NULL

Foreign Key Diagram

entity_1_1_fk-repo.indexreferencedreferencing

References

Object Reference Diagram - 1 1

entity_1_1_objectref-repo.indexreferencedreferencing

Object Reference Diagram - Referenced - 30 0

entity_30_0_objectref-repo.indexreferencedreferencing

Object Reference Diagram - Referencing - 0 30

entity_0_30_objectref-repo.indexreferencedreferencing

Column Reference Diagram

entity_1_1_colref-repo.indexreferencedreferencing

Indexes

idx_IndexReferencedReferencing__1

idx_IndexReferencedReferencing__2

Column Details

_

referenced_index_guid

referenced_index_guid

uniqueidentifier

NULL

referenced_RepoObject_guid

referenced_RepoObject_guid

uniqueidentifier

NOT NULL

referencing_RepoObject_guid

referencing_RepoObject_guid

uniqueidentifier

NOT NULL

RowNumberInReferencing_Target

RowNumberInReferencing_Target

int

NULL

source_index_guid

source_index_guid

uniqueidentifier

NULL

Referenced Columns

source_index_type

source_index_type

tinyint

NULL

Referenced Columns

sql_modules_definition

repo.IndexReferencedReferencing - V script
/*
Was ist der Sinn dieser Sicht?

Es muss bedacht werden, dass der gleiche Quell-Index im Zielobjekt mehrere Vererbungen haben kann,
wenn die Quelle mehrfach verwendet wird und der Quell-Index somit auch mehrfach im Ziel vorhanden sein kann
Das ist so lange OK, wie es im referenced unterschiedliche Spalten sind.

Wir müssten noch irgendwo prüfen, ob die gleiche Spalten-Kombination aus verschiedenen Quellen geerbt wird
Und dann dürfte es den Index nur einmal geben, aber möglicherweise mit mehrfachen Quellen?
Oder brauchen wir nur eine Quelle und ignorieren einfach weitere Quellen?

repo.RepoObject_reference__union
fasst aber alle Referenzen zwischen Objekten zusammen, auch wenn es da mehrere Ausprägungen gibt

Wenn repo.Index__virtual AS i_v richtig gefüllt wird, dann müsste es in folgender Sicht auch eine Einträge mit Anz > 1 geben

SELECT
       [source_index_guid]
     , [referenced_RepoObject_guid]
     , [referencing_RepoObject_guid]
     , COUNT(*) AS [Anz]
FROM
     repo.IndexReferencedReferencing AS T1
GROUP BY
         [source_index_guid]
       , [referenced_RepoObject_guid]
       , [referencing_RepoObject_guid]
ORDER BY
         [Anz] DESC

*/
CREATE View repo.IndexReferencedReferencing
As
--
Select
    source_index_guid             = i_s.index_guid
  , ror.referencing_RepoObject_guid
  , RowNumberInReferencing_Target = i_v.RowNumberInReferencing
  , source_index_type             = i_s.index_type
  , ror.referenced_RepoObject_guid
  , referenced_index_guid         = i_v.referenced_index_guid
From
    repo.Index_union                     As i_s --index source: index in referenced source object(s)
    Inner Join
        reference.RepoObject_reference_T As ror
            On
            ror.referenced_RepoObject_guid = i_s.parent_RepoObject_guid

    Left Join
        repo.Index_virtual               As i_v
            On
            i_v.referenced_index_guid      = i_s.index_guid
            And i_v.parent_RepoObject_guid = ror.referencing_RepoObject_guid