I searched a lot but found nothing. 

My scenario is: 

I have database with two tables `table_item` and `table_item_linked`. `table_item` has many items. User will come and add item(s). Later other user come and `link` one item with other item(s) via a form with two `dropdown`.

What I did so far is: 

**Structure of `table_item`:**

```
+-------------------+
| table_item        |
+-------------------+
| item_id (Primary) |
| others            |
| ....              |
| ....              |
| ....              |
+-------------------+

```

**Structure of `table_item_linked`:**

```
+---------------------+
| table_item_linked   |
+---------------------+
| linked_id           | (Primary)
| item_id             | (Foreign key referencing -> item_id of table_item) 
| linked_items        | (here I need to store ids of linked items)    
| linked_by           | (referencing to user_id of user_table)           
| linked_timestamp    | (timestamp) 
+---------------------+

```

If I have items in `table_item` like: 
`A` `B` `C` `D` `E` `F` `G` `H`

When I link `D` with `G`

I can successfully fetch `G` when I am fetching `D` or vice versa. But problem came when I

Link `H` with `G`

So I must fetch `D` `H` while fetching `G`.

(`D` `H` `G` are linked in all means and upon fetching one, the remaining two must be attached and fetched)

It is like a multiple relation (Many to Many relationship). 

Guys I know there must be professional way to do it. I will like to have any guidance. I can even change my database structure. 

**PS:** 
Please don't suggest to add `#tag` as one item is exactly similar to the other linked. 

**UPDATES**
-----------

Frontend looks like this. If I intend to link two records I will have two `dropdowns` as shown:
[![Two dropdowns for linking records with one another](https://i.stack.imgur.com/UcYG7.jpg)](https://i.stack.imgur.com/UcYG7.jpg)

And If I check details of record `A`
[![Record A Details](https://i.stack.imgur.com/k6jFi.jpg)](https://i.stack.imgur.com/k6jFi.jpg)

And If I check details of record `B`
[![Record B Details](https://i.stack.imgur.com/hY4hz.jpg)](https://i.stack.imgur.com/hY4hz.jpg)

And If I check details of record `C`
[![Record C Details](https://i.stack.imgur.com/u86Jl.jpg)](https://i.stack.imgur.com/u86Jl.jpg)