我们有一个数据库驱动的asp.net / sql服务器网站,我想研究如何让用户创建一个新的数据库类别和字段 - 这是疯了吗?有没有这样的有机网站的例子 - 事实上我没有看到任何可能的建议我? 对管理员允许某种程度控制的最佳方法感兴趣。
答案 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。
但是,很多次,我觉得将字典中的用户自定义字典元素存储在字典中有点过分了。这些可以是单独的表,因为您已经知道他们在设计时需要什么结构。 :)此方法从不具有传统表格所具有的报告速度或质量。那些通常要求开发人员具有结构的预先知识。但如果要求具有灵活性,则可以完成工作。
通常情况下,最初作为我网站的用户定义区域的内容有一个后来的项目来规范化数据以进行报告等。但是,这允许用户以有限的方式开始并在参与之前制定他们的要求开发者。
毕竟,我只想提一些可能适用于您的选项: