我需要一些有关SQL设计思想的启发,我才刚刚开始学习SQL。我的知识非常有限,所以请耐心等待。
我有一个Quiz应用程序,在SQL中,有一整行,与每个Quiz问题和答案相对应。这是非常基本的,并且设计得不是很好。但是这里。
像这样
我的要求是使用户能够在测验列表中的任何位置添加问题。因此,例如,如果用户想在数字2处添加新问题,则用户可以单击“添加问题”在位置2,它将向数据库添加新记录并刷新页面以查看问题是否已重新排序和编号。
我的应用程序根据类别拉回数据。因此,例如,如果用户想要在我的应用程序中查看历史记录类别。他们单击一个按钮,并显示标题列表和下面的按钮。
如您所见..我的桌子还没有准备好..任何人都可以给我一些技巧,以帮助我了解如何在数据库中实现这一目标。
非常感谢。
您需要ID的链接列表和类别的外部表(已经处理了粘性位)。
当插入新行时,使用了一个存储的proc,它执行以下操作:
update QuizTable set position = position + 1 where position >= 2;
insert into QuizTable(position, question) values (2, "new question");
如果您的表需要并发更新,那么这当然是行不通的!(因为如果一位用户在更新位置2时更新位置8,则可能会被锁定。
对于多用户系统,安全地执行此操作的唯一方法是实现next / prior列(或将它们放在单独的数据库表中)。此选项是一项艰巨的任务,您应该避免使用它。
您的插入存储过程如下所示:
declare @myNewId = 94;
declare @position2Id = 50;
insert into QuizTable(id, question)
values (@myNewId, "my new question");
declare @next, @prior
select @next = next, @prior = prior from QuizTable where id = @myNewId;
update QuizTable set next = @myNewId where id = prior;
update QuizTable set prior = @myNewId where id = @position2Id
然后,您的列表将由动态计算的id和自引用表扫描组成,其中id 1 =以前的IS NULL id 2 = id1.next
刚刚为您找到了此链接:SQL中的链接列表
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句