gpt4 book ai didi

mysql - 数据库设计问题-空外键

转载 作者:行者123 更新时间:2023-11-29 09:45:25 25 4
gpt4 key购买 nike

这是一个跟踪费用的 cargo 应用程序。我是后端菜鸟,仍在学习数据库设计。

我希望能够在前端按费用类型(卡车、拖车、一般)以及单个卡车或拖车进行过滤因此,在这里我希望能够仅查看卡车费用,或仅与卡车 #t777 相关的所有费用。

type  | reference  |  category    |  amount   |   date     |    
truck t777 tires $1,200 4-21-2019
truck t777 inspection $250 4-21-2019
truck t777 heating/ac $800 4-21-2019
truck t4555 tires $1,205 4-21-2019
trailer p594 floor $2,200 4-21-2019
general null tax/license $7,000 4-11-2019

一项费用将属于卡车、拖车或一般费用。(仅一项)
一卡车可以有很多费用
一辆拖车可能有很多费用
一般开支可以有很多开支。

根据我的阅读,fk 为空是可以的,但是有更好的方法来设计它吗?

我简化了表格以减少困惑。 enter image description here

tbl Truck
id

tbl Trailer
id

tbl General
id

tb Expenses<br>
id PK <br>
truck_id ( null) FK<br>
trailer_id ( null) FK<br>
general_id ( null) FK

最佳答案

您可以考虑一种技术。这称为共享主键。你可以查一下。

在这种情况下,您需要第四个表,称为 Vehicle(由于缺乏更好的名称)。它只有一个字段,ID。卡车、拖车和常规中的 ID 字段是车辆中相应 ID 的副本。三个 ID 字段被声明为引用车辆表的 PK 和 FK。当您插入新车时,您必须对机箱进行一些额外的编程。

现在,您只需使用一个字段 Vehicle_Id 作为费用中的 FK 即可。

如果类型字段有助于您管理数据,您可以将类型字段添加到“车辆”表中,但如果没有它,您也可以摆脱困境。

关于mysql - 数据库设计问题-空外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55775976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com