• 步步为营 .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的设计.

  • 相关阅读:
    NSURLConnection和Runloop(面试)
    文件的上传
    CentOS 7防火墙快速开放端口配置方法
    国内常用源镜像地址:
    yum安装zabbix-web-mysql出现[Errno 256] No more mirrors to try.
    1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client。
    http代理和SOCKS代理的区别
    windows下redis安装
    centeros7安装mysql
    nginx配置负载均衡分发服务器笔记
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1992078.html
Copyright © 2020-2023  润新知