数据库设计:发票建模

时间:2016-01-04 06:58:17

标签: database database-design modeling

我目前正在开展一个项目,我即将为汽车零售制作一个概念模型。我的主要问题是处理Invoice_Line表之间的1对1的实现,该表与Invoice表明显处于N-1关系,以及一个名为Car的表,该表应该用它唯一的注册号保存有关特定汽车的信息。据我所知,如果我让Car表只包含有关汽车特定类型的信息,那就是它的模型,类等等,这不会是个问题。但我想要的是看起来像这样的发票:

  1. ... car_registration_number ...... ...价格...... ...日期......
  2. ...
  3. 这意味着在invoice_line和table之间使用特定的car_id进行1对1的实现,我想不惜一切代价避免这种情况。有什么进一步的可能性来解决这个问题?由于可区分汽车的每个发票行只能容纳1辆汽车,这是我的设计方式。

1 个答案:

答案 0 :(得分:0)

发票行显示在一张发票中,所以在Invoice_Line

中说明
UNIQUE NOT NULL (invoice, invoice_line_number)

发票必须全部显示在Invoice中,所以请说:

FOREIGN KEY (invoice_number) REFERENCES Invoice (invoice_number)

汽车在Invoice_Line中是唯一的,所以这样说:

UNIQUE NOT NULL (car_registration_number)

汽车必须全部出现在Car中,所以这样说:

FOREIGN KEY (car_registration_number) REFERENCES Car (car_registration_number)

发票行与发票车之间的 是1:1的关系。但这不是问题,因为该关系由Invoice_Line中的汽车+发票行对(汽车+发票+发票行号三元组)表示。