如何避免表之间的循环依赖

时间:2015-10-16 11:00:07

标签: database-design

我正在设计在线测试应用程序,用户登录,参加考试并查看分数。很明显,我们需要有问答表

我的设计在下面结束

QUESTION 
--------
ID
ANSWER_ID (ANSWER FOR THIS QUESTION)
TEXT
:

ANSWER

ID
TEXT
QUESTION_ID 

例如: - 问题有4个选项,因此四个答案行将具有相同的问题ID。和问题表将具有实际的answer_id(大于4)

附图[{3}}

但在上面的情况下,它具有循环依赖性,当我使用像hibernate这样的数据库框架来处理数据时,我觉得会产生问题。寻找上述要求的替代设计

1 个答案:

答案 0 :(得分:2)

问问自己,这两个表之间的关系是什么?一个问题可以有多个答案吗?答案有多个问题吗?如果是,您有m:n关系。如果您只回答了第一个问题,那么您就有1:n的关系。

如果您有 @Override public void onReceive(final Context context, Intent intent) { TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); telephony.listen(new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); if(incomingNumber.contains("CHECKING NUMBER")){ AudioManager audio_mngr = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); audio_mngr.setRingerMode(AudioManager.RINGER_MODE_NORMAL); } System.out.println("incomingNumber : "+incomingNumber); } },PhoneStateListener.LISTEN_CALL_STATE); } ,则1:n relationship表格中不需要answer_id。加入将像

一样工作
question

如果您有... FROM question q JOIN answer a ON q.question_id = a.question_id ... ,则需要第三个表来解析关系(它称为联结表或桥表)。

<强>表格

问题(question_id)
回答(answer_id)
question_2_answer(question_id,answer_id)

<强>加入:

m:n relationship
顺便说一句,你不需要... FROM question q JOIN question_2_answer q2a ON q.question_id = q2a.question_id JOIN answer a ON a.answer_id = q2a.answer_id ... 作为数据类型,只需BIGINT即可,或者你会有超过2147483647个问题/答案吗?