该数据库模型效率较低吗?

时间:2019-05-03 15:47:59

标签: sql database postgresql performance

我遇到一个实现客户指示和订单指示的问题,这两个指示具有相同的属性,因此我决定创建一个名为Directions的表,然后在Clients and Directions之间创建一个关系,在Orders和之间创建另一个关系方向。

我的问题是:修改订单和客户表以自己管理路线属性比创建路线表更为有效。

以下是我的图表示例

Example

这是我的查询之一:

SELECT clients.name, work_order.date, direction.street,
direction.city, direction.zip FROM work_orders as work_order
INNER JOIN clients.clients as clients ON client.id = work_order.id_client
INNER JOIN directions.directions as direction ON direction.id = work_order.id_work_direction 
WHERE work_order.id = '1';

1 个答案:

答案 0 :(得分:0)

这种组织地址的方法可能比将地址嵌入单独的客户和订单表中的方法更好。但是,有一些问题需要考虑。

  • 如果您需要更新客户的路线,则需要检查是否有其他客户或使用相同方向ID的订单。如果有共享条目,则需要知道该怎么做-为所有条目更新方向是否合法,还是需要为此客户创建一个新的方向来保存更改后的详细信息。
  • 是否需要冻结订单的详细信息,以便如果客户在夏威夷居住期间下了第一笔订单,并且您完成了该订单,然后同一位客户搬到缅因州并下了新指令,原始订单的信息不会更改吗?
  • 通常,北美以外的国家/地区不使用您显示的地址结构。这样做可能很好,但是如果您也需要处理欧洲或亚洲地址,这是一个更大的问题。
  • 您将如何确保没有用于标识同一地址的不同方向ID?还是没关系吗?