Hey

I can help with the normalisation part of your post.
Before continuing, I strongly recommend checking out a post I wrote on database normalisation:
Database NormalizationIt covers all of the key concepts with examples. Knowing the difference between 2NF, 3NF, etc. is just a case of understanding the different types of dependencies - functional, partial, and transitive.
Also when designing ERD's our teacher says that it will always fit into 3 tables.
This isn't true at all. You could have an ERD that has 5 or so entities with a bunch of relationships, or you could have PLAYER <plays-in> TEAM (which is a 1-M relationship hence you will only have two tables in this example).
Example; We would be given data that we could split into Products, Customers and then link them with a purchases table in between. Would VCAA ask questions on the exam that would always fall into that form or it just depends on what is given and what you can do with it?
Depends entirely on what is asked by VCAA. I mean VCAA could ask a question where you need to have 2, 3, 4, N number of tables. So I wouldn't be trying to fit every possible Q into some magical form where 3 tables works for everything. Always keep an open mind when working with database tables

As for the case study you have shared:
A few notes before I share my solution:
* We need to create some PKs because MemberName and BoatName aren't candidate keys. A candidate key is a field/attribute that can be used as a primary key, i.e. it is unique. We cannot guarantee that generic names are going to be unique.
* TotalFeesDue is a calculated field and doesn't belong in the database schema. It can be computed by a simple query when doing the reporting.
* Don't forget to ensure each field has atomic values to satisfy 1NF. i.e. break up the MemberName field and Address_suburb fields.
Can a member own more than one boat? Let's assume they can't. But if they could, you would have a M-M relationship and things would have to change.
Functional dependencies:
MemberID -> MemberName, Address, suburb, State, Gender, memType
BoatID -> BoatName, BStorageFees
memType -> fees (if you don't have a memType table, you have a transitive dependency, hence you violate third normal form). This design avoids redundancy. What if this yacht club had 5000 members? We would have redundancy all over the place. What if we had to update the values to reflect a change in the business rule? This puts an unnecessary load on the database query engine.
Now to my solution.
Assuming a Member can only own one Boat.
Primary keys are underlined. Foreign keys are in italics.
MEMBER: (
MemberID, FirstName, LastName, Address, Suburb, State,
memType, boatID)
BOAT: (
BoatID, BoatName, BStorageFees)
MEMTYPE: (
MemType, Fees)
My homework question for you:
How would you structure the tables if one member could own more than one boat?