sql – 在关系数据库中存储矩阵
我正在为客户开发项目并完成初始数据库设计.该项目将是一个简单的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或“”)并跳过这些值. 主要缺点是数据开销通常存在很大的空间.许多人认为插入或检索新矩阵的开销也很高,但实际上有几种记录的技术可以使它非常快. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |