如何为销售点系统设计数据库?

时间:2019-08-07 15:04:11

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

我正在开发新的 WPF MVVM EF(代码优先)应用程序,以为其中一个构建销售点系统我的顾客。我看过网上和这里的指南。但是我仍然对数据库设计应该如何感到困惑?

我找到了一个我提到的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; } 
        ...
    }

如果使用这样的方案,可能会出现什么问题?还是关于我应该照顾的计划有一点?

1 个答案:

答案 0 :(得分:0)

对我来说,这看起来非常简单。我只有两条评论:

  1. 产品属于多个类别是很常见的。您可以通过添加另一个将产品与类别相关的表来实现此目的。
  2. Stock与Product的关系为1:1,因此,除非您在“ ...”中隐藏了某些内容,否则必须将它们分隔开,所以您可以将“ Stock”字段放置在Product下。