Fork me on GitHub
步步为营 .NET三层架构解析 二、数据库设计
要开发用户管理系统,我们首先要了解需求,现在就举一个简单需求,用户表,假设有两种角色用一个字段departID来判断,管理员和员工,
我们要先建一个用户表custom和一个部门表department:
CREATE TABLE [dbo].[custom](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [cname] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [departID] [int] NOT NULL,
    [age] [int] NOT NULL,
    [ename] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [password] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
 CONSTRAINT [PK_custom] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY];
  
CREATE TABLE [dbo].[department](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [departname] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [description] [nchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
 CONSTRAINT [PK_department] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
建完数据库表后,开始写存储过程,插入一条数据:
CREATE PROCEDURE [dbo].[spInsertCustom]
@cname nvarchar(50),
@ename nvarchar(50),
@age int,
@departID int,
@password nvarchar(50)
AS
BEGIN
insert into custom(cname,departID,age,ename,password) values (@cname,@departID,@age,@ename,@password)
END
  
RETURN @@Identity
create PROCEDURE [dbo].[spInsertDepartment]
@departname nvarchar(50),
@description nvarchar(50)
AS
BEGIN
    insert into department(departname,description)values(@departname,@description)
END
  
RETURN @@Identity

现建两个更新一条数据的存储过程:

CREATE PROCEDURE [dbo].[spupdatecustom] 
@id int,
@cname nvarchar(50),
@departID int,
@age int,
@ename nvarchar(50),
@password nvarchar(50)
AS
BEGIN
    update 
       custom 
    set
    cname = @cname,
    departID = @departID,
    age = @age,
    ename = @ename,
    password = @password
    where id = @id
END
COMMIT TRAN
create procedure spupdatedepart
(
@departname nvarchar(50),
@description nchar(10),
@id int
)
as
UPDATE [dbo].[department]
   SET [departname] = @departname
      ,[description] = @departname
 WHERE id=@id

再新建两个取出所有用户的存储过程:

CREATE PROCEDURE [dbo].[spGetcustom]
      
AS
BEGIN
    select * from custom order by id desc
END
create PROCEDURE [dbo].[spGetAlldepartment]
  
AS
BEGIN
    select * from department 
END

再新建一个根据ID取出一条数据的存储过程:

CREATE PROCEDURE [dbo].[spGetcustomer]
@id int
AS
BEGIN
 select * from custom where id = @id
END

现建一个根据部门名取部门ID的存储过程:

create PROCEDURE [dbo].[spGetdepartmenter]
@departname nvarchar(50)
AS
BEGIN
    select * from department where departname = @departname
END

再建两个根据ID删除数据的存储过程:

create PROCEDURE [dbo].[spDeletecustom]
@id int
AS
BEGIN
     delete custom where id = @id
END
CREATE PROCEDURE spdeletedepart
@id int
AS
BEGIN
    delete department where id = @id
END
GO

数据库设计就建好了,这只是一个简单的示例.欢迎拍砖.

下次讲解SQLHelper的设计.

posted on   HackerVirus  阅读(195)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2010-03-23 ASP.NET:就是喜欢Web Form,就是喜欢拖控件(五)
2010-03-23 ASP.NET:就是喜欢Web Form,就是喜欢拖控件(四)
2010-03-23 ASP.NET:就是喜欢Web Form,就是喜欢拖控件(三)
2010-03-23 ASP.NET:就是喜欢Web Form,就是喜欢拖控件(一)
2010-03-23 ASP.NET:就是喜欢Web Form,就是喜欢拖控件(二)
2010-03-23 程序员心底的小声音
2010-03-23 程序员能力矩阵 你属于哪一层?
点击右上角即可分享
微信分享提示