The particulars will always be determined by your database needs, however, it is rather common for each different table to have its own ID, which is the primary key for the table. If a table has a primary key, then no two records can have the same value as the primary key. The primary key is simply a way to ensure that all records are unique.
It is common to have the database management system, such as MS Access, MS SQL Server, mySQL, etc. generate the primary key. It is usually just a sequential sequence of integers (1, 2, 3, 4, etc). You just need to make sure to tell the database management system which field is the primary key and it takes care of generating the values.
It is possible to use composite keys, but it would not work in your situation with the supply table because there is a one-to-many relationship between supply table and the event table. Secondly, there is a direct relationship between the event table and the wedding table, so using the wedding id as part of the composite key does not help to make the key unique. A composite key would be more appropriate in a situation where there are two one-to-many relationships from one table to two or more separate tables and there is only one record that is associated for any two particular records. The composite keys you have in the Event_Guest and Event_Venue tables are good uses of composite keys.
Last edited by timothybard; Apr 19th, 2009 at 11:29 pm.