如果没问题,建议使用xml列存储用户界面可能提供的任何额外数据?
例如,假设一个Employee表
CREATE TABLE Employee
(
EmployeeId int not null,
Name nvarchar(300) not null,
Phone varchar(30) null,
Email varchar(320) null,
Address nvarchar(max) null,
Data xml null
)
Run Code Online (Sandbox Code Playgroud)
Data 可以包含许多值,如额外的电话号码,评论......
我们希望我们所有的客户都会询问不同的领域Employee,并且我们不想在每次想到要添加的新字段时都弄乱数据库结构.
我们希望存储在xml列中的数据是不经常访问的数据.除了在浏览员工列表时可以查看,还可能需要打印数据.所以我们确实需要沿着数据存储数据类型(有点像数据集序列化其数据)
这是存储未知额外数据的好方法吗?
编辑 给了一个更好的例子
更新 我还没有选择答案,因为我正在与我的团队讨论你们建议的不同方法.
小智 5
你可以这样做:
[EmployeeField]
-----------------------------------------------------
EmployeeID EmployeeFieldName EmployeeFieldValue
Run Code Online (Sandbox Code Playgroud)
事实上,.NET Membership用于具有动态字段的用户配置文件的方法相同.许多业务应用程序使用相同的方法来存储动态的客户特定输入.
记入Spencer Ruport的评论,这种方法被称为实体 - 属性 - 价值模型(EAV).