| | 141 | For a decomposition to be lossless, the common attributes between two joined relations must be a superkey in at least one of them. We verify this for all connected relations: |
| | 142 | |
| | 143 | CHAPTER ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 144 | |
| | 145 | STORY ⋈ USERS: common attribute user_id → user_id is the primary key of USERS |
| | 146 | |
| | 147 | READING_LIST ⋈ USERS: common attribute user_id → user_id is the primary key of USERS |
| | 148 | |
| | 149 | AI_SUGGESTION ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 150 | |
| | 151 | COMMENT ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 152 | |
| | 153 | COMMENT ⋈ USERS: common attribute user_id → user_id is the primary key of USERS |
| | 154 | |
| | 155 | STATUS ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 156 | |
| | 157 | CONTENT_TYPE ⋈ NOTIFICATION: common attribute notification_id → notification_id is the primary key of NOTIFICATION |
| | 158 | |
| | 159 | SUGGESTION_TYPE ⋈ AI_SUGGESTION: common attribute suggestion_id → suggestion_id is the primary key of AI_SUGGESTION |
| | 160 | |
| | 161 | LIKES ⋈ USERS: common attribute user_id → user_id is the primary key of USERS |
| | 162 | |
| | 163 | LIKES ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 164 | |
| | 165 | COLLABORATION ⋈ USERS: common attribute user_id → user_id is the primary key of USERS |
| | 166 | |
| | 167 | COLLABORATION ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 168 | |
| | 169 | ROLES ⋈ USERS: common attribute user_id → user_id is the primary key of USERS |
| | 170 | |
| | 171 | ROLES ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 172 | |
| | 173 | PERMISSION_LEVEL ⋈ USERS: common attribute user_id → user_id is the primary key of USERS |
| | 174 | |
| | 175 | PERMISSION_LEVEL ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 176 | |
| | 177 | HAS_GENRE ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 178 | |
| | 179 | HAS_GENRE ⋈ GENRE: common attribute genre_id → genre_id is the primary key of GENRE |
| | 180 | |
| | 181 | READING_LIST_ITEMS ⋈ READING_LIST: common attribute list_id → list_id is the primary key of READING_LIST |
| | 182 | |
| | 183 | READING_LIST_ITEMS ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 184 | |
| | 185 | NOTIFY ⋈ USERS: common attribute user_id → user_id is the primary key of USERS |
| | 186 | |
| | 187 | NOTIFY ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 188 | |
| | 189 | NOTIFY ⋈ NOTIFICATION: common attribute notification_id → notification_id is the primary key of NOTIFICATION |
| | 190 | |
| | 191 | NEED_APPROVAL ⋈ AI_SUGGESTION: common attribute suggestion_id → suggestion_id is the primary key of AI_SUGGESTION |
| | 192 | |
| | 193 | NEED_APPROVAL ⋈ STORY: common attribute story_id → story_id is the primary key of STORY |
| | 194 | |
| | 195 | NEED_APPROVAL ⋈ CHAPTER: common attribute chapter_id → chapter_id is the primary key of CHAPTER |
| | 196 | |
| | 197 | In every case the common attributes form a primary key in at least one of the joined relations, so all joins are lossless and no information is lost during decomposition. |
| | 198 | |