It is a best data management practice to add restrictions to fields if they have them. So adding the maxlen is "recommended"
Adding the maxlen won't result in wasted storage since storage is not reserved based on field definitions. If that were the case, in your particular scenario, you'd be actually saving storage since all string fields are defaulted to maxlen = 50 if you don't specify a value.
Maybe I'm missing something, but, beyond how nulls are treated, if you want parent to be unique within this definition you must define a unique index on parent (alone). The index you have defined only guarantees that the combination (parent, name) will be unique.
Even if you declare the property as required it wouldn't still solve the uniqueness requirement.







Have you tried "jobbing" the routine from the CSP?