0

这是我打算导入 mysql 的示例 xml 文件。

<?xml version="1.0" encoding="utf-8"?>
<ShipmentRequest>
   <Message>
      <Header>
      <MemberId>MID-0000001</MemberId>    
      <MemberName>Bruce</MemberName>
      <DeliveryId>0000001</DeliveryId>
      <OrderNumber>ON-000000001</OrderNumber>
      <ShipToName>Alan</ShipToName>
      <ShipToZip>123-4567</ShipToZip>
      <ShipToStreet>West</ShipToStreet>
      <ShipToCity>Seatle</ShipToCity>
       <Payments>
        <PayType>Credit Card</PayType>
        <Amount>20</Amount>
      </Payments>
      <Payments>
        <PayType>Points</PayType>
        <Amount>22</Amount>
      </Payments>
      <PayType />
      </Header>
    <Line>
      <LineNumber>3.1</LineNumber>
      <ItemId>A-0000001</ItemId>
      <Description>Apple</Description>
      <Quantity>2</Quantity>
      <UnitCost>5</UnitCost>
    </Line>
    <Line>
      <LineNumber>4.1</LineNumber>
      <ItemId>P-0000001</ItemId>
      <Description>Peach</Description>
      <Quantity>4</Quantity>
      <UnitCost>6</UnitCost>
    </Line>
    <Line>
      <LineNumber>5.1</LineNumber>
      <ItemId>O-0000001</ItemId>
      <Description>Orange</Description>
      <Quantity>2</Quantity>
      <UnitCost>4</UnitCost>
    </Line>
  </Message>
</ShipmentRequest>

如果我要使用 mongodb 数据库,我会将此文件作为集合中的一条记录导入,但是,由于我要处理 MySQL,我认为最好将 xml 文件中的信息导入并拆分到不同的表中:

表 1:订单。该表将包含以下信息:

  1. 会员ID
  2. 成员名字
  3. DeliveryId
  4. OrderNumber - 这将有一个唯一的值
  5. 收货人姓名
  6. ShipToZip
  7. 船到街
  8. 运送到城市
  9. PayType1 - 在这种情况下,信用卡
  10. PayType1金额
  11. PayType2 - 第二种支付方式,积分
  12. PayType2金额

表 2:详细信息。这将包含有关购买产品的信息。在这种情况下,它们是三个:苹果、桃子和橙子。该表将包含以下信息:

  1. 项目 ID
  2. 描述
  3. 单位成本
  4. 数量
  5. 订单号

我认为这两个表将通过 OrderNumber 键建立关系。如果我没记错的话,OrderNumber 将被称为表 2 的外键。

另一个想法是在导入表 1 时使用OrderNumber作为主键,因为它将具有唯一值,而不是使用增量主键。

我的问题是你认为我打算在 xml 文件中拆分信息的方式是最好的方式吗?或者如果有更好的方法请指教。我对 MySQL 完全陌生,这是我的第一个项目。

我没有用“xml”标记这篇文章,因为问题不在于如何将 xml 导入 mysql。

4

1 回答 1

1

我假设您打算在这些数据进入数据库后对其进行处理,因此我建议您对设计进行更多规范化。我会设计如下:

Member(MemberID, MemberName)
Order(OrderNumber, MemberID, DeliveryID, ShipToName, ShipToZip, ShipToStreet, ShipToCity, PayType1, PayType1Amount, PayType2, PayType2Amount)
Item(ItemID, Description)
Detail(OrderNumber, ItemID, UnitCost, Quantity)

在哪里

MemberID是 中的主键Member,是 中的主键,是 中的主键,OrderNumber和是中的主键。MemberIDOrderItemIDItemOrderNumberItemIDDetail

也需要在这些之间放置相应的约束。

于 2013-05-27T10:54:53.307 回答