如果可以并建议使用 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
)
Data
可以包含许多值,例如附加电话号码、评论......
我们希望我们所有的客户都会在 Employee
中询问不同的字段,我们不想每次他们想到要添加新字段时都弄乱数据库结构。
我们期望xml列中存储的数据是不常访问的数据。除了在浏览员工列表时可见之外,数据可能还需要打印出来。所以我们确实需要将数据类型与数据一起存储(有点像数据集正在序列化其数据)
这是存储未知额外数据的好方法吗?
已编辑 举个更好的例子
更新 我还没有选择答案,因为我正在与我的团队讨论你们建议的不同方法。
最佳答案
你可以这样做:
[EmployeeField]
-----------------------------------------------------
EmployeeID EmployeeFieldName EmployeeFieldValue
这实际上与 .NET Membership 用于具有动态字段的用户配置文件的方法相同。许多业务应用程序使用相同的方法来存储动态的客户特定输入。
根据 Spencer Ruport 的评论,这种方法被称为 Entity-Attribute-Value model (EAV) .
关于c# - 可以使用 XML 列来存储额外的数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1374317/