c# - 在数据库中存储数组的最佳方式

标签 c# arrays sql-server database entity-framework

我有一个 C# 应用程序需要一组这样的数组,

double[10] x = {0, 1.5, ......}
double[10] y = {0, 2.4, ......}

我需要将这些数据存储在 Sql-Server 上,直到现在我创建了一个表,其中包含 x1、x2、...x10 和 y1、y2、...y10 等列。所以对于我的第一组,我有一个表格行,

no  x1 x2...x10   y1 y2...y10
1   0  1.5 ....   0  2.4 ....

所以当我需要数据库中的数据时,我使用类似(带有 Entity Framework )的代码,

x[0] = data.x1;
x[1] = data.x2;
.
.
x[9] = data.x10;
y[0] = data.y1;
y[1] = data.y2;
.
.
y[9] = data.y10;

但是我觉得这种方式不对。有没有更简单的方法(比如 x = data.x)。我应该改变在 sql 上保存数据的方式吗?

感谢阅读和帮助。

最佳答案

你应该问问自己,如果你描述了你试图用你的数据库解决的问题,你放入这个数据库的项目是否通常有 10 个 double ,或者数字 10“只是一个管理决定”,如果心情不同,他们会选择 9 或 11 吗?

此外:您的 10 个 double 真的只是 10 个 double ,还是 x[0] 与 x[1] 具有不同的含义。如果您的姓名/地址中有多个字符串,您会称它们为 AddressLine1、AddressLine2、City、PostCode,还是称它们为 AddressData[4]?想想你的 double 是否有特殊意义,或者它们是否可以互换。

会不会在几年后,当您拥有无数条记录时,他们突然决定要保存 11 个 double 而不是 10 个 double ?或者可能更糟:有些记录有 10 个值,有些有 11 个值,有些甚至可能有可变数量的值。

如果您真的认为数字 10 不仅仅是一个决定,而是您正在解决的问题的内在因素,就像国际象棋 table 上的方格数一样固定,那么您应该将所有 10 个 double 作为单独的值相加到你的表,因为这对数据库操作来说是最快的

另一方面,如果您认为将来人们可能想要不同数量的 double ,我会说选择一对多关系。

这将提高您的代码的可读性:即使您绝对确保您的学校只有 10 门类(class)。

如果您将值置于一对多关系中,那么对于减慢某些数据库访问速度的成本,您将受益于改进的可重用性/可维护性(将来某些项目可能有 11 个值,或者零值),学习曲线较低,因为将其实现为一对多更为常见。

关于c# - 在数据库中存储数组的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48944260/

相关文章:

c# - 复制 KeyedCollection 的最快方法

C# 私有(private)(隐藏)基类

java - 字符串数组拆分而不删除

javascript - 如何使数组中收集的循环值在循环外部可用以供将来使用

jsf - p :graphicImage which can show images from byte[] and control browser cache 的替代方案

sql - 添加 SQL Server 索引,但如何仅重新编译受影响的存储过程?

sql - 微软 SQL 服务器。将数据列转置为数据行

c# - 如何在使用过滤器时获取 CollectionView 的真实计数?

c# - 用于有条件地格式化数字字符串的正则表达式

sql-server - 为什么我的表值参数在到达数据库时为空?