I would like to know is there is any way to match mode 3/a code (which is assigned by ATC to aircraft) and ICAO address of the aircraft. I mean how mode 3/a code is assigned to each aircraft by ATC? Is that unique for that day or certain time period? Is it possible that same address is assigned to more than one aircraft? Is there any relation with aircraft's own 24 bit ICAO address?
There is no relation between the ICAO 24 bit aircraft address and the 12 bit Mode A code. The 24 bit address is unique to the aircraft and stays with the aircraft as long as the aircraft has the same registration. The Mode A code changes from flight to flight and often during flight.
The Mode A code is assigned by ATC based on a local or regional assignment scheme. There are Mode A codes that can be used by many aircraft in one area simultaneously, such as VFR codes (1200, 7000) for flights that are not under air traffic control. For IFR flights, the Mode A code is unique for the control area at that given time. When aircraft move from control area to control area, a code conflict can occur when two aircraft with the same code end up in the same area. In such a case one aircraft will be given a new code. There are various schemes to prevent code conflicts from happening too frequently. See this answer for more info.
Quite recently (in the last couple of years) IFR flights in Europe can operate under conspicuity code 1000 which is a signal to the flight data processing system to use the Mod S downlinked aircraft ID for identification and flightplan association. This allows many aircraft flying in Mode S surveillance airspace to use code 1000 simultaneously, freeing up Mode A codes and reducing the number of code conflict.