zoukankan      html  css  js  c++  java
  • .NET数据库编程求索之路2.示例系统概览与设计(1)

    2  示例系统概览与设计(1)


      本章首先向你介绍一个贯穿全书的小型示例系统(订单管理系统),然后引导你完成系统数据库和界面的设计、创建工作。
      本章主要内容:
        系统概览
        设计数据库
        创建数据库
        设计界面


    2.1  示例系统概览


      示例非常简单,是一家商店用的订单管理系统。你可以把这家商店想象成一个家居用品商店,顾客在商店里体验并挑选中意的商品,售货员记录顾客的联系方式、订购的商品并收取定金,然后通知仓库配货和发货,最后顾客收到货物并支付尾款,交易完成。我们的订单管理系统是辅助售货员工作的程序,它在主界面里列出已记录的订单基本信息,并提供基于顾客姓名的简单查询功能,如图2-1:

    图2-1  订单列表界面

    售货员可以新增、修改或删除选中的订单,新增/修改订单的界面如图2-2:

     

    图2-2  订单新增/修改界面

      显然,这是一个小程序,甚至不能称其为系统,它主要实现对数据库的CRUD(Create、Read/Retrieve、Update和Delete)等基本操作。本书采用各种方式实现它,好像用牛刀杀鸡一样。但是,为了更清晰的探索各种实现方式,而不是这家商店的业务,请你从观赏的角度看它,并把它当作大系统的一部分。
      该程序基于SQL Server 2005 Developer Edition数据库系统,采用Visual Studio 2010 Professional Edition集成开发环境,利用C#语言开发。

     

    2.2  设计数据库


      为实现上述系统功能,我们设计一个名为“HomeShop”的数据库,它包括三个数据表:Order表,存储订单的基本信息;OrderItem表,存储订单的详细信息,即顾客具体订购的商品信息;OrderState表,存储订单的状态分类信息。三个表的字段与表间关系设计如图2-3所示,其中,OrderState表与Order表是一对多的关系,Order表与OrderItem表是一对多的关系。

    图2-3  数据库设计

     

    Order表字段详细设计如表2-1:


    表2-1  Order表字段详细设计  

    列名

    数据类型

    允许空

    说明

    OrderID

    int

    订单ID,主键,自增标识

    OrderTime

    datetime

    下单时间

    OrderStateCode

    char(1)

    订单状态代码,外键,关联OrderState表的Code字段

    CustomerName

    varchar(30)

    顾客姓名

    CustomerPhoneNo

    varchar(15)

    顾客联系电话

    CustomerAddress

    varchar(60)

    送货地址

     
    OrderItem表字段详细设计如表2-2:


    表2-2  OrderItem表字段详细设计  

    列名

    数据类型

    允许空

    说明

    OrderItemID

    int

    订单条目ID,主键,自增标识

    OrderID

    int

    订单ID,外键,关联Order表的OrderID字段

    Product

    varchar(30)

    商品名称

    UnitPrice

    decimal(18, 2)

    单价(元),保留两位小数

    Quantity

    int

    订购数量

     

     OrderState表字段详细设计如表2-3:


    表2-3  OrderState表字段详细设计 

    列名

    数据类型

    允许空

    说明

    Code

    char(1)

    订单状态代码,主键

    Name

    varchar(10)

    订单状态名称

     

    2.3  创建数据库

      下面,我们采用SQL脚本的方式快速创建数据库、表和关系。
      第1步 点击系统任务栏【开始】→【Microsoft SQL Server 2005】→【SQL Server Management Studio】,启动SQL Server管理器。在“连接到服务器”窗体中,单击【连接】按钮。

     

     图2-4  连接到服务器


      第2步 进入SQL Server管理器主窗口后,单击工具栏【新建查询】按钮,输入脚本代码2-1,再单击工具栏【执行】按钮,创建HomeShop数据库。


    代码2-1  创建数据库  

    CREATE DATABASE [HomeShop]

     

     图2-5  执行SQL脚本代码

     

       第3步 清空上一步中的脚本,输入脚本代码2-2,再单击工具栏【执行】按钮,创建Order、OrderItem、OrderState表。

    代码2-2 创建数据表

    USE [HomeShop]

     

    CREATE TABLE [dbo].[Order](

        [OrderID] [int] IDENTITY(1,1) NOT NULL,

        [OrderTime] [datetime] NOT NULL,

        [OrderStateCode] [char](1) NOT NULL,

        [CustomerName] [varchar](30) NOT NULL,

        [CustomerPhoneNo] [varchar](15) NOT NULL,

        [CustomerAddress] [varchar](60) NULL,

        CONSTRAINT [PK_Order] PRIMARY KEY CLUSTERED

        (

           [OrderID] ASC

        )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

    ) ON [PRIMARY]

     

    CREATE TABLE [dbo].[OrderItem](

        [OrderItemID] [int] IDENTITY(1,1) NOT NULL,

        [OrderID] [int] NOT NULL,

        [Product] [varchar](30) NOT NULL,

        [UnitPrice] [decimal](18, 2) NOT NULL,

        [Quantity] [int] NOT NULL,

        CONSTRAINT [PK_OrderItem] PRIMARY KEY CLUSTERED

        (

           [OrderItemID] ASC

        )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

    ) ON [PRIMARY]

     

    CREATE TABLE [dbo].[OrderState](

        [Code] [char](1) NOT NULL,

        [Name] [varchar](10) NOT NULL,

        CONSTRAINT [PK_OrderState] PRIMARY KEY CLUSTERED

        (

           [Code] ASC

        )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

    ) ON [PRIMARY]

      第4步 清空上一步中的脚本,输入脚本代码2-3,再单击工具栏【执行】按钮,创建外键。

    代码2-3 创建外键

    USE [HomeShop]

     

    ALTER TABLE [dbo].[Order] WITH CHECK

    ADD CONSTRAINT [FK_Order_OrderState]

    FOREIGN KEY([OrderStateCode])

    REFERENCES [dbo].[OrderState] ([Code])

     

    ALTER TABLE [dbo].[OrderItem] WITH CHECK

    ADD CONSTRAINT [FK_OrderItem_Order]

    FOREIGN KEY([OrderID])

    REFERENCES [dbo].[Order] ([OrderID])

      第5步 清空上一步中的脚本,输入脚本代码2-4,插入预定义的3条订单状态记录。至此,数据库创建完毕。

    代码2-4 插入数据

    USE [HomeShop]

     

    INSERT INTO [OrderState]

    VALUES('1','开始配货');

     

    INSERT INTO [OrderState]

    VALUES('2','货已送达');

     

    INSERT INTO [OrderState]

    VALUES('3','交易成功');

     

    转载请注明:【 夏春涛 email: xchuntao@163.com  blog: http://www.cnblogs.com/SummerRain
     

  • 相关阅读:
    WCF 第二章 契约 异步访问服务操作
    WCF 第一章 基础 在IIS中寄宿服务
    哈希表 解释 和 实现
    ACM2010省赛总结
    hashTable实现
    c# winform 应用编程代码总结 14
    徽文化让世博更多彩
    c# winform 应用编程代码总结 15
    Socket用法详解
    IE插件技术 BHO C# IE 插件
  • 原文地址:https://www.cnblogs.com/SummerRain/p/2542263.html
Copyright © 2011-2022 走看看