chore: set UUID of examples DB (#15724)

diff --git a/superset/commands/importers/v1/examples.py b/superset/commands/importers/v1/examples.py
index 1571a21..f84f529 100644
--- a/superset/commands/importers/v1/examples.py
+++ b/superset/commands/importers/v1/examples.py
@@ -70,7 +70,7 @@
             db.session.rollback()
             raise self.import_error()
 
-    # pylint: disable=too-many-locals, arguments-differ
+    # pylint: disable=too-many-locals, arguments-differ, too-many-branches
     @staticmethod
     def _import(
         session: Session,
@@ -86,16 +86,23 @@
                 database_ids[str(database.uuid)] = database.id
 
         # import datasets
-        # TODO (betodealmeida): once we have all examples being imported we can
-        # have a stable UUID for the database stored in the dataset YAML; for
-        # now we need to fetch the current ID.
-        examples_id = (
-            db.session.query(Database).filter_by(database_name="examples").one().id
+        # If database_uuid is not in the list of UUIDs it means that the examples
+        # database was created before its UUID was frozen, so it has a random UUID.
+        # We need to determine its ID so we can point the dataset to it.
+        examples_db = (
+            db.session.query(Database).filter_by(database_name="examples").first()
         )
         dataset_info: Dict[str, Dict[str, Any]] = {}
         for file_name, config in configs.items():
             if file_name.startswith("datasets/"):
-                config["database_id"] = examples_id
+                # find the ID of the corresponding database
+                if config["database_uuid"] not in database_ids:
+                    if examples_db is None:
+                        raise Exception("Cannot find examples database")
+                    config["database_id"] = examples_db.id
+                else:
+                    config["database_id"] = database_ids[config["database_uuid"]]
+
                 dataset = import_dataset(
                     session, config, overwrite=overwrite, force_data=force_data
                 )
diff --git a/superset/constants.py b/superset/constants.py
index a4f0ad1..7defc34 100644
--- a/superset/constants.py
+++ b/superset/constants.py
@@ -21,6 +21,10 @@
 NULL_STRING = "<NULL>"
 
 
+# UUID for the examples database
+EXAMPLES_DB_UUID = "a2dc77af-e654-49bb-b321-40f6b559a1ee"
+
+
 class RouteMethod:  # pylint: disable=too-few-public-methods
     """
     Route methods are a FAB concept around ModelView and RestModelView
diff --git a/superset/examples/configs/datasets/examples/users_channels-uzooNNtSRO.yaml b/superset/examples/configs/datasets/examples/users_channels-uzooNNtSRO.yaml
index f54d061..152ca32 100644
--- a/superset/examples/configs/datasets/examples/users_channels-uzooNNtSRO.yaml
+++ b/superset/examples/configs/datasets/examples/users_channels-uzooNNtSRO.yaml
@@ -73,4 +73,4 @@
   description: null
   python_date_format: null
 version: 1.0.0
-database_uuid: 566ca280-3da8-967e-4aa4-4b349218736a
+database_uuid: a2dc77af-e654-49bb-b321-40f6b559a1ee
diff --git a/superset/utils/core.py b/superset/utils/core.py
index 4371640..0c4c18f 100644
--- a/superset/utils/core.py
+++ b/superset/utils/core.py
@@ -85,6 +85,7 @@
 
 import _thread  # pylint: disable=C0411
 from superset.constants import (
+    EXAMPLES_DB_UUID,
     EXTRA_FORM_DATA_APPEND_KEYS,
     EXTRA_FORM_DATA_OVERRIDE_EXTRA_KEYS,
     EXTRA_FORM_DATA_OVERRIDE_REGULAR_MAPPINGS,
@@ -1168,9 +1169,16 @@
         db.session.query(models.Database).filter_by(database_name=database_name).first()
     )
 
+    # databases with a fixed UUID
+    uuids = {
+        "examples": EXAMPLES_DB_UUID,
+    }
+
     if not database and always_create:
         logger.info("Creating database reference for %s", database_name)
-        database = models.Database(database_name=database_name)
+        database = models.Database(
+            database_name=database_name, uuid=uuids.get(database_name)
+        )
         db.session.add(database)
 
     if database: