Must Related Fields (that are lists) be Separate Data Type?

Is the only way to have related fields (that are lists) within a data type to actually build another data type with the fields and then add those as a field list?

Example, let’s say I have a data type of “Contracts” that stores some information on a businesses contract with a vendor. Within that contract I want to store the rates they are paying and their can be multiple rates in one contract. I have a field for “rate type” which could be fixed fee, hourly, annual, percentage, etc., and then a “rate amount” that stores the fixed amount, hourly fee, percentage, etc. In one example, say a consulting project, you could have an hourly fee of $100/hr for project management services and a 25% fee applied to any cost savings produced from the project.

I want to make sure the 25% aligns with the percentage rate type and the $100 aligns with the hourly rate type.

Do I need to create a “Rate Schedule” data type just to store these and then link them back to the “Contracts” data item? Would be nice if you could link fields as if a table within a data type…

Another quick example - say you are storing some metric and a user can input an actual recorded value maybe once every quarter. You want to show the historic values with the date recorded. Would the date and value need to be in a separate data type and then associated with the person or metric data type?

Sorry, this is probably really basic…just the first time I’ve started building a bunch of related lists and thought about this…