作为 Entity-Attribute-Value 或 Key-Value Pair 表等反模式的替代方案,是否可以通过INSERT
参数表上的触发器将列动态添加到数据表中?
这是我的桌子:
CREATE TABLE [Parameters]
(
id int NOT NULL
IDENTITY(1,1)
PRIMARY KEY,
Parameter varchar(200) NOT NULL,
Type varchar(200) NOT NULL
)
GO
CREATE TABLE [Data]
(
id int NOT NULL
IDENTITY(1,1)
PRIMARY KEY,
SerialNumber int NOT NULL
)
GO
然后触发器将被放置在参数表上,由添加的新参数触发:
CREATE TRIGGER [TRG_Data_Insert]
ON [Parameters]
FOR INSERT
AS BEGIN
-- The trigger takes the newly inserted parameter
-- record and ADDs a column to the data table, using
-- the parameter name as the column name, the data type
-- as the column data type and makes the new column
-- nullable.
END
GO
这将允许我的数据挖掘应用程序获取要挖掘的参数列表,并在挖掘数据后有一个存储数据的地方。它还允许用户添加新参数以动态挖掘,而不必弄乱 SQL。
这可能吗?如果是这样,你会怎么做呢?