Is it unusual for one table to be used to reference alothrr table though?
Like in my project I have a table in dbgrid that serves sort of as a table of contents for viewing what is in larger table.
For instance something to look up the history of multiple events which happened on certain date..
Not unsual at all. On the contrary: It's the main principle behind "Normalization" --> "Don't store Data twice (or more times)"
Imagine a Database having the Addresses of all Citizens of China, and you want to store the Adresses of Citizens of Shanghai, China (Shanghai has some 25 Million Citizens)
If you would have only one table with Fields like (very simplified!!)
First Name, Last Name, Street, ZIP-Code, City
What's the Consequence?
Exactly, you would have 25 Million times the word/text/string "Shanghai" in that table
Since in this era Unicode is common it would mean, that each Entry of "Shanghai" would take up 16 Bytes (or more if you use UTF32)
25,000,000 x 16 Bytes = 400,000,000 Bytes (400MB) (DON'T START ON CONVERSION OF BYTE TO MB!! THIS IS JUST TO ILLUSTRATE)
Result: You "wasted" 399,999,984 Bytes
In a relational model you would have a Table "City" which has only one single Record of "Shanghai" with an additional Field "ID" which would be an Auto_ID Integer Primary Key.
That additional Field "ID" takes up 4 (or 8 ) Bytes, depending which Integer-Type you use.
So for this entry, we need 20 Bytes (4 Bytes for the ID, 16 Bytes for "Shanghai")
In a second table you would actually have the Addresses of the People with Fields like
First Name, Last Name, Address, ZIP-Code, ForeignKeyToCity_ID
And in that last Field "ForeignKeyToCity_ID" you store the Value of the ID you get from "City", which is again only 4 (or 8 ) Bytes
Result: a "save" of 300,000,000 bytes (4 Bytes instead of 16)
Yes, i'm aware that this can be broken down even further (ZIP-Code in its own table), but as i said: This is to illustrate, WHY you (want) to have/use Keys referencing other Tables