用于休息服务的数据库模式

时间:2015-05-18 14:46:51

标签: java sql rest

我正在数据库中编写表,以获得一个公开名为Orders的资源的休息服务。

Orders(id, items, user, total_amount)

我正在使用XML。我的问题是如何在OrderId的Orders表中存储“items”并以XML格式返回列表?我们如何在这里处理多个项目?

我的意思是,如果我想要这样的XML响应,我该如何将数据存储在数据库中?

<Order>
<Id>1</Id>
<Item>A</Item>
<Item>B</Item>
<Item>C</Item>
<User>Simran</User>
<Total_amount>1100</Total_amount>
</Order>

我到目前为止的数据库表:

create table Users
(
Id int not null primary Key identity(1,1) constraint fk_UserId_Id references Orders(UserId),
name nvarchar(50),
phone nvarchar(10)
);

create table Items
(
Id int not null primary Key identity(1,1) constraint fk_item_Id references Orders(ItemId),
name nvarchar(50),
Price int
);

create table Orders
(
id int not null primary Key identity(1,1),
ItemId int,
UserId int,
);

1 个答案:

答案 0 :(得分:2)

这完全取决于您希望如何存储数据。

对数据进行非规范化可能会从您的示例创建3个表,即订单,用户和项目表。

在从数据库查询结果生成XML方面,您需要将数据提取到XML模型中。我建议将这个逻辑分开并生成转换层,这样在操作对象时就不会弄乱数据服务层。

XML中的多个项目也必须由外部元素包装,如下所示:

<Orders>
  <Order>
   <Id>1</Id>
   <Item>A</Item>
   <Item>B</Item>
   <Item>C</Item>
   <User>Simran</User>
   <Total_amount>1100</Total_amount>
  </Order>
  <Order>
   <Id>2</Id>
   <Item>A</Item>
   <Item>B</Item>
   <Item>D</Item>
   <User>Simran</User>
   <Total_amount>1300</Total_amount>
  </Order>
</Orders>