我正在尝试为执行销售,租赁和提供支持的科技公司创建关系数据库。我必须存储每个数据,但是他们销售的商品有可能是基于硬件或软件的。这意味着对于与硬件相关的销售,必须存储交货地址,而软件则不需要这样做。
到目前为止,我已尝试对此进行概念性建模,并决定将表格设为“销售”,“租赁”和“支持”。然后链接到这个,我有“产品”,它将有一个id和通用产品信息,链接到单独的“硬件”和“软件”表。
概念模型的一部分
我担心的是,如果产品是基于硬件的,则销售/租赁/支持表的属性需要不同才能允许地址输入。
这让我真的不知道如何对这部分进行建模,我真的很感激任何人都可以提供的任何意见。
提前致谢!
答案 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
租约可以链接到指定租赁类型的另一个表(标准条件,租赁协议......)。类似于支持的东西。
这允许购买,租赁或支持相同的产品。
只是想法,根据需要进行调整。