Это один из двух способов сделать это.
Другой способ - ввести третью таблицу Effects_On_Objectives, которая идентифицирует «причину или следствие» и цель, и другой столбец, чтобы определить, какой тип отношений имеют эти две строки. (Действительно, вам может понадобиться еще одна таблица, EffectTypes, для управления типами.)
Table: Effect_Types
Effect_Type INT NOT NULL PRIMARY KEY
Description VARCHAR(45) NOT NULL
Table: Effects_On_Objectives
idEffects_Causes INTEGER NOT NULL REFERENCES Effects_Causes
idObjectives INTEGER NOT NULL REFERENCES Objectives
Effect_Type INTEGER NOT NULL REFERENCES Effect_Types
Таблицы того же общего типа, что и таблица Effects_On_Objectives, иногда называют «соединительными таблицами» или «ассоциативными таблицами».
Преимущество оригинального подхода в том, что вы легко можете сделать оба отношения обязательными; недостаток в том, что трудно (э) добавить новые отношения. Преимущество подхода с использованием соединительной таблицы состоит в том, что вы можете сделать любое отношение необязательным и легко добавлять новые типы отношений (типы эффектов).