我正在为客户开发项目并完成初始数据库设计.该项目将是一个简单的Web应用程序,用于在矩阵图中跟踪流程及其结果,我正在寻找一种将这些存储在关系表中的好方法.
现在我想我有一个常规表格,其中x和y坐标也将映射,也许可以从包含记录“点击”的坐标ID的查找表中删除.有人有更好的方法吗?
谢谢!
编辑:
这只是项目的开始,所以我的细节仍然有限,但我在多个表背后的主要原因是因为矩阵的大小和通用性是完全动态的,所以每个矩阵可能是不同的,它们将被绑定到用户
我也忘了提到x / y值的顺序很重要,这进一步支持了我为x y和值设置多个表背后的推理,由此我强烈假设需要知道每个单独的单元格很重要
例:
这个基本的例子(尽管是抽象的)在于关于餐馆的过程.这些行为是坐下来,订购食物,查看菜单,订购饮料,吃饭,支付等等的结果.订单的结果,交付的饮料,交付的食物,给出的变化.虽然看起来很简单,但考虑到每次出现的事情都会发生不同,在取出或自助餐的情况下也会变得复杂.在看到情况之间的差异时,行动和结果的顺序变得不可或缺
解决方法
有很多方法可以做到这一点,我们需要更多的信息来更具体地说明什么是最适合你的.但是,这是两种SOP方式:
每个矩阵的单独表格:
CREATE TABLE YourMatrixName( RowNo smallint NOT NULL,ColNo smallint NOT NULL,CellValue varchar](50) NULL,CONSTRAINT [PK_Matrices] PRIMARY KEY CLUSTERED ([RowNo] ASC,[ColNo] ASC) ) ON [PRIMARY]; GO CREATE UNIQUE NONCLUSTERED INDEX IX_YourMatrixName ON dbo.YourMatrixName (ColNo,RowNo); GO
或者,一个表中的所有矩阵:
CREATE TABLE Matrices( MatrixName varchar(24) NOT NULL,RowNo smallint NOT NULL,CellValue varchar(50) NULL,CONSTRAINT [PK_Matrices] PRIMARY KEY CLUSTERED ([MatrixName] ASC,[RowNo] ASC,[ColNo] ASC) ) ON [PRIMARY]; GO CREATE UNIQUE NONCLUSTERED INDEX IX_Matrices ON dbo.Matrices (ColNo,RowNo); GO
这些是标准的正常形式,几乎所有其他方式都没有很好地规范化.这些方法的一些优点:
>您不必填写每个单元格,只填写您正在使用的单元格.或者有一个默认值(0或“”)并跳过这些值.
>这是最灵活的方法,即使在“一体化”模型中,也不需要以任何方式将它们限制为相同的大小,并且很容易调整它们的大小.
>您可以轻松查询矩阵的内容,这在更紧凑的存储方法中越来越困难.
>“命中”或矩阵单元的任何其他方面很容易实现为行中的附加字段.如果您担心额外的空间,请将它们设置为Null,如果要分别查询/报告这些属性,请将它们编入索引.使用此型号也可以轻松改造此类功能.
主要缺点是数据开销通常存在很大的空间.许多人认为插入或检索新矩阵的开销也很高,但实际上有几种记录的技术可以使它非常快.