我想要实现的目标:具有用户帐户和累积结果表的测验系统。
过程:
- 用户设置帐户 - 用户登录 - 用户完成测验 -Answers进入结果表 - 显示结果表
我的数据库结构:
表1:用户
user_id
username
password
email
表2:测验
quiz_id
title
表3:问题
question_id
quiz_id
question
question_notes
表4:答案
answer_id
question_id
user_id
answer
answer_notes
表5:回复
response_id
quiz_id
user_id
submit_time
问题将通过SELECT从表3输出。
我正在寻找的一些指示是如何确保每个测验条目的关系是一致的,所以当我运行INSERT语句时,ID是一致的(因此表3和表4的“question_id”是同样,例如)
我想我会为表4和表5提供2个INSERT语句。在这些插入语句中,有没有办法确保关系匹配?
我在查看如何将数据输入数据库时遇到一些麻烦,一旦我弄清楚这一点,我就可以解决使用数据的问题。
任何关于体面的关键点或对可能的表单处理的一些洞察都会非常感激。
非常感谢
答案 0 :(得分:1)
MySQL中有LAST_INSERT_ID()
函数(PHP中的mysql_insert_id()),它将从上一次插入查询返回auto_increment id。这样可以保持一致性。
请点击此处了解更多详情: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id
答案 1 :(得分:0)
Foreign keys和transactions强制执行referential integrity ...
例如:
<强>答案强>
question_id is a foreign key to question.id
user_id is a foreign key to user.id
(These are set in the table definition)
你插入像这样的答案(草率伪代码):
begin transaction
int qid = select id from question
int uid = select id from user
insert (qid,uid,...) into answers
commit transaction