我正在维护一个Access数据库,用于学生入学。我有一个包含传记信息的主表和一个包含应用程序信息的辅助表,并允许每个学生有多个应用程序(每个学生都有一个唯一的学生ID;该ID存储在两个表中,以及应用程序是如何匹配的给学生们。)
每个应用程序都分配了一个"应用程序编号,"并且每个学生只能有一个具有指定编号的申请(即,学生A不能有两个申请编号" 1",但可以有1,2和3)。
我想创建一种某种类型的验证规则来防止重复,但整个列并不是唯一的...它只是与指定的学生有关。
有没有办法创建这样的规则,还是我应该以不同的方式安排我的数据?如果它意味着更高效的工作流程,我愿意做出改变。
我希望这是有道理的......我不确定如何最好地描述这一点。谢谢你的帮助。
答案 0 :(得分:0)
如果您希望用户在执行数据输入时提供有效的唯一"应用程序编号",那么您要查找的规则将是StudentId
和ApplicationNumber
上的唯一索引。 StudentId
。 (请记住,您可以创建包含多个列的索引。)这意味着每对ApplicationNumber
和using (ScotiaNYAEntities context = new ScotiaNYAEntities())
{
foreach (string line in File.ReadLines(pathToFile))
{
if (line.Contains("AMOUNT:"))
{
if (IsAmount)
{
string amount = line.Replace("AMOUNT:", string.Empty).Trim();
TTransaction txn = new TTransaction();
txn.Amount = amount;
txn.TRN = "sdfgsdfg";
context.TTransactions.Add(txn);
}
}
}
context.SaveChanges();
}
必须是唯一的。
但是,我应该注意,要求进行数据输入的用户必须自己提供一个唯一的应用程序编号,这对用户不友好。
考虑以下备选方案:
让数据库建议一个唯一的申请号。或者,更好的是,
在填写申请表时,甚至不建议任何号码,而是在提交申请时发出一个唯一的申请号。或者,甚至更好,
停止在数据库中存储应用程序编号,而只有在需要显示应用程序编号时,数据库才会根据应用程序的数据输入的用户ID和日期来计算它们。 (警告:如果学生有3个应用程序,而应用程序#2被删除,那么旧的应用程序#3将重新编号为#2,从而导致混淆。因此,这只有在不允许删除的情况下才有效。)