我已经使用字典表而不是更传统的表来实现这些内容。
字典表可能如下所示:
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。
不过,我有很多次觉得将用户定义的字典元素存储在字典中有点喝得太多。这些可以是单独的表,因为您在设计时已经知道它们需要什么结构。 :)
此方法永远不会具有传统表格所具有的报告速度或质量。这些通常要求开发人员预先了解结构。但如果要求是灵活性,这个可以胜任。
通常情况下,我网站的用户定义区域开始后会有一个项目来规范化报告数据等。但这允许用户以有限的方式开始并在参与之前确定他们的要求开发人员。
毕竟,我只想提几个可能对你有用也可能不适合你的选项:
- 如果您有 SharePoint,则用户已经能够创建
他们自己的名单以这种方式。
- 以这种方式保存的共享文件夹中的 Excel 文档
允许多个同时编辑也可以达到目的。
- Excel 文档,存储在网络服务器上并通过 ODBC 访问
也可以用作这样的单表数据库。