I designed tables like this:
table1: students --------------------- PK id name number ... --------------------- table2: students_score --------------------- PK FK student_id math_score english_score ... ---------------------
Question 1
If some students doesn't have scores at all, is it good table design?
Question 2
If it's good design, then how can I make FK as PK in MySQL? I can't find out how. Everytime I try to make a relation like above SQLYog says this error: Can't create table 'students.#sql-a31_2c8e' (errno: 150)
Thanks
Update
I found an answer of the question 2 from here. This was just a problem of type(int, signed int).
I would suggest something more along these lines:
Use
UNIQUE
andFOREIGN KEY
instead. It will allow you to use theFOREIGN KEY
with yourstudents_score
table, and maintain thestudent_id
column as unique.If some students doesn't have scores at all, is it good table design?
No, if some students doesn't have scores, there won't be (or shouldn't be) records on the students_score table. It is not a good design though, and that's why you get errors.
Your design should be something similar to:
Consider creating an
UNIQUE
index for your student_id on thestudents_score
table, but that will limit your number of records per student to one, which maybe is not what you want.