我脑子里有一个域模型,我在构建SubSonic兼容的数据库模式时遇到了问题,如果你能告诉我你将如何使用3个实体(例如是SqlServer或MySql对我无关紧要)
主题 - 代表教育主题(例如三角学,微积分)。 道具名称
技术 - 代表用于解决练习的技术(例如余弦定律,毕达哥拉斯定理) 道具名称,父亲主题
练习 - 代表某个问题。 道具 - 主题,技巧(仅用于解决练习的那些),DifficultyLevel(enum-easy,meduim,hard),Answer(int)。
所以: 多对多 - 运动 - >主题,练习 - >技术 一对多 - 主题 - >技术。 而且DifficultyLevel是一个枚举。
一旦我开始掌握它,我一定会为文档做出贡献。
答案 0 :(得分:1)
最简单的方法是在多对多关系之间构建桥接表。
Table: Subject
Columns: Subject_ID (PK)
Name (UK)
Table: Technique
Columns: Technique_ID (PK)
Name (UK)
Subject_Name (FK)
Table: Exercise
Columns: Exercise_ID (PK)
Difficulty_ID (FK)
Question_Text
Correct_Answer_ID (FK)
Table: Difficulty
Columns: Difficulty_ID (PK)
Table: Exercise_Answer
Columns: Answer_ID (PK)
Exercise_ID (FK)
Answer_Text
Table: Exercise_Technique
Columns: Exercise_Technique_ID (PK)
Exercise_ID (part of UK, FK)
Technique_ID (part of UK, FK)
通过将答案分离出另一个表并且不使用正确的答案ID作为int(作为第二个答案),您可以通过比较answer_id值和练习来随机化答案并仍然知道哪一个是正确的答案。 correct_answer_id。
答案 1 :(得分:1)
我要说使用SimpleRepository: http://www.subsonicproject.com/docs/Using_SimpleRepository
我即将使用AutoT迁移为ManyToMany关联更新它,这将生成您需要的表/约束。我正在通过它的步伐,所以我需要几个星期。
如果您愿意(没有迁移)myname @ gmail,您可以通过电子邮件向我发送代码。