[英]Foreign key as Primary key
我設計了這樣的表格:
table1: students --------------------- PK id name number ... --------------------- table2: students_score --------------------- PK FK student_id math_score english_score ... ---------------------
問題 1
如果有些學生根本沒有分數,那是不是很好的表格設計?
問題2
如果它是好的設計,那么我怎樣才能在 MySQL 中將 FK 作為 PK? 我不知道怎么做。 每次我嘗試像上面那樣建立關系時,SQLYog 都會說這個錯誤: Can't create table 'students.#sql-a31_2c8e' (errno: 150)
謝謝
更新
我從這里找到了問題 2的答案。 這只是類型(int,signed int)的問題。
我會建議更多類似的東西:
table1: students
---------------------
PK id
name
number
...
---------------------
table3: classes
---------------------
pk id
name
table2: students_score
---------------------
fk student_id
fk class_id
score
PK(student_id, class_id)
請改用UNIQUE
和FOREIGN KEY
。 它將允許您將FOREIGN KEY
與students_score
表一起使用,並將student_id
列保持為唯一。
如果有些學生根本沒有分數,那是不是很好的表格設計?
不,如果某些學生沒有分數,students_score 表中不會有(或不應該有)記錄。 這不是一個好的設計,這就是為什么你會出錯。
您的設計應該類似於:
students
---------------------
PK id
name
number
students_score
---------------------
FK student_id
math_score
english_score
...
考慮在students_score
表上為你的 student_id 創建一個UNIQUE
索引,但這會將每個學生的記錄數限制為一個,這可能不是你想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.