diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java
index 25dcb0caea1e161e0c6964b5cc121495aed78130..db00195e049295bfd4b054f831ffd2c50f17f01c 100644
--- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java
+++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/service/SchemaServiceIntegrationTest.java
@@ -53,7 +53,9 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest {
         genesis();
         /* metadata database */
         MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_INTERNALNAME);
+        MariaDbConfig.dropDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME);
         MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO);
+        MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_DTO);
     }
 
     @Test
@@ -92,6 +94,46 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest {
         assertEquals(0, foreignKeys.size());
     }
 
+    @Test
+    public void inspectTableEnum_succeeds() throws TableNotFoundException, SQLException, QueryMalformedException {
+
+        /* test */
+        final TableDto response = schemaService.inspectTable(DATABASE_2_PRIVILEGED_DTO, "experiments");
+        assertEquals("experiments", response.getInternalName());
+        assertEquals("experiments", response.getName());
+        assertEquals(DATABASE_2_ID, response.getTdbid());
+        assertTrue(response.getIsVersioned());
+        assertEquals(DATABASE_2_PUBLIC, response.getIsPublic());
+        assertEquals(DATABASE_2_OWNER, response.getCreatedBy());
+        assertNotNull(response.getCreator());
+        assertEquals(DATABASE_2_OWNER, response.getCreator().getId());
+        assertEquals(USER_2_NAME, response.getCreator().getName());
+        assertEquals(USER_2_USERNAME, response.getCreator().getUsername());
+        assertEquals(USER_2_FIRSTNAME, response.getCreator().getFirstname());
+        assertEquals(USER_2_LASTNAME, response.getCreator().getLastname());
+        assertEquals(USER_2_QUALIFIED_NAME, response.getCreator().getQualifiedName());
+        assertNotNull(response.getCreator().getAttributes());
+        assertEquals(USER_2_AFFILIATION, response.getCreator().getAttributes().getAffiliation());
+        assertEquals(USER_2_THEME, response.getCreator().getAttributes().getTheme());
+        assertEquals(USER_2_LANGUAGE, response.getCreator().getAttributes().getLanguage());
+        assertEquals(USER_2_ORCID_URL, response.getCreator().getAttributes().getOrcid());
+        assertNull(response.getCreator().getAttributes().getMariadbPassword());
+        final List<IdentifierDto> identifiers = response.getIdentifiers();
+        assertNotNull(identifiers);
+        assertEquals(0, identifiers.size());
+        final List<ColumnDto> columns = response.getColumns();
+        assertNotNull(columns);
+        assertEquals(3, columns.size());
+        assertColumn(columns.get(0), null, null, DATABASE_2_ID, "id", "id", ColumnTypeDto.BIGINT, 19L, 0L, false, null, null);
+        assertColumn(columns.get(1), null, null, DATABASE_2_ID, "mode", "mode", ColumnTypeDto.ENUM, 3L, null, false, null, null);
+        assertEquals(2, columns.get(1).getEnums().size());
+        assertEquals(List.of("ABC", "DEF"), columns.get(1).getEnums());
+        assertColumn(columns.get(2), null, null, DATABASE_2_ID, "seq", "seq", ColumnTypeDto.SET, 5L, null, true, null, null);
+        assertEquals(3, columns.get(2).getSets().size());
+        assertEquals(List.of("1", "2", "3"), columns.get(2).getSets());
+        /* ignore rest (constraints) */
+    }
+
     @Test
     public void inspectTableFullConstraints_succeeds() throws TableNotFoundException, SQLException, QueryMalformedException {
 
@@ -348,8 +390,8 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest {
     }
 
     protected static void assertColumn(ColumnDto column, Long id, Long tableId, Long databaseId, String name,
-                                           String internalName, ColumnTypeDto type, Long size, Long d, Boolean nullAllowed,
-                                           Long dfid, String description) {
+                                       String internalName, ColumnTypeDto type, Long size, Long d, Boolean nullAllowed,
+                                       Long dfid, String description) {
         log.trace("assert column: {}", internalName);
         assertNotNull(column);
         assertEquals(id, column.getId());
diff --git a/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql b/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql
index 6279d887cc22e7112e663eb87242e9b7092b4a7f..88284978c5921f696dc6acfd821bde5856e6b6eb 100644
--- a/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql
+++ b/dbrepo-data-service/rest-service/src/test/resources/init/zoo.sql
@@ -38,6 +38,15 @@ create table names
     unique key (firstname, lastname)
 ) with system versioning;
 
+CREATE SEQUENCE seq_experiments;
+
+create table experiments
+(
+    id   bigint              not null default nextval(seq_experiments),
+    mode enum ('ABC', 'DEF') not null,
+    seq  set ('1','2','3')
+) WITH SYSTEM VERSIONING;
+
 create table likes
 (
     name_id bigint not null,
diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java
index 5be39d4f0ae9c5b3255be9782ed1a70ce1316831..ea6734bac35b5b6209a243adf29406fa9ad0f6d6 100644
--- a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java
+++ b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MariaDbMapper.java
@@ -754,6 +754,22 @@ public interface MariaDbMapper {
                 .databaseId(table.getTdbid())
                 .description(resultSet.getString(11))
                 .build();
+        if (column.getColumnType().equals(ColumnTypeDto.ENUM)) {
+            column.setEnums(Arrays.stream(resultSet.getString(8)
+                            .substring(0, resultSet.getString(8).length() - 1)
+                            .replace("enum(", "")
+                            .split(","))
+                    .map(value -> value.replace("'", ""))
+                    .toList());
+        }
+        if (column.getColumnType().equals(ColumnTypeDto.SET)) {
+            column.setSets(Arrays.stream(resultSet.getString(8)
+                            .substring(0, resultSet.getString(8).length() - 1)
+                            .replace("set(", "")
+                            .split(","))
+                    .map(value -> value.replace("'", ""))
+                    .toList());
+        }
         /* constraints */
         if (resultSet.getString(9) != null && resultSet.getString(9).equals("PRI")) {
             table.getConstraints().getPrimaryKey().add(PrimaryKeyDto.builder()
diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java
index 8b4e8ce13657453033c2ecf9e27c0450102795db..c357020a684be7b90120ef6dc0fad68a42dcd098 100644
--- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java
+++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mapper/MetadataMapperUnitTest.java
@@ -284,17 +284,17 @@ public class MetadataMapperUnitTest extends AbstractUnitTest {
         assertEquals("fk_location", table1fk.getName());
         assertEquals(ReferenceTypeDto.NO_ACTION, table1fk.getOnDelete());
         assertEquals(ReferenceTypeDto.NO_ACTION, table1fk.getOnUpdate());
-        assertEquals(TABLE_1_ID, table1fk.getTable().getId());
+        assertEquals(TABLE_2_ID, table1fk.getTable().getId());
         assertEquals(DATABASE_1_ID, table1fk.getTable().getDatabaseId());
-        assertEquals(TABLE_2_ID, table1fk.getReferencedTable().getId());
+        assertEquals(TABLE_1_ID, table1fk.getReferencedTable().getId());
         assertEquals(DATABASE_1_ID, table1fk.getReferencedTable().getDatabaseId());
         final ForeignKeyReferenceDto table1fkr = table1fk.getReferences().get(0);
         assertEquals(1L, table1fkr.getId());
         assertEquals(TABLE_2_COLUMNS_DTO.get(2).getId(), table1fkr.getColumn().getId());
-        assertEquals(TABLE_2_COLUMNS_DTO.get(2).getTable().getId(), table1fkr.getColumn().getTableId());
+        assertEquals(TABLE_2_COLUMNS_DTO.get(2).getTableId(), table1fkr.getColumn().getTableId());
         assertEquals(TABLE_2_COLUMNS_DTO.get(2).getDatabaseId(), table1fkr.getColumn().getDatabaseId());
-        assertEquals(TABLE_1_COLUMNS_DTO.get(0).getDatabaseId(), table1fkr.getReferencedColumn().getId());
-        assertEquals(TABLE_1_COLUMNS_DTO.get(0).getDatabaseId(), table1fkr.getReferencedColumn().getTableId());
+        assertEquals(TABLE_1_COLUMNS_DTO.get(0).getId(), table1fkr.getReferencedColumn().getId());
+        assertEquals(TABLE_1_COLUMNS_DTO.get(0).getTableId(), table1fkr.getReferencedColumn().getTableId());
         assertEquals(TABLE_1_COLUMNS_DTO.get(0).getDatabaseId(), table1fkr.getReferencedColumn().getDatabaseId());
         assertEquals(1, table1.getConstraints().getPrimaryKey().size());
         final PrimaryKeyDto table1pk = new ArrayList<>(table1.getConstraints().getPrimaryKey()).get(0);
diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java
index cf32bf4f005830c3aff5ff22b13dea03df26bb3e..156563a041c833376f850465032f28b69602e020 100644
--- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java
+++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java
@@ -72,9 +72,13 @@ public abstract class AbstractUnitTest extends BaseTest {
         /* DATABASE 2 */
         DATABASE_2.setSubsets(new LinkedList<>());
         DATABASE_2.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS, DATABASE_2_USER_3_READ_ACCESS)));
+        DATABASE_2_PRIVILEGED_DTO.setAccesses(new LinkedList<>(List.of(DATABASE_2_USER_2_WRITE_ALL_ACCESS_DTO, DATABASE_2_USER_3_READ_ACCESS_DTO)));
         DATABASE_2.setTables(new LinkedList<>(List.of(TABLE_5, TABLE_6, TABLE_7)));
         DATABASE_2.setViews(new LinkedList<>(List.of(VIEW_4)));
         DATABASE_2.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5)));
+        DATABASE_2_PRIVILEGED_DTO.setTables(new LinkedList<>(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO)));
+        DATABASE_2_PRIVILEGED_DTO.setViews(new LinkedList<>(List.of(VIEW_4_DTO)));
+        DATABASE_2_PRIVILEGED_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5_DTO)));
         TABLE_5.setDatabase(DATABASE_2);
         TABLE_5.setColumns(new LinkedList<>(TABLE_5_COLUMNS));
         TABLE_5.setConstraints(TABLE_5_CONSTRAINTS);
diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java
index fa47be8af84496f5fcbd96fb9c485a9fffdc3ceb..2d9a2f40a03a60b4650e8fa626d9ef17e7ab9eb4 100644
--- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java
+++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java
@@ -29,7 +29,6 @@ import at.tuwien.api.database.table.internal.PrivilegedTableDto;
 import at.tuwien.api.datacite.DataCiteBody;
 import at.tuwien.api.datacite.DataCiteData;
 import at.tuwien.api.datacite.doi.DataCiteDoi;
-import at.tuwien.api.error.ApiErrorDto;
 import at.tuwien.api.identifier.*;
 import at.tuwien.api.keycloak.CredentialDto;
 import at.tuwien.api.keycloak.CredentialTypeDto;
@@ -74,21 +73,15 @@ import at.tuwien.entities.maintenance.BannerMessageType;
 import at.tuwien.entities.semantics.Ontology;
 import at.tuwien.entities.user.User;
 import at.tuwien.test.utils.ArrayUtils;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.media.Content;
-import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.http.MediaType;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.web.bind.annotation.ResponseStatus;
 
 import java.io.File;
 import java.io.IOException;
-import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.nio.charset.Charset;
@@ -592,6 +585,8 @@ public abstract class BaseTest {
             .firstname(USER_2_FIRSTNAME)
             .lastname(USER_2_LASTNAME)
             .name(USER_2_NAME)
+            .qualifiedName(USER_2_QUALIFIED_NAME)
+            .attributes(USER_2_ATTRIBUTES_DTO)
             .build();
 
     public final static UserBriefDto USER_2_BRIEF_DTO = UserBriefDto.builder()
@@ -1257,14 +1252,6 @@ public abstract class BaseTest {
     public final static UUID DATABASE_2_OWNER = USER_2_ID;
     public final static UUID DATABASE_2_CREATOR = USER_2_ID;
 
-    public final static PrivilegedDatabaseDto DATABASE_2_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder()
-            .id(DATABASE_2_ID)
-            .name(DATABASE_2_NAME)
-            .internalName(DATABASE_2_INTERNALNAME)
-            .container(CONTAINER_1_PRIVILEGED_DTO)
-            .views(new LinkedList<>())
-            .build();
-
     public final static DatabaseCreateDto DATABASE_2_CREATE = DatabaseCreateDto.builder()
             .name(DATABASE_2_NAME)
             .isPublic(DATABASE_2_PUBLIC)
@@ -7178,6 +7165,22 @@ public abstract class BaseTest {
             .identifiers(new LinkedList<>())
             .build();
 
+    public final static PrivilegedDatabaseDto DATABASE_2_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder()
+            .id(DATABASE_2_ID)
+            .created(Instant.now().minus(1, HOURS))
+            .isPublic(DATABASE_2_PUBLIC)
+            .name(DATABASE_2_NAME)
+            .container(CONTAINER_1_PRIVILEGED_DTO)
+            .internalName(DATABASE_2_INTERNALNAME)
+            .exchangeName(DATABASE_2_EXCHANGE)
+            .identifiers(List.of(IDENTIFIER_5_DTO))
+            .tables(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO))
+            .views(List.of(VIEW_4_DTO))
+            .created(DATABASE_2_CREATED)
+            .creator(USER_2_DTO)
+            .owner(USER_2_DTO)
+            .build();
+
     public final static DatabaseDto DATABASE_2_DTO = DatabaseDto.builder()
             .id(DATABASE_2_ID)
             .created(DATABASE_2_CREATED)
@@ -7240,6 +7243,13 @@ public abstract class BaseTest {
             .user(USER_2)
             .build();
 
+    public final static DatabaseAccessDto DATABASE_2_USER_2_WRITE_ALL_ACCESS_DTO = DatabaseAccessDto.builder()
+            .type(AccessTypeDto.WRITE_ALL)
+            .hdbid(DATABASE_2_ID)
+            .huserid(USER_2_ID)
+            .user(USER_2_DTO)
+            .build();
+
     public final static DatabaseAccess DATABASE_2_USER_3_READ_ACCESS = DatabaseAccess.builder()
             .type(AccessType.READ)
             .hdbid(DATABASE_2_ID)
@@ -7248,6 +7258,13 @@ public abstract class BaseTest {
             .user(USER_3)
             .build();
 
+    public final static DatabaseAccessDto DATABASE_2_USER_3_READ_ACCESS_DTO = DatabaseAccessDto.builder()
+            .type(AccessTypeDto.READ)
+            .hdbid(DATABASE_2_ID)
+            .huserid(USER_3_ID)
+            .user(USER_3_DTO)
+            .build();
+
     public final static DatabaseAccess DATABASE_2_USER_3_WRITE_OWN_ACCESS = DatabaseAccess.builder()
             .type(AccessType.WRITE_OWN)
             .hdbid(DATABASE_2_ID)
@@ -7555,8 +7572,8 @@ public abstract class BaseTest {
                             .referencedColumn(TABLE_1_COLUMNS.get(0))
                             .foreignKey(null) // set later
                             .build())))
-                    .table(TABLE_1)
-                    .referencedTable(TABLE_2)
+                    .table(TABLE_2)
+                    .referencedTable(TABLE_1)
                     .onUpdate(ReferenceType.NO_ACTION)
                     .build())))
             .uniques(new LinkedList<>(List.of(Unique.builder()