一个表中的数据会影响另一个

时间:2018-02-27 20:36:19

标签: database entities relational

我正在尝试为执行销售,租赁和提供支持的科技公司创建关系数据库。我必须存储每个数据,但是他们销售的商品有可能是基于硬件或软件的。这意味着对于与硬件相关的销售,必须存储交货地址,而软件则不需要这样做。

到目前为止,我已尝试对此进行概念性建模,并决定将表格设为“销售”,“租赁”和“支持”。然后链接到这个,我有“产品”,它将有一个id和通用产品信息,链接到单独的“硬件”和“软件”表。

概念模型的一部分

enter image description here

我担心的是,如果产品是基于硬件的,则销售/租赁/支持表的属性需要不同才能允许地址输入。

这让我真的不知道如何对这部分进行建模,我真的很感激任何人都可以提供的任何意见。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我想你想更多地研究规范化,看看这是否能回答你的问题。我认为你应该专注于一个问题点,并通过数据/解释/ ERD真正扩展它,以向我们展示在什么情况下可用的数据。

让我对你所说的内容进行一些假设:

  

这意味着对于与硬件相关的销售,必须存储交货地址,而软件则不需要这样做。

所以我们假设一个产品已售出。 “销售”是一个包含

等信息的实体
  • 销售日期
  • 售价
  • 数量

然后,如果产品是硬件软件,则会存储额外数据。假设您只存储硬件的额外详细信息 - 即交付地址:

  • 送货地址(仅限硬件销售)

所以听起来像“ Sale_Hardware ”是“ Sale ”的子实体。

产品--->销售(一种产品可以有很多销售,但一次销售只能有一种产品) - 请参阅下面的说明。

SALE ----- SALE_HARDWARE(这是一对一的关系,SALE_HARDWARE只会提供一些基于硬件的SALE数据)。

-

注意:这是一个非常简单的例子。上面我提到了PRODUCT --->出售(一对多),但实际上这不是真的。销售可以包含许多产品。这就是为什么SALE或ORDER通常分为ORDER_ITEMS,每个ORDER_ITEM包含一个PRODUCT。

希望这是有道理的,我希望这涉及到如何使用规范化设计数据库。如果您有任何问题,或者您想更改您的问题,请关注您希望进一步规范化的特定几个实体,请告诉我。

答案 1 :(得分:0)

它缺少很多细节,但我会选择类似的东西。显然你需要填补空白!

所以你得到一个产品表,一个客户表。硬件 - 软件并不重要,但如果必须,请在产品中添加“类型”列。

一条线是一个有数量的产品。订单是一组组合在一起的线。然后,租约也是一堆线组合在一起,但附加条件然后出售。

HKEY_CURRENT_USER\Console
Product
    Productid
    ProductName
    Price
    ToShip: boolean, can this product be shipped or not?
    ....
Customer
    Customerid
    Firstname
    Lastname
    ShippingAddress
    BillingAddress
    Phone
    ...
Order
    Orderid
    Buyer: FK to Customer.Customerid
    ShippingAddress: boolean, true == use address from Customer
                              false == use address here
    ShiptoAddress
    Shipped
    TrackingNumber
Line
    Lineid
    Productid: FK to Product.Productid
    Quantity
    DiscountPercentage
Order <-> Line
    Orderid: FK to Order.Orderid
    Lineid: FK to Line.Lineid
Lease
    Leaseid
    Leaser: FK to Customer.Customerid
    Terms
    ...
Lease <-> Line
    Leaseid: FK to Lease.Leaseid
    Lineid: FK to Line.Lineid

租约可以链接到指定租赁类型的另一个表(标准条件,租赁协议......)。类似于支持的东西。

这允许购买,租赁或支持相同的产品。

只是想法,根据需要进行调整。