Wow you did a lot, thanks chilimatic !! Ok I'm trying to be thorough, bear with me =) I wasn't even clear on what "on update CASCADE" meant when you said that, so I googled it and did a little reading. I didn't realize that was a thing you had to specify, I assumed the constraints would take care of that sort of thing automatically. If I run CREATE DATABASE gamelist DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; before I create my tables, do the tables inherit that character set and collation? And your post reminded me that I forgot to put NOT NULL on all of my ID's, so thanks for that. Ok, questions, starting from the top: Why did you use CREATE TABLE IF NOT EXISTS on them? Wouldn't you get an error anyway if you tried to create a table that already exists? And then how come you used NULL and then DEFAULT NULL on DeveloperID and NOT NULL on PublisherID ? I don't want any of my ID's to be NULL do I? Just trying to understand. And I'm still wrestling with the primary key's on the two intermediary tables, should I use composite keys or give each their own ID column like I originally had? Uniqueness is achieved either way, but I guess I don't understand the performance consequences well enough to know what's best. Also, what are the timestamps for? Is that something you've learned to do over time? Do you do that on every table? On the tables that contain foreign keys you specified the Indexes, is that also common practice? Does any indexing get done automatically or do you always have to specify? And then the constraints, why did you put CONSTRAINT ` ` Is the `` something to do with naming the constraint? I dropped and recreated the tables as you wrote them and it didn't like the NULL's in the Primary Keys, but once I switched those to NOT NULL it worked perfectly in the first 4 tables. And it failed to create the Game table saying Cannot add foreign key constraint. I double checked for typo's and it looked perfect to me. I took out the `` from the CONSTRAINTs and it worked. Once I got past those bits everything worked and now things are lit up on the foreign key tabs, what gives? Still don't understand why it didn't work when I did it. Is it because you typed out the constraints? The main difference I see is the ON UPDATE CASCADE part you added. I guess I'm not going to complain, I just don't understand why yours worked and mine didn't. And I mean it really worked with yours, the constraints worked and the relationships are visible in the new EER diagram right off the bat. Thank you so much for your help I appreciate it, now I'm just trying to absorb!