[英]Database design and modeling specific relationships
我正在尝试实施运输和跟踪解决方案。
有一些TRUCKS
通过特定SCHEDULES
上的指定PATHS
将PRODUCTS
从一个CITY
移到另一个CITY
。 TRUCKS
通过CONTAINERS
运输PRODUCTS
。 这些TRUCKS
是通过JOBS
指令的,例如pick_up
, transfer
, drop_off
。
那我遇到的问题是,当product_1
需要由移动truck_1
通过pick_up
JOB
从city_A
到city_C
通过city_B
。 与此同时,有product_2
被移动通过truck_2
经由JOB
的pick_up
从city_C
到city_A
经由city_B
。 这trucks
都可以transfer
( JOB
)他们的containers
(基本上是product
, city_C
通过drop_off
( JOB
)命令回到其原籍city
,即,对于truck_1
,回到city_A
,对于truck_2
,回到city_C
。
所以我有下表:
如何在TRUCKS
之间转移CONTAINERS
的上述场景中建模?
假定卡车和/或卡车司机的任务涉及经历一系列事件,包括遵循路径,进行交货和交易等。假定工作就是这样的事件,其中有几种,例如接送,转移和放下。
关系数据库中的表描述了应用程序的状态。 每个表都有一个关联的(命名)空白语句(谓词)。 基表谓词由设计者给出:
// 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, ...)
(谓词表征了应用程序关系,又称表关系,即表的关系,因此称为“关系模型”。)
谓词的参数是表的列。 当为每个参数提供值时,您将得到一个关于应用程序正确或错误的语句(命题)。 列的值行为每个命名的空白提供此类值。 使表的谓词为true的行进入表。 如果为false的行将保留。 这就是数据库状态描述应用程序情况的方式。 您必须知道表的语句,才能读取或查询数据库,以根据其行找出有关情况的正确与否,并通过在观察情况后将正确的行准确地放入数据库中来更新数据库。
每个查询还具有根据其表的谓词构建的谓词。 两个表的JOIN给出满足其谓词AND的行,UNION OR等等。 查询结果还包含满足其谓词的行 。
(约束与此无关;它们只是共同描述给定谓词和可能出现的应用状态而可能出现的数据库状态。)
您需要确定足够的谓词,才能完全描述应用程序的状况。 其中包括抽象的事物,例如路线和交易,事件,时间表和任务等。(一旦有了足够的谓词/表,我们将通过归一化等技术对其进行改进。)
当存在各种不同的事物时,我们讨论超类型和子类型,并看到谓词,例如(我将使用“ job”作为事件来处理):
// 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,...)
...
(作为事件,在具有两个或多个关联的容器等的情况下,您可能会或可能不会具有不同或其他的转移概念。)(搜索“子类型”。 例如 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.