【问题标题】:Improvement on database schema数据库模式的改进
【发布时间】:2013-04-05 00:40:33
【问题描述】:

我正在为一个项目创建一个小型宠物店数据库

数据库需要有一个按供应商的产品列表,可以按宠物类型或产品类别分组。

每个店内销售和客户订单每个订单可以有多个产品,并且附加到他们的员工必须有客户订单并且员工必须有职位,

http://imgur.com/2Mi7EIU

【问题讨论】:

  • 你有什么问题?
  • @TheEwook 我认为这个问题很明显,他想要一个关于如何改进他的架构的建议
  • @James - 我在图像中看不到任何东西
  • 请提供原图链接
  • 希望这个更大 [IMG]i.imgur.com/n5j8xrj.png[/IMG]

标签: sql database oracle


【解决方案1】:

这里有一些随机的想法

  1. 我经常将地址与有地址的事物分开。您可以在 Employee、Customer 和 Supplier 之间建立一对多关系到地址表。这将允许您为每个实体拥有不同类型的地址,并在不触及原始表格的情况下更改地址。

  2. 如果某件商品的价格可能发生变化,您需要以某种方式对此进行考虑。这里的想法是创建一个定价表,或者在销售项目表上捕获价格。

  3. 我不喜欢您处理销售项目表的方式。基于事务类型的不同外键并不完全正确。另一种方法是将 SalesItem SaleID 和 OrderId 替换为 SalesRecordId... 另一个更好的选择是将 InStoreSale、SalesRecord 和 CustomerOrders 中的字段合并到一个表中并在表上添加一个指示符以指示哪种类型的交易是的。

  4. 您可能会尝试在您的桌子上与复数保持一致。例如,CustomerOrders 与 CustomerOrder。

  5. 将 PositionPay 放在 EmployeePosition 表上似乎是为了……同一职位的员工通常可以有不同的薪酬。

  6. PetType 的结构是否足够复杂?您不能拥有适用于一种以上宠物类型的物品吗?例如,鱼缸可以用来养鱼还是蜥蜴?如果是这样,您将需要一个多对多连接表。

希望这会有所帮助!

【讨论】:

  • 感谢我做出一些改变并回复你,SalesRecord 的想法是能够生成每日/每周/每月的销售报告,它仍然不需要吗?
  • 我认为您不需要一个特殊的表格来支持报告...除非您有一些与性能或审计相关的需要来存储报告的结果...如果您需要,我可能会以不同的方式处理。顺便说一句,如果你喜欢这个答案,你介意接受吗?我的个人目标是在这里建立代表;)
  • 感谢接受您的回答我更新了设计让我知道您的想法,我仍然不确定如何改进销售部分i.imgur.com/EQ2rflB.png
  • 复选标记接受答案:)。 1. 拆分城市/国家表没有多大用处,这样做并没有错。 2. 你让城市、国家和快递员的复数问题变得更糟。 3. 订单表现在工作得更好了。 4. 库存项目交叉参考表现在看起来已经长大了……假设你需要它。考虑将它们重命名为 ItemPetType 和 ItemCategory。 5. 如果您向 CustomerOrder 添加了一个名为 IsInStore 作为布尔值的列,您可以完全放弃 InStoreSale 表,也可以放弃 SalesDetails.CustomerOrderId。 6. order.couriername s/b id 不是名字
猜你喜欢
  • 2019-01-18
  • 2017-08-27
  • 2016-10-06
  • 2011-06-29
  • 2011-04-11
  • 1970-01-01
  • 2011-10-16
  • 2014-08-08
  • 1970-01-01
相关资源
最近更新 更多