如果我正在接近这个错误,我很乐意就我的整体逻辑和设计提出建议。我会先解释这个问题和我的解决方案。如何从多个表中的一个自动选择?
我必须收集几种类型的数据(varchar,money,real,bit),但每个记录可以收集每种类型0-1000+。例如,记录1可能有40个varchar字段和500个货币字段,需要存储。
所以我想我会做4个表,每个数据类型一个,如下所示。理论上的记录号码1数据如下图所示:
-----------------------------------------------
|record(int)|fieldname(varchar)|value(varchar)|
|-----------|------------------|--------------|
|1 |field1 |test a |
|1 |field2 |test b |
-----------------------------------------------
(imagine 40 rows here total)
-----------------------------------------------
|record(int)|fieldname(varchar)|value(money) |
|-----------|------------------|--------------|
|1 |field3 |111 |
|1 |field4 |222 |
-----------------------------------------------
(imagine 500 rows here total)
-----------------------------------------------
|record(int)|fieldname(varchar)|value(real) |
|-----------|------------------|--------------|
(no real data to store for record 1)
-----------------------------------------------
|record(int)|fieldname(varchar)|value(bit) |
|-----------|------------------|--------------|
(no bit data to store for record 1)
我正考虑一个表,4列VARCHAR,钱,真正的,和位。但是,我只会使用每行4列中的1列,它看起来并不是最好的方式。
这是一个愚蠢的设计?现在接下来的问题是:如何从正确的表格中选择变量名称而不必指定数据类型?除了做4个单独的查询,直到我得到一个结果。我正在考虑使用3个联盟,为每个表制造3个缺失的列。这是最好的方法吗?
我将编辑我的问题。当我说字段时,我的意思是数据。我不想在示例表中创建500行,但想象每条数据有一行。我会编辑我的问题来澄清。 –
拥有4列,其中3个是NULL不会为每个记录添加任何额外的存储。在同一个记录中查询4个表的性能可能在这种情况下更具影响力。 –
Jason W - 我不知道。我认为只是有一个数据类型和行将使用存储,即使它是空的。我想我会把它们全部放在一张表中。谢谢! –