C# 数据库字段中的XMLSerialized对象。设计好吗?

C# 数据库字段中的XMLSerialized对象。设计好吗?,c#,asp.net,mysql,database,xml-serialization,C#,Asp.net,Mysql,Database,Xml Serialization,假设我有一个表可以容纳博客。 模式如下所示: ID (int)| Title (varchar 50) | Value (longtext) | Images (longtext)| .... 在字段Images中,我存储了与博客关联的XML序列化图像列表 我是否应该使用另一张表来进行此操作?是的,您应该将图像放在另一张表中。在同一字段中有多个值表示数据非规范化,这使得使用数据库变得困难 与所有规则一样,在数据库中的一个字段中放置具有多个值的XML也是有意义的。第一条规则是: 数据应始终一起读

假设我有一个表可以容纳博客。 模式如下所示:

ID (int)| Title (varchar 50) | Value (longtext) | Images (longtext)| ....
在字段Images中,我存储了与博客关联的XML序列化图像列表


我是否应该使用另一张表来进行此操作?

是的,您应该将图像放在另一张表中。在同一字段中有多个值表示数据非规范化,这使得使用数据库变得困难

与所有规则一样,在数据库中的一个字段中放置具有多个值的XML也是有意义的。第一条规则是:

数据应始终一起读取/写入。无需仅读取或更新其中一个值

如果实现了这一点,将数据放在一个字段中可能有许多原因:

  • 存储效率,如果空间被证明是一个问题
  • 检索效率,如果性能被证明是一个问题
  • 图式灵活性;其中一个XML字段可以消除数十个或数百个不同的表

这取决于您是否需要查询实际图像数据本身。如果您看到可能需要查询某些图像或具有某些属性的图像,那么最好以不同的方式存储该图像数据

否则,请保持原样


但是请记住,只有在需要时才在SELECT中包含字段。

我当然会使用另一个表。如果使用XML,那么当需要遍历并更新对所有图像的引用时会发生什么?(您是希望执行
更新blog\u images Set…
,还是解析每行的XML,进行更新,然后为每行重新生成更新的XML

我应该用另一张桌子吗

不一定。您只需确保在不需要图像字段时,不会在查询中选择该字段。但是,如果您想取消模式的规范化,可以使用另一个表,当您需要图像时,可以执行
连接

嗯,它有点“内部平台”一个单独的表将允许更好的图像查询,尽管在一些RDBMS平台上,这也可以通过XML类型列和SQL/XML实现

如果这些数据必须是不透明的存储,那么可能是。但是,请记住,您通常必须将整个XML返回到应用层,以便对其进行任何有趣的处理(或者:根据平台,使用SQL/XML,但我建议不要这样做,因为在大多数情况下,DB不是进行此类处理的地方)


在所有其他情况下,我的建议是:单独的表格。

实际图像或图像URL中的图像列表?每个图像的URL和目录。