If I used just a number in the ID field, Project 100 and Contact 100 would end up sharing notes.
I'm afraid I don't get that. From your post, you are using just a number and thus Project 100 and contact 100 should match to each other if you have defined a relationship linking by those fields (But why would you match a project number field to a contact number field in a relationship?). The fact that you have entered this number into a field of type text doesn't affect that issue one way or the other.
I've never run any kind of test to compare the relative "speed" of relationships based on text fields vs. relationships based on number fields. If someone has, I'd be interested to see the results of such a test. I'd be suprised, though if there is a signficant difference for databases of Moderate size, but could easily be wrong here.
Maybe I didn't explain very well... My notes table has a field called _id_Owner and then I use the following relationships:
Contact::id = Contactnotes::_id_Owner
Project::id = Projectnotes::_id_Owner
Where Contactnotes and Projectnotes are both occurrences of the same notes table. This allows me to quickly add multiple notes to any part of the system as required. Sounds like it won't be/cause an issue - so I'll carry on as planned!
Yes, but the fact that you use text instead of number makes no obvious difference in which records match to which here. Which made your statement that you couldn't use fields of type number here because then "Project 100 and Contact 100 would end up sharing notes" a bit confusing, and it still is.
I prefer number data types for serial number fields as it makes it easier to avoid issues down the road when I work with the database. When I return to the DB 6 months later, I may not remember nor notice that the fields are of type text instead of number and then encounter problems when I reference the field with expressions or define new relationships while assuming that the fields are of type number rather than when they are of type text.
Say, I want to display related records in a portal, sorted so that the most recently created record is listed at the top of the portal. If I've already defined the field to be of type number, I can sort the portal by the ID number field in descending order. If it is of type text, this doesn't work. This is just one of many little differences that you have to deal with if you use text, that you avoid completely if you stick with number type fields.