0

Entity-Attribute-Value テーブルや Key-Value ペア テーブルなどのアンチパターンの代わりに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 をいじる必要なく、新しいパラメーターをマイニングに動的に追加することもできます。

これは可能ですか?もしそうなら、どのようにそれを行うつもりですか?

4

1 に答える 1

4

列を動的に追加するというアイデアは時限爆弾になり、SQL Server の制限の 1 つに徐々に近づいていると思います。

また、データベースの設計をユーザーの手に委ねることになり、ユーザーの命名規則やクレイジーなアイデアに翻弄されることになります。

可能ではありますが、EAV テーブルよりも優れているのでしょうか。EAV テーブルは、少なくとも次の開発者があなたのプログラムを手に入れるのは明らかです。

于 2012-12-19T18:02:23.103 に答える