一直使用php来开发,演示的时候总是看见别人都用的net或者是java,而且人家那两个都带着dll,很厉害的模样。总想学确一直没入手操作, 光是想,到现在都想了有两月了,还是没有动手。现在决定开始动手弄个小东东,由于对强类型的不是太懂,只能通过简单的增删该查来实现。cyq.data太符合我这样的懒人了,只会一点简单的sql语句,强类型,弱类型随便弄,而且感觉就是用到mvc上边也没问题,大不了弄成强类型,所以就决定数据层使用cyq.data了。作者也非常的友好,给我这样的菜鸟不厌其烦的解答。废话不多说了,直接进入主题。
权限这块,我感觉应该有用户表、角色表、菜单表、角色菜单关联表、再来个按钮表,基本上差不多了。这里没有弄用户角色多对多关联,直接用户表指定角色。大致设计如下:
用户表:
CREATE TABLE [dbo].[sys_user]( [id] [int] IDENTITY(1,1) NOT NULL, [deptid] [int] NULL, [roleid] [int] NULL, [username] [nvarchar](50) NULL, [userpass] [nvarchar](50) NULL, [realname] [nvarchar](50) NULL, [tel] [nvarchar](50) NULL, [status] [int] NULL, CONSTRAINT [PK_sys_user] 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]
角色表:(这个表里的power字段先放着,暂时还不使用。目前的想法是power字段存放条件,比如积分大于100或者这个角色只可以查看自身的数据。)
CREATE TABLE [dbo].[sys_role]( [id] [int] IDENTITY(1,1) NOT NULL, [rolename] [nvarchar](50) NOT NULL, [remark] [nvarchar](255) NULL, [power] [nvarchar](max) NULL, CONSTRAINT [PK_sys_role] 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].[sys_menu]( [id] [int] IDENTITY(1,1) NOT NULL, [pid] [int] NOT NULL, [path] [nvarchar](160) NULL, [menuname] [nvarchar](50) NULL, [menuurl] [nvarchar](180) NULL, [menusort] [int] NULL, [sortstring] [nvarchar](30) NULL, [buttonlist] [nvarchar](50) NULL, [remark] [nvarchar](180) NULL, CONSTRAINT [PK_sys_menu] 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].[sys_role_menu]( [roleid] [int] NULL, [menuid] [int] NULL ) ON [PRIMARY]
按钮表:(按钮没几个,基本上就是增删该查,所以直接把按钮放到菜单的buttonlist中去了)
CREATE TABLE [dbo].[sys_button]( [id] [int] IDENTITY(1,1) NOT NULL, [buttonname] [nvarchar](50) NULL, CONSTRAINT [PK_sys_button] 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]
最后再来一个部门表:(部门ID和角色ID都关联到用户表里了,图省事)
CREATE TABLE [dbo].[sys_dept]( [id] [int] IDENTITY(1,1) NOT NULL, [pid] [int] NOT NULL, [path] [nvarchar](180) NULL, [deptname] [nvarchar](50) NOT NULL, [deptsort] [int] NOT NULL, [sortstring] [nvarchar](30) NULL, [remark] [nvarchar](255) NULL, CONSTRAINT [PK_sys_dept] 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]
这里的部门和菜单采用树形操作。表建完了,把空项目的架子搭起来。类似这样:
BLL(类库):逻辑
CYQ.Data(数据库框架):路过秋天老大的数据库框架
DotNet.Utilities(类库):一些公共的类库
Entity(类库):CYQ.Data生成的表枚举、和一些自定义的sql语句
WebApp:具体的项目
明天该实际操作了。