我试图在mysql数据库中存储这样的有序电压列表:
+-------+-----------+----------------------+----------------------+
| orgId | orgStatus | startedTime | endedTime |
+-------+-----------+----------------------+----------------------+
| 1 | 1 | 2011-12-14 09:25:21 | 2011-12-14 10:26:21 |
| 1 | 2 | 2011-12-14 10:26:21 | 2011-12-14 11:27:21 |
| 1 | 3 | 2011-12-14 11:27:21 | 2011-12-14 12:25:21 |
| 1 | 4 | 2011-12-14 12:25:21 | inf |
| 2 | 1 | 2011-12-14 10:26:21 | 2011-12-14 10:50:21 |
| 2 | 2 | 2011-12-14 10:50:21 | 2011-12-14 11:28:21 |
| 2 | 3 | 2011-12-14 11:28:21 | 2011-12-14 15:25:21 |
| 2 | 4 | 2011-12-14 15:25:21 | inf |
+-------+-----------+----------------------+----------------------+
对于大约25个唯一ID,我需要存储一组不同的列表。上面的列表对应于单个模块ID = 1.每个模块分为4个象限,每个16个通道,或4个4通道。因此,我希望能够通过查询V1 = [[1123, 1109, 1107, 1115, 1122, 1107, 1109, 1121, 1121, 1120, 1123, 1103, 1139, 1132, 1115, 1143], [1133, 1115, 1085, 1115, 1127, 1089, 1102, 1095, 1108, 1115, 1089, 1104, 1105, 1107, 1107, 1140], [1093, 1123, 1084, 1091, 1115, 1085, 1083, 1098, 1115, 1092, 1098, 1115, 1098, 1081, 1122, 1115], [1094, 1115, 1109, 1108, 1102, 1142, 1090, 1089, 1081, 1105, 1096, 1095, 1089, 1104, 1115, 1126]]
V2 = [[1850, 1889, 1913, 1935, 1917, 1922, 1905, 1905, 1913, 1894, 1883, 1880, 1892, 1889, 1898, 1892], [1780, 1809, 1806, 1776, 1820, 1818, 1809, 1831, 1807, 1816, 1820, 1754, 1818, 1805, 1797, 1756], [1794, 1839, 1870, 1817, 1844, 1777, 1831, 1837, 1814, 1827, 1843, 1836, 1815, 1817, 1802, 1782], [1779, 1800, 1767, 1751, 1794, 1808, 1822, 1829, 1805, 1850, 1785, 1777, 1792, 1779, 1786, 1785]]
Vsum = [[1894, 1952, 1923, 1907], [1857, 1883, 1864, 1842], [1814, 1908, 1908, 1867], [1841, 1858, 1873, 1839]]
找到ID = 1的V1,或者通过查询(ID=1, quad=#, ch=#)
能够找到ID = 1的Vsum
然而,我看到的问题是Vsum是一个对应于一个组的电压,它是4个通道的总和。因此,Vsum的最后一个维度减少了4倍。这意味着存储值的列并不都共享相同的唯一“主ID”。
我最干净的眼光看起来像这样:
(ID=1, quad=#, group=#)
我希望避免最后一列中的冗余,但是如果不创建单独的表,我就没有办法避免这种情况。将它拆分是不幸的,因为所有这些信息都已连接,但我认为数据库规范化的目的之一是避免重复,而不应该存在重复。我不会尝试在第二个表中添加,但我想知道在给定我正在使用的数据的情况下是否有更好的替代结构。
如果把它分成两部分是正确的方法,你对这个方法有什么具体的建议吗?这将是我第一次涉足数据库规范化,所以我对这个东西有点新手。