一个通常与填充的非规范化表相对,尽管它具有主键,例如:
| RowID | Column1 | Column2 | Column3 | Column4 | ...
| 'Row1' | 'a1' | 'a2' | 'a3' | 'a4' |
| 'Row2' | 'b1' | 'b2' | 'b3' | 'b4' |
| 'Row3' | 'c1' | 'c2' | 'c3' | 'c4' |
...
问题是:如何有效地将其转换为 3nf 存储数据?(理想情况下,假设列数及其名称未知)
| RowID | ColumnID | Value |
| 1 | 1 | 'a1' |
| 1 | 2 | 'a2' |
...
或者,理想情况下,
| RowID | ColumnID | Value |
| 'Row1' | 'Column1' | 'a1' |
| 'Row1' | 'Column2' | 'a2' |
...
我知道的一种解决方案是使用几个 UNION 选择一个列在另一个下的列,但是如果有很多列,脚本看起来会很糟糕。
任何帮助深表感谢!
最好的问候,康斯坦丁。