Select the points for each district. If all the points are in one shapefile you can use Select by Attributes to isolate by district. Repeat for each district.
Use Create Theissen Polygons to create your sub-district Theissen polygons (these are also known as Voronoi polygons).
Important note from ESRI docs:
The outside boundary of the output Thiessen polygon feature class is
the extent of the point input features plus an additional 10%. If the
Extent environment is set to a specific extent window, this tool tool
will use the environment setting to set its outside boundary.
The extent draws a square box around the farthest N,S,E,W points in your data. So depending on the size of your district you will probably want to increase this extent value to anywhere from 50% to 300%. All outside borders (extending lines) of your Theissen polygons should come out far enough to touch the district polygon boundaries. You normally click on the Environments... button to set this value.
Clip your sub-district polygons to your district polygons. This will cut off the "long edges" of the Theissen polygons. You should now have a set of Theissen polygons that "fits" each of your districts exactly.
You can now use Spatial Join to bring over attributes from either the district polygons or the points. Do both.
Use Merge to combine your district/sub district polygons together. Now you have one big sub districts dataset that you can also symbolize based on district because of the attributes from the Spatial Join.