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:
CustomDataset
toCustomTable
, throughcustomTables
CustomTable
toCustomField
, throughcustomFields
- All of these assets have a number of attributes:
- Some common (like
customSourceId
,customDatasetName
andcustomDatasetQualifiedName
). - Others unique (like
customTemperature
andcustomRatings
).
- 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 (
customSourceId
andcustomTemperature
) 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
}