I am really lost on how to even look up help on this.

I have a few tables Client, Site and Waterbody. These are fine and all great. But I have added a new table Quote Request.

The issue is a quote request may include a client and if it does it may contain a site and if it does it may contain a water body...but then again may not contain any of these.

I am wondering how to structure this. If I do:

Code:
public int QuoteRequestID { get; set; }
 
        [Display(Name ="Request Date")]
        public DateTime RDate { get; set; }
 
        [Display(Name ="Client")]
        public int? ClientID { get; set; }
 
        [Display(Name ="Site")]
        public int? SiteID { get; set; }
 
        [Display(Name ="Waterbody")]
        public int? WaterBodyID { get; set; }
 
        [Display(Name ="Requested by")]
        public string Requested { get; set; }
 
        [Display(Name ="Contact Detail")]
        public string ConDetail { get; set; }
 
        [Required]
        [StringLength(500, MinimumLength = 15)]
        [Display(Name ="Quote Request Description")]
        public string QDescription { get; set; }
 
       // [Display(Name ="Any Documentation, Drawings, Specification")]
      //  public IFormFile Documents { get; set; }
 
      //  [Display(Name ="Photos for Quote")]
      //  public IFormFile Pictures { get; set; }
 
        [Display(Name ="Is there a Budget?")]
 
        public double? Budget { get; set; }
 
        [Display(Name ="Closing Date")]
        public DateTime CloseDate { get; set; }
 
        //public int? QuoteID { get; set; }
 
        public Client Client { get; set; }
 
        public Site Site { get; set; }
 
        public WaterBody WaterBody { get; set; }
 
        public Quote Quote { get; set; }
Then client, site and waterbody are required on creating a new record. But I want them optional.

I am also concerned that if I unbind the table and leave these as simply numbers I may not be able to attach the record to the Client View or the Site View and so on.

Am I overthinking? Should I simply unbind then query on the ClientID when in Client View for example?