Making a database from an idea, can feel like making something out of nothing. Which means it seems hopeless when you try to start ... and gives you a great feeling when you get it working! OK, how's this for a start: The way we do is, we look at our form, and ask ourselves, what are the "objects" there? students contact info of student parents of student health of student attendance of student grades of student subjects attitudes and values activities terms / parts of terms So - those "objects" will probably be our tables. The convention is, to name our tables in plural: students. Where an object has one and only one characteristic (like name, gender, or birth year) we can make each of those a field of the table. * Where an object may possibly have more than one value in a field, we make a separate relational table. For instance: student_parents Some students may have only one parent. Some may have three. Or none, only a guardian! Not often, but it is good to be flexible where we can. And that's what "relational" is for! * Where an object could have different combinations of another object (students <--> subjects) It is good to make a separate table, contianing only foreign keys of student and subject, mapping them to each other. Things i've found helpful: - Start simple, go one step at a time. - Draw it out on paper first. Don't think about "tables", then our poor brains get all scrambled up in tech-think. Instead, think of like "boxes" you are going to put things into. - I would start with a box for students. Then see, which characteristics of students could go neatly into the students' box, and which would be managed better if we put them in their own boxes. Just work on that, and then let's take a look at it! - And don't worry, things will always change as we go on -- isn't that great? :) We will refine our tables the best we can, but once we start programming we will probly change some things. That's just how it works, and that's why we like php and mysql - because we can do that! --0--