【问题标题】:How should I design my database for Point of Sale system?我应该如何为销售点系统设计我的数据库?
【发布时间】:2019-12-15 06:22:19
【问题描述】:

我正在开发一个新的 WPF & MVVM & EF (Code First) 应用程序来为其中一个构建销售点系统我的客户。我已经查看了网络和此处的指南。但是我仍然对数据库设计应该如何感到困惑?

我找到了我提到的设计的一个很好的例子,它是this project。但我有点担心可扩展性和质量。

我正在考虑构建这样的方案:

    [Table("Customer")]
    public partial class Customer
    {
        public int CustomerId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FullName => FirstName + " " + LastName;
        ...
    }

    [Table("Category")]
    public partial class Category
    {
        public int CategoryId { get; set; }
        public string CategoryName { get; set; }
        ...
    }

    [Table("Brand")]
    public partial class Brand
    {
        public int BrandId { get; set; }
        public string BrandName { get; set; }
        ...
    }

    [Table("Product")]
    public partial class Product
    {
        public int ProductId { get; set; }
        public string ProductName { get; set; }
        public int CategoryId { get; set; }
        public int BrandId { get; set; }
        public decimal ListPrice { get; set; }
        ...
    }

    [Table("Stock")]
    public partial class Stock
    {
        public int ProductId { get; set; }
        public int Quantity { get; set; }
        ...
    }

    [Table("Order")]
    public partial class Order
    {
        public int OrderId { get; set; }
        public int CustomerId { get; set; }
        public int OrderStatus { get; set; }
        public DateTime OrderDate { get; set; }
        ...
    }

    [Table("OrderItem")]
    public partial class OrderItem
    {
        public int OrderId { get; set; }
        public int ItemId { get; set; }
        public int ProductId { get; set; }
        public int Quantity { get; set; }
        public decimal ListPrice { get; set; } 
        ...
    }

如果我使用这样的方案可能会出现什么样的问题?或者我应该处理的计划有什么意义吗?

【问题讨论】:

    标签: sql-server entity-framework mvvm database-design


    【解决方案1】:

    这对我来说看起来很不错而且很简单。我只有两个 cmets:

    1. 一种产品属于多个类别是很常见的。您可以通过添加另一个将产品与类别相关联的表格来实现这一点。
    2. Stock 与 Product 具有 1:1 的关系,因此实际上您可以将 Stock 字段放在 Product 下,除非您的“...”中隐藏了一些需要将它们分开的内容。

    【讨论】:

    • 首先,您的第一条评论让我对这个过程感到非常自在。因为我对生产场景有点紧张。而对于第二条评论,实际上,我打算添加“商店”表,这意味着不止一个地方可以出售物品。并且“Stock”表将具有“StoreId”。所以我想用这种方式跟踪商店的数量。还有一件事,后端层会不会因为没有按店铺过滤订单而遇到一些问题? (这是一个请求)
    • 这是有道理的。如果您认为将来您有理由将订单与商店相关联,那么我现在将商店 ID 添加到订单中。据推测,您将从下订单的同一家商店进行库存,这将是建立一个有用的关系。
    猜你喜欢
    • 2014-10-23
    • 2011-12-24
    • 2012-12-10
    • 2015-09-24
    • 2017-03-16
    • 1970-01-01
    • 2012-03-16
    • 2017-11-28
    • 1970-01-01
    相关资源
    最近更新 更多