存储自定义MySQL元数据 - 最佳实践

时间:2011-09-22 19:42:19

标签: mysql xml database-design metadata

我有一个相当大的数据库,其中包含许多代表不同产品类型的不同表格(例如汽车;婴儿推车)。

我正在使用一个用PHP构建的网站来访问数据并显示它,我允许用户过滤数据(典型的在线产品数据库类型)。

我不确定我是否以正确的方式存储我的元数据。我正在使用XML来做很多事情,这需要先在MySQL中创建一个产品类型表,然后在我的大XML“列属性”文件中添加有关该表中每个列的信息。因此,我将在XML表中列出每列的名称,其中包含有关该列的信息。我在XML文件中存储列的本地化名称,并指示列中存储有关产品的信息类型(例如,列是显示维度(列在产品维度区域中)还是功能(用于特征区))。

首先,我是否会将所有这些自定义元数据存储在XML中?

其次,如果我应该将其中的一些存储在MySQL中(我认为我应该将其中的一些存储在那里),那么最好的方法是什么?我看到我可以在MySQL中创建列“评论”....这些是数据库的标准票价吗?如果有一天我转到Oracle,我会丢失所有评论信息吗?我不打算将大量信息移到数据库中,其中一些可以通过在我的列名称中添加一个小标识符来实现(例如number_of_wheels变为number_of_wheels_quantity,length变为length_dimension)

来自数据库设计大师的任何建议都会受到极大的赞赏。谢谢:))

2 个答案:

答案 0 :(得分:2)

  

首先,我是否可以将所有这些自定义元数据存储在XML中?

是的,XML是一个很好的标记,用于以几乎人类可读的格式传输数据,但是存储它是一个可怕的标记。搜索XML非常昂贵,而且我不知道通过存储在DB中的字段中的XML进行查询搜索的(好)方法。使用直接存储这些内容的表可能会更好,如果需要,可以在从DB查询后轻松将它们转换为XML。我认为在您的情况下,包含以下列的表格将非常有用:"ColumnName","MetaData"您可以根据自己的示例填充值:

__________________________________________________________________________________________________
|colDimension    | Is a column showing a dimension (to be listed in the product dimensions area) |
|colFeature      | a feature (for the features area)                                             |
--------------------------------------------------------------------------------------------------

此方案也将解决您的评论难题,因为您可以在上表中添加另一个字段来存储注释,这将使您的中间层(在您的情况下为php)更容易访问它们(如果您想要的话)显示这些评论。

我不得不对意图和现有数据等做一些假设,所以如果我对任何事情都不对,请告诉我为什么它不适合你,我会回复一些更正或其他指示

答案 1 :(得分:0)

请参阅,您的目的是将Meta数据保存在某个位置。对? 我建议你使用免费提供的工具Mysql Workbench。在此工具中,您可以选择创建ER图(或EER图)。您可以保留整个结构,并且可以在任何时间点与服务器同步并恢复结构。您也可以备份这些结构。如果你还没有使用它,你必须先学习它。但最后它是一个非常有用的工具,可以有条理地保持结构。