我想在具有SQL Server 2012后端的基于Access VBA构建的现有应用程序中引入队列功能。它应该允许应用程序将具有1:n参数的打开任务存储在队列表中,并在以后处理它们。值得一提的是,对于某些任务,可能需要执行多个处理步骤,直到获得处理所需的所有信息为止。
有关我当前情况的更多信息:
我目前最好的方法-但是在EAV模式中-将由三个表组成:
1。表“ tblQueueItemType”
它包含任务的每种类型(或类别)的定义。
它包含一个ID,一个名称和一个属性计数。此属性计数定义此任务的属性数量。我想稍后使用它来确保状态为“ READY”的所有任务的数据一致性。
此表中条目的示例:
“ 1”,“生成图书数据库条目”,“ 5”
2。表“ tblQueueItemHeader”
它表示在tblQeueItemType中定义的实例化任务。它们具有任务ID,在tblQeueItemType中定义的相应任务类型,状态以及时间戳。
状态为“打开”(并非所有信息可用),“就绪”(所有信息可用于处理任务)和“完成”(处理时)。
此表中条目的示例:
“ 2”,“ 1”,“打开”
3。表格“ tblQueueItemAttribute”
它包含任务需要处理的所有信息。它包含一个ID,标题ID,属性类型和属性值。
此表的示例条目:
“ 1”,“ 2”,“作者”,“ H.G。威尔斯” “ 1”,“ 2”,“页数”,“ 1234”
到目前为止我的表定义:
CREATE TABLE [dbo].[tblQueueItemType](
id INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Name NVARCHAR(20) NOT NULL,
AttributeCount INT NOT NULL
)
CREATE TABLE [dbo].[tblQueueItemHeader](
id INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
QueueItemTypeId INT NOT NULL,
Status NVARCHAR(5) NOT NULL,
Timestamp DATETIME NOT NULL
CONSTRAINT QueueTypeHeader
FOREIGN KEY (QueueItemTypeId)
REFERENCES tblQueueItemType (id)
)
CREATE TABLE [dbo].[tblQueueItemAttribute](
id INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
QueueItemHeaderId INT NOT NULL,
Attribute NVARCHAR(5) NOT NULL,
Value NVARCHAR(50) NOT NULL,
Timestamp DATETIME NOT NULL
CONSTRAINT QueueHeaderAttribute
FOREIGN KEY (QueueItemHeaderId)
REFERENCES tblQueueItemHeader (id)
)
ALTER TABLE tblQueueItemHeader
ADD CONSTRAINT QueueItemHeaderStatus
CHECK (Status IN ('OPEN', 'READY', 'DONE'));
很显然,当前的设计不是最佳的。这种用例的最佳方案是什么?我目前的方法可行吗?
非常感谢您!