【问题标题】:Database design and modeling specific relationships数据库设计和建模特定关系
【发布时间】:2017-07-13 11:16:12
【问题描述】:

我正在尝试实施运输和跟踪解决方案。

TRUCKSPRODUCTSCITY 移动到另一个CITY,通过指定PATHS 在特定SCHEDULES 上。 TRUCKS 通过CONTAINERS 传输PRODUCTS。这些TRUCKS 是通过JOBS 指示的,例如pick_uptransferdrop_off

我遇到的问题是product_1 需要通过truck_1 通过pick_up JOBcity_A 移动到city_C 通过city_B。同时,product_2truck_2 通过pick_upJOBcity_C 移动到city_A 通过city_Btrucks 可以transfer (JOB) 他们的containers (本质上是product 并返回它们的原点city,即truck_1,返回city_A 和@987654357 @,通过drop_offJOB)的命令返回city_C

所以我有以下表格:

  • 卡车 (truck_id, truck_code, ...)
  • 产品(product_id、product_code、product_name、...)
  • CONTAINER(container_id、container_desc、...)
  • 城市(city_id、city_name、city_desc、...)
  • PATH(path_id、from_city_id、to_city_id、...)
  • SCHEDULE(schedule_id、schedule_name、schedule_desc、start_time、end_time、 ...)
  • TRANSACTION(transaction_id、transaction_name、transaction_desc、...)

我如何模拟上述CONTAINERSTRUCKS 之间传输的场景?

【问题讨论】:

  • 我不确定这里的任何人怎么会知道,因为这完全取决于域。
  • 好吧,在再看这个问题之后,人们开始看到模式,例如我可以看到这个问题类似于 UPS/FEDEX 场景的问题,即如果我从纽约订购东西并且我住在加州,UPS 将提供它。有谁知道我在哪里可以找到类似于运输/运输场景的模型?你同意我的评估吗?
  • 如果我理解正确,您希望我们使用上述实体设计数据模型。如果您在创建复杂模型时遇到问题 - 这似乎是 - 仅从一些实体开始,然后展开。我猜您缺少一些实体,例如:您在哪里存储多少产品存储在哪些容器中?
  • @tvCa - 我不希望你设计数据模型。我会说我已经按照说明设计了其中的大部分。我不是在设计一个完整的 ERP 解决方案,只是添加它,因此我不需要跟踪订单详细信息、运输详细信息、发票等。
  • 好的,那么请澄清确切的问题。不适合我,但适合所有人。

标签: sql-server database oracle database-design erd


【解决方案1】:

据推测,卡车和/或卡车司机的任务涉及经历一系列事件,包括遵循路径以及进行交付和交易等。据推测,工作就是这样的事件,其中有多种类型,例如取货,转移和下车。

关系数据库中的表描述了应用程序的状态。每个表都有一个关联的填充(命名)空白语句(谓词)。基表谓词由设计者给出:

// truck [truck_id] has code [truck_code] and ...
TRUCK (truck_id, truck_code, ...)
// product [product_id] has code [product_code] and name [product_name] ...
PRODUCT (product_id, product_code, product_name, ...) 

(谓词表征应用关系,又名关系,由表表示,又名关系,因此是“关系模型”。)

谓词的参数是表的列。当您为每个参数提供值时,您会得到一个关于您的应用程序对或错的陈述(命题)。列的一行值为每个命名空白提供了这样的值。使表的谓词为真的行进入表中。 if false 的行留在外面。这就是数据库状态描述应用程序情况的方式。您必须知道表的语句才能读取或查询数据库,以根据其行找出有关情况的真假,并通过在观察情况后准确地将提出真实命题的行放入数据库来更新数据库.

每个查询也有一个根据其表的谓词构建的谓词。两个表的 JOIN 给出满足其谓词 AND 的行,UNION OR 等。还有a query result also holds the rows that satisfy its predicate

(约束与此无关;它们只是集体描述了给定谓词和可能出现的应用程序状态时可能出现的数据库状态。)

您需要确定足够的谓词才能完全描述您的应用程序的情况。这包括抽象的东西,如路线、事务、事件、时间表和分配等。(一旦我们有足够的谓词/表,我们就会通过规范化等技术对其进行改进。)

当我们谈论超类型和子类型并看到谓词(我将使用“工作”,我认为这是一个事件)时,我们会谈论不同种类的事情:

// job [job_id] for trucker [trucker_id] is ... stuff about all jobs ...
JOB(job_id, trucker_id...)
// job [job_id] is a pickup with ... stuff about pickups ...
PICKUP(job_id, container_id...)
// job [job_id] is a transfer with ... stuff about transfers
TRANSFER(job_id,...)
...

(您可能有也可能没有不同的或额外的传输概念,即具有两个或更多关联容器等的事件)(搜索“子类型”。Eg.

【讨论】:

  • 感谢您提供有关关系、*类型等方面的深刻信息。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多