c# - 可以使用 XML 列来存储额外的数据吗?

标签 c# sql-server xml

如果可以并建议使用 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/

相关文章:

Android SlidingPaneLayout 淡入淡出

java - 具有现有类和模式的 jaxb

c# - (DataGridView + Binding)如何根据绑定(bind)的对象给线条上色?

c# - 使用 Entity Framework 4.3.1 保存值时小数位数不正确

sql-server - 如何让 SSIS 在导入平面文件时检测记录长度?

sql - 在SQL Server中创建表时如何限制INTEGER的长度?

c# - 如何在 C# 中读取安全的 XML URI?

c# - EF上下文和多线程

c# - "kill"background worker怎么彻底?

c# - 如何在 C# 中将函数作为参数传递?