2011-09-22 71 views
1

我有一个包含许多代表不同的产品类型不同的表的一个相当大的数据库(例如汽车,婴儿车)。存储定制MySQL的元数据 - 最佳实践

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

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

首先,我是大错特错存储在XML这一切自定义元数据?

其次,我是否应该在MySQL被存储它的一些(我想我应该把一些它的存在),什么是做到这一点的最好方法是什么?我看到我可以在MySQL中创建列“注释”....是数据库的标准票价吗?如果我有一天搬到甲骨文,我会失去我所有的评论信息吗?我并没有想过将很多信息移动到数据库中,有些可以通过在我的列名称中添加一些标识符来实现(例如number_of_wheels变为number_of_wheels_quantity,length变为length_dimension)

来自数据库设计的任何建议那里的大师将会受到广泛的赞赏。谢谢:)

回答

2

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

是的,XML是以几乎人类可读的格式传输数据的好标志,但对于存储它来说却是一个可怕的标记。搜索XML非常昂贵,并且我不知道通过存储在数据库字段中的XML进行查询搜索的好方法。你可能更喜欢使用直接存储这些东西的表,如果需要,可以在从数据库中查询它们之后轻松地将它们转换为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)更容易访问。

我必须对意图和现有数据做出一些假设,如果我对任何事情都有错,请告诉我为什么它不适用于您,我会用一些更正或其他指针。

+0

这是有益的...谢谢你。所以我假设“ColumnName”列中使用的名称将是感兴趣的表中的实际列名称?并且为了允许在不同表中使用相似的列名,我应该为表名指定另一列。你能否提出存储列名本地化的最佳方法?例如我有一列“颜色”,我使用XML来存储所有“颜色”以不同语言拼写的方式。 – neomech

+0

是的,columnName将是实际的名称,我也会为表名称添加一个列,如同您对类似/匹配名称的情况所述。对于像这样的本地化,我会将元数据中的各种拼写作为不同的行。所以每行可能看起来像'行1:table1 |颜色|颜色|| row2:table1 |颜色|颜色||第3行:table1 |颜色| couleur ||'等然后,当你运行一个查询颜色从PHP,你会得到一个所有不同的本地化数组。 – invertedSpear

+0

另外我想说的是,本地化并不像数据一样是真正的元数据。本地化应该可能存储在本地化表格中,以便您可以更轻松地访问它。可能有3列,“wordInEnglish | otherLanguageName | wordInOtherLanguage” – invertedSpear

0

看,你的目的是为了保持元数据在一个地方。对? 我建议你使用免费的工具Mysql Workbench。在这个工具中,您可以选择创建ER图(或EER图)。您可以保留整个结构,并且在任何时候都可以与服务器同步并恢复结构。您也可以备份这些结构。如果你还没有使用它,你必须先学习它。但最后它是一个非常有用的工具,可以有组织地保持结构。

+0

我已经在使用MySQL Workbench ...这是一个很棒的工具。我需要以一种可以以编程方式访问的方式存储有关列的元数据。不幸的是,我不认为Workbench为我解决了这个问题。 – neomech