diff --git a/fda-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java b/fda-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
index 62032b642074fa85bbb52f95462e6c9e24f7ee71..3ce1c7a1bed2e4ed0d5119d5e8c9bf36eccc5562 100644
--- a/fda-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
+++ b/fda-identifier-service/rest-service/src/test/java/at/tuwien/service/IdentifierServiceIntegrationTest.java
@@ -123,8 +123,6 @@ public class IdentifierServiceIntegrationTest extends BaseUnitTest {
         assertEquals(IDENTIFIER_2_TITLE, response.getTitle());
         assertEquals(IDENTIFIER_2_DESCRIPTION, response.getDescription());
         assertEquals(2, response.getCreators().size());
-        assertEquals(1, response.getRelatedIdentifiers().size());
-        assertEquals(IDENTIFIER_2_ID, response.getRelatedIdentifiers().get(0).getIdentifier().getId());
     }
 
     @Test
diff --git a/fda-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RelatedIdentifierRepository.java b/fda-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RelatedIdentifierRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..4e735007ab69f5ca5b6c9e1e4fa0007a4cbeb3a3
--- /dev/null
+++ b/fda-identifier-service/services/src/main/java/at/tuwien/repository/jpa/RelatedIdentifierRepository.java
@@ -0,0 +1,11 @@
+package at.tuwien.repository.jpa;
+
+import at.tuwien.entities.identifier.RelatedIdentifier;
+import at.tuwien.entities.identifier.RelatedIdentifierKey;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface RelatedIdentifierRepository extends JpaRepository<RelatedIdentifier, RelatedIdentifierKey> {
+
+}
diff --git a/fda-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java b/fda-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
index 6577195e2b7393a1ccdbe30afe9c37980f5c3d96..f96736a2e8c772446a74cb099d8e75b17873464f 100644
--- a/fda-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
+++ b/fda-identifier-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java
@@ -16,6 +16,7 @@ import at.tuwien.gateway.QueryServiceGateway;
 import at.tuwien.mapper.DocumentMapper;
 import at.tuwien.mapper.IdentifierMapper;
 import at.tuwien.repository.jpa.IdentifierRepository;
+import at.tuwien.repository.jpa.RelatedIdentifierRepository;
 import at.tuwien.service.DatabaseService;
 import at.tuwien.service.IdentifierService;
 import at.tuwien.service.UserService;
@@ -39,16 +40,19 @@ public class IdentifierServiceImpl implements IdentifierService {
     private final IdentifierMapper identifierMapper;
     private final QueryServiceGateway queryServiceGateway;
     private final IdentifierRepository identifierRepository;
+    private final RelatedIdentifierRepository relatedIdentifierRepository;
 
     public IdentifierServiceImpl(UserService userService, DocumentMapper documentMapper,
                                  DatabaseService databaseService, IdentifierMapper identifierMapper,
-                                 QueryServiceGateway queryServiceGateway, IdentifierRepository identifierRepository) {
+                                 QueryServiceGateway queryServiceGateway, IdentifierRepository identifierRepository,
+                                 RelatedIdentifierRepository relatedIdentifierRepository) {
         this.userService = userService;
         this.documentMapper = documentMapper;
         this.databaseService = databaseService;
         this.identifierMapper = identifierMapper;
         this.queryServiceGateway = queryServiceGateway;
         this.identifierRepository = identifierRepository;
+        this.relatedIdentifierRepository = relatedIdentifierRepository;
     }
 
     @Override
@@ -114,15 +118,13 @@ public class IdentifierServiceImpl implements IdentifierService {
                 })
                 .collect(Collectors.toList()));
         if (data.getRelatedIdentifiers() != null) {
-            entity.setRelatedIdentifiers(data.getRelatedIdentifiers()
-                    .stream()
-                    .map(r -> {
+            data.getRelatedIdentifiers()
+                    .forEach(r -> {
                         final RelatedIdentifier id = identifierMapper.relatedIdentifierCreateDtoToRelatedIdentifier(r);
-                        id.setIdentifier(entity);
+                        id.setIid(entity.getId());
                         id.setCreator(creator);
-                        return id;
-                    })
-                    .collect(Collectors.toList()));
+                        relatedIdentifierRepository.save(id);
+                    });
         }
         final Identifier identifier = identifierRepository.save(entity);
         log.info("Created identifier with id {}", identifier.getId());
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
index 54cd3db2f7951757838422e8aa308cc9f4ec0579..b4539dfd45fcfdc80395bb991ef4fdbdb3613de7 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java
@@ -84,9 +84,6 @@ public class Identifier {
     })
     private Database database;
 
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "identifier")
-    private List<RelatedIdentifier> relatedIdentifiers;
-
     @Column(nullable = false, columnDefinition = "enum('EVERYONE', 'TRUSTED', 'SELF')")
     @Enumerated(EnumType.STRING)
     private VisibilityType visibility = VisibilityType.SELF;
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java
index 90e22a1d1d922ae0dc6c8a415bed4eaf25b17a7a..01ec086b6a3b540eb421c9003c41574730934c87 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifier.java
@@ -18,15 +18,17 @@ import java.time.Instant;
 @ToString
 @AllArgsConstructor
 @NoArgsConstructor
+@IdClass(RelatedIdentifierKey.class)
 @Where(clause = "deleted is null")
+@EqualsAndHashCode(onlyExplicitlyIncluded = true)
 @EntityListeners(AuditingEntityListener.class)
-@SQLDelete(sql = "update mdb_related_identifiers set deleted = NOW() where id = ?")
-@Table(name = "mdb_related_identifiers")
+@Table(name = "mdb_related_identifiers", uniqueConstraints = {
+        @UniqueConstraint(columnNames = {"id", "iid"})
+})
 public class RelatedIdentifier {
 
     @Id
     @EqualsAndHashCode.Include
-    @ToString.Include
     @GeneratedValue(generator = "related-identifier-sequence")
     @GenericGenerator(
             name = "related-identifier-sequence",
@@ -35,6 +37,10 @@ public class RelatedIdentifier {
     )
     private Long id;
 
+    @Id
+    @EqualsAndHashCode.Include
+    private Long iid;
+
     @Column(nullable = false)
     private String value;
 
@@ -52,13 +58,6 @@ public class RelatedIdentifier {
     })
     private User creator;
 
-    @ToString.Exclude
-    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
-    @JoinColumns({
-            @JoinColumn(name = "identifier_id", referencedColumnName = "id")
-    })
-    private Identifier identifier;
-
     @Column(nullable = false, updatable = false)
     @CreatedDate
     private Instant created;
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifierKey.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifierKey.java
new file mode 100644
index 0000000000000000000000000000000000000000..d992225c9d7e34e76cb6ac7d70ec285494098fd4
--- /dev/null
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/identifier/RelatedIdentifierKey.java
@@ -0,0 +1,14 @@
+package at.tuwien.entities.identifier;
+
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+@EqualsAndHashCode
+public class RelatedIdentifierKey implements Serializable {
+
+    private Long id;
+
+    private Long iid;
+
+}
diff --git a/fda-metadata-db/setup-schema.sql b/fda-metadata-db/setup-schema.sql
index 8bd8a1da2f7c1e4205deae396fa636ac17bdc5de..1aafd0a15132ae6a4a2090bea626d2bd1ca9d730 100644
--- a/fda-metadata-db/setup-schema.sql
+++ b/fda-metadata-db/setup-schema.sql
@@ -478,7 +478,7 @@ CREATE TABLE IF NOT EXISTS mdb_identifiers
 CREATE TABLE IF NOT EXISTS mdb_related_identifiers
 (
     id            bigint                               DEFAULT nextval('mdb_related_identifiers_seq'),
-    identifier_id bigint                      NOT NULL,
+    iid           bigint                      NOT NULL,
     value         text                        NOT NULL,
     type          varchar(255),
     relation      varchar(255),
@@ -486,8 +486,8 @@ CREATE TABLE IF NOT EXISTS mdb_related_identifiers
     created_by    bigint                      NOT NULL,
     last_modified timestamp without time zone,
     deleted       timestamp without time zone,
-    PRIMARY KEY (id), /* must be a single id from persistent identifier concept */
-    FOREIGN KEY (identifier_id) REFERENCES mdb_identifiers (id),
+    PRIMARY KEY (id, iid), /* must be a single id from persistent identifier concept */
+    FOREIGN KEY (iid) REFERENCES mdb_identifiers (id),
     FOREIGN KEY (created_by) REFERENCES mdb_users (UserID)
 );