允许用户在ASP.NET网站上创建新的类别和字段

时间:2011-07-22 13:16:12

标签: asp.net sql dynamic user-defined-functions

我们有一个数据库驱动的asp.net / sql服务器网站,我想研究如何让用户创建一个新的数据库类别和字段 - 这是疯了吗?有没有这样的有机网站的例子 - 事实上我没有看到任何可能的建议我? 对管理员允许某种程度控制的最佳方法感兴趣。

1 个答案:

答案 0 :(得分:0)

我已经使用字典表实现了这些行,而不是更传统的表。

字典表可能如下所示:

create table tblDictionary
(id      uniqueidentifier, --Surrogate Key (PK)
 itemid  uniqueidentifier, --Think PK in a traditional database
 colmn   uniqueidentifier, --Think "column name" in a traditional database
 value   nvarchar,         --Can hold either string or number
 sortby  integer)          --Sorting columns may or may not be needed. 

那么,传统表中的一行会变成多行:

传统方式(当然我不是编制GUID):

ID     Type  Make      Model     Year    Color
1      Car   Ford      Festiva   2010    Lime

...将成为字典中的多行:

ID    ITEMID    COLUMN     VALUE    
0     1         Type       Car
1     1         CarMake    Ford
2     1         CarModel   Festiva
3     1         CarYear    2010
4     1         CarColor   Lime

您的GUI可以搜索itemid = 1的所有记录并获取所需的所有列。 或者,它可以搜索itemid in (select itemid from tblDictionary where column='Type' and value='Car'的所有记录,以获取所有汽车的所有列。

理论上,您可以将用户定义的类型放入同一个表(Type ='Type')以及该Type具有的用户定义列(Type ='Column',Column ='ColumnName') 。这就是sortby列的用武之地 - 如果你不想依赖别的东西,可以帮助以正确的顺序构建GUI。

但是,很多次,我觉得将字典中的用户自定义字典元素存储在字典中有点过分了。这些可以是单独的表,因为您已经知道他们在设计时需要什么结构。 :)

此方法从不具有传统表格所具有的报告速度或质量。那些通常要求开发人员具有结构的预先知识。但如果要求具有灵活性,则可以完成工作。

通常情况下,最初作为我网站的用户定义区域的内容有一个后来的项目来规范化数据以进行报告等。但是,这允许用户以有限的方式开始并在参与之前制定他们的要求开发者。

毕竟,我只想提一些可能适用于您的选项:

  1. 如果您拥有SharePoint,则用户已具备创建功能 以这种方式自己的名单。
  2. 以这种方式保存的共享文件夹中的Excel文档 允许多个同时编辑也可以达到目的。
  3. Excel文档,存储在Web服务器上并通过ODBC访问 也可以作为这样的单表数据库。