Running example¶
Running example
To summarize the overall example — we want to have CustomDataset, CustomTable and CustomField assets.
- These assets are related to each other in a hierarchy of parent-child relationships:
CustomDatasettoCustomTable, throughcustomTablesCustomTabletoCustomField, throughcustomFields
- All of these assets have a number of attributes:
- Some common (like
customSourceId,customDatasetNameandcustomDatasetQualifiedName). - Others unique (like
customTemperatureandcustomRatings).
- Some common (like
- Some of these attributes themselves have a set of restricted values (
customTemperature) or are a nested set of information (customRatings). - Most of the attributes capture only a single value (
customSourceIdandcustomTemperature) but some allow multiple values (customRatings).
To help explain how this all works, we'll use this fictional example of a metadata model we want to set up:
erDiagram
Connection ||..o{ CustomDataset : ""
CustomDataset {
string customSourceId
string customDatasetName
string customDatasetQualifiedName
}
CustomDataset ||--o{ CustomTable : customTables
CustomTable {
string customSourceId
string customDatasetName
string customDatasetQualifiedName
struct[] customRatings
}
CustomTable ||--o{ CustomField : customFields
CustomField {
string customSourceId
string customDatasetName
string customDatasetQualifiedName
string tableName
string tableQualifiedName
enum customTemperature
}
"CustomTemperature(Enum)" |o--o{ CustomField : ""
"CustomTemperature(Enum)" {
val HOT "highly available"
val COLD "offline storage"
}
"CustomRating(Struct)" |o--o{ CustomTable : ""
"CustomRating(Struct)" {
string customRatingFrom
long customRatingOf
}