我有一个 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/