如何建模数据库以保留驱动程序相关信息?

Mar*_*vin 5 database-design

我正在建模一个类似司机的系统,对于在平台上注册的每个司机,他/她可以是“单独”司机或属于已经关联的公司

独立于驱动程序的类型,注册以下信息:

  • 驱动程序 ID(主键 - 我考虑使用此参数以使系统更加“有序”)
  • 姓名
  • 电子邮件(唯一)
  • 电话号码(唯一)
  • 注册日期(时间戳)

现在,如果是“单独”驱动程序,还会询问以下附加信息:

  • 车辆类型(例如:“汽车”、“摩托车”等)
  • 车牌号(唯一)
  • 会计编号(唯一)

如果他/她属于关联公司,只是名字的的公司将被要求(因为所有的车辆将被关联到汽车公司)。

公司表将具有以下属性:

  • 公司 ID(主键 - 我考虑使用此参数以使系统更加“有序”)
  • 姓名
  • 地址
  • 联系方式(唯一)
  • 电子邮件(唯一)
  • 伊班(独特)
  • 会计编号(唯一)

最后,车辆表将具有以下属性:

  • 车辆 ID(主键 - 我考虑使用此参数以使系统更加“有序”)
  • 公司 ID(外键)
  • 车辆类型
  • 车牌号(唯一)

车辆不能作为独立实体存在,即它必须与司机或现有公司相关联。

我想使用关系数据库对此场景进行建模,因为此信息将与路由算法相结合。我很难为这个问题找到一个“干净”的解决方案(特别是考虑到我们将相关实体信息,车辆,存储在两个不同的表中)......那么,对这种情况进行建模的最佳方法是什么?

对澄清请求的回应

  1. 在您的业务领域,一个单独的司机有可能最终为汽车公司工作吗?
  2. 汽车公司工作的司机有可能成为独行司机吗?
  3. 一个能驱动程序是工作了汽车公司,并在同一时间,被工作,以及作为一个单独的dirver

关于问题 1 和问题 2,这些是我还没有完全考虑过的情况,但它们似乎是合理的可能性,因此我们可以认为这些是可能的情况。

关于问题3,暂时先考虑一个只能是个人司机或者公司司机

Wes*_*Wes 1

假设还有一个可以与驱动程序关联的“公司”表?

如果是这样,一种选择如下:

司机:

  1. 驱动程序_ID (PK)
  2. Vehicle_ID(FK 到 Vehicle...可为空)
  3. Company_ID(FK 到公司...可为空)
  4. olo_driver(布尔值[某种可选,但可能有用])
  5. 其他属性...

车辆:

  1. 车辆_ID(PK)
  2. Company_ID(FK 到公司...可为空)
  3. 其他属性...

公司:

  1. 公司_ID(PK)
  2. 其他属性...

如果驾驶员是单独驾驶员,则他们有一个关联的 Vehicle_ID 如果驾驶员是公司驾驶员,则他们有一个关联的 Company_ID - 公司_ID 将具有关联的(一对多)车辆_ID

  • 这似乎是个好主意!就良好实践而言,允许 FK 具有 NULL 值是否可能会对系统性能产生负面影响? (2认同)
  • 此外,在驱动程序表中,由于单独的驱动程序比与其他公司关联的驱动程序具有更多属性,因此当我注册公司驱动程序时,这些属性将具有什么值?它们被设置为NULL? (2认同)
  • 如何创建另一个表,其属性是各个驱动程序所需的属性,并且在驱动程序表中我们只保留两种类型驱动程序之间的公共属性?您认为这会给系统的架构带来一些好处吗? (2认同)