.NET数据库编程求索之路--2.示例系统概览与设计(1)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 2  示例系统概览与设计(1)   本章首先向你介绍一个贯穿全书的小型示例系统(订单管理系统),然后引导你完成系统数据库和界面的设计、创建工作。  本章主要内容:    系统概览    设计数据库    创建数据库    设计界面 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
 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
12天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
21 2
|
21天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
23天前
|
安全 网络安全 数据库
数据安全之认识数据库漏洞扫描系统
数据库漏洞扫描系统是一种专业的数据库安全产品,它基于对数据库访问控制、数据库审计、资源管理、数据库加密以及数据库系统本身安全机制的深入分析,深入研究和发现数据库系统本身存在的BUG以及数据库管理、使用中存在的问题。
37 4
|
1月前
|
SQL 数据库连接 数据库
你不知道ADo.Net中操作数据库的步骤【超详细整理】
你不知道ADo.Net中操作数据库的步骤【超详细整理】
16 0
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
65 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
1月前
|
数据库
ABAP 泛型编程实战 - 分享一个数据库表内容的拷贝工具试读版
ABAP 泛型编程实战 - 分享一个数据库表内容的拷贝工具试读版
20 0
|
22天前
|
存储 NoSQL Java
Java数据库编程指南:实现高效数据存储与访问
【4月更文挑战第2天】Java开发者必须掌握数据库编程,尤其是JDBC,它是连接数据库的标准接口。使用Spring JDBC或JPA能简化操作。选择合适的JDBC驱动,如MySQL Connector/J,对性能至关重要。最佳实践包括事务管理、防SQL注入、优化索引和数据库设计。NoSQL数据库如MongoDB也日益重要,Java有对应的驱动支持。理解这些概念和技术是构建高效数据库应用的基础。
Java数据库编程指南:实现高效数据存储与访问
|
1月前
|
SQL 监控 安全
数据安全之认识数据库审计系统
随着企业业务数据量的不断增长和数据存储的集中化,数据库成为企业的核心资产之一。然而,数据库面临着各种安全威胁,如SQL注入、权限滥用、数据泄露等。为了保障数据库的安全性和完整性,企业需要采取有效的审计措施来监控和记录数据库的操作行为。本文让我们一起来认识数据库审计系统。
32 1
|
9天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
12天前
|
存储 NoSQL 安全
物流系统数据库的应该以及选择
物流系统数据库在信息化建设中扮演关键角色,用于数据存储、管理和共享,支持决策,并优化资源配置。选择数据库时要考虑类型(如关系型或NoSQL)、性能稳定性、成本易用性、安全性和未来发展需求。完善数据管理与安全措施,确保数据准确性和系统扩展性,是提升物流效率和企业竞争力的关键。
16 3