关于项目权限在数据库中建表的问题

请问下项目经验丰富的大神们在项目中关于权限建表怎么建立,如:现在有个权限表,里面有权限1,权限2,权限3,权限4,分别对应的权限的编号是1,2,3,4,然后现在有个用户表,假设有一个用户拥有2,3,4的权限,我应该怎么创建这个用户表呢,我不可能在用户表里添加权限字段,然后对应的用户给它插入2,3,4然后用逗号隔开吧??应该怎么设计这个表最合理呢??

4个回答

如果分类比较复杂 你可以再把分类表做一个无限极分类

我给你个最简单的商品表设计

goods(商品表)
id name type_id
1 宝石 5
2 礼物a 3

商品分类表type
id name pid
1 珠宝类 0
2 礼物类 0
3 生日礼物 2
4 金银首饰 1
5 节日礼物 2

商品分类表的设计你可以搜素下 无限极分类

上表就是一个多级的无限极分类设计 结构:

珠宝类
------金银首饰
礼物类
------生日礼物
------节日礼物

然后你再商品里面只保存分类id即可

查询的时候 select * from goods join type where goods.id = 2 结果就是 名称=>礼物a 类型名称=>生日礼物

权限多的话 你可以用rbac的方式 用户表里面存储这个用户的角色即可 这个你可以搜索下rbac 我这就不多讲了

权限少的话 比如就十几个权限 可以通过位运算的方式 如下:
首先把权限定义如下
权限名称 值
add 1
select 2
delete 4
update 8
每一个权限的值都是2的次方 第一个是0次方 第二个1次方 以此类推

比如这个用户有前三个权限 你在用户表里纪录下 前三个值的和 此处值为7 让后保存到用户表里
查询的时候 比如要看这个用户有没有update权限 update的值为8 你用用户保存值 7&8 得到的是false 证明没有
而其他3个 7&1 7&2 7&4 分别为 add update delete 都为false

rbac模式,你这个就像角色表和权限表关系差不多的,加一个中间表存角色id和权限id就行了

打错了 最后一句 应该是都为true 证明有这个权限

zhangsheng_1992
zhangsheng_1992 回复jialiang1012: 然后分类表新增 修改 的时候也不影响商品 但需要做一下约束 就是该分类下有商品的时候不允许删除
大约 3 年之前 回复
zhangsheng_1992
zhangsheng_1992 回复jialiang1012: 很简单 你设计两张表 一张用来放商品 一张用来保存商品分类 然后商品表里面仅保存分类id即可 这样修改新增商品不影响分类
大约 3 年之前 回复
jialiang1012
jialiang1012 由于是后台管理系统,所以可以动态添加分类,
大约 3 年之前 回复
jialiang1012
jialiang1012 像这种商城里的商品分类该怎么设计好呢?
大约 3 年之前 回复
jialiang1012
jialiang1012 回复jialiang1012: 是一种珠宝的分类,比如礼物里面就可以分成“礼物建议类”“赠送对象”“节日礼物”等等还分什么“即将上线”的类,还有“明星同款”等等分类,分的太复杂了,把我弄得晕头转向的
大约 3 年之前 回复
jialiang1012
jialiang1012 恩,那个我现在遇到的是商品的分类,分的类太多了,所以在设计这些表的时候把我自己弄得糊里糊涂的不知道怎么设计最合适
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
在数据库建表的问题
在数据库cmd界面 随便建一个表 和sequence序列有关吗?
怎样在数据库中建表?
安装完oracle8.1.5后我在Oracle Database Configuration Assitant中依次建立rnrn两个数据库database1、database2,怎样进入这两个库里去建表?rnrn在命令模式下:rnsvrmgrlrnconnect intenal/oraclernstartuprncreate table a(a number)rn这样这个表建到那个库里去了
如何在数据库中建表
我在页面中放了一个文本框,然后在SqlCommand sqlcom=new SqlCommand("create database 数据库名");rn我用的数据库名是变量,是从文本框中取的值,现在想在这个新建的数据库上建表要怎样建rnuse 数据库名,数据库名写变量是不对的,怎样写呢?求助!!!rn
利用cb在数据库中建表的问题
在帮助中有下面几行代码,其中rnTFieldDef *pNewDef = Table1->AddFieldDef();报错,说Table控件中没有这个函数,请问我应该怎么改才能使这段代码运行正确呢?是不是需要家头文件?(下面是代码原文)rn 求各位高人指教!!!rn谢谢rnrnrnrnrnrnif (!Table1->Exists) // Don't overwrite an existing table rnrnrnrn Table1->Active = false; // The Table component must not be activernrn // First, describe the type of table and give it a namern Table1->DatabaseName = "BCDEMOS";rn Table1->TableType = ttParadox;rnrn Table1->TableName = "CustInfo";rnrn // Next, describe the fields in the tablernrn Table1->FieldDefs->Clear();rn TFieldDef *pNewDef = Table1->AddFieldDef();rn pNewDef->Name = "Field1";rn pNewDef->DataType = ftInteger;rnrn pNewDef->Required = true;rnrn pNewDef = Table1->AddFieldDef();rnrn pNewDef->Name = "Field2";rn pNewDef->DataType = ftString;rnrn pNewDef->Size = 30;rnrn // Next, describe any indexesrnrn Table1->IndexDefs->Clear();rn /* the 1st index has no name because it is a Paradox primary key */rn Table1->IndexDefs->Add("","Field1", TIndexOptions() <IndexDefs->Add("Fld2Index","Field2", TIndexOptions() << ixCaseInsensitive);rnrn // Now that we have specified what we want, create the tablernrn Table1->CreateTable();rn
用C#语言在数据库中建表
在VS中操作rn在C#中写代码然后可以在SQLServer中的某个数据库中生成数据表TAbelrn
用JSP怎样在数据库中建表?
比如:我想在yi数据库中建一个aa的表:rn<%@ page language="java" import="java.sql.*" contentType="text/html;charset=gb2312"%>rn<%rnjava.sql.Connection conn;rnjava.sql.Statement stmt;rnjava.sql.ResultSet rs;rnClass.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();rnString url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tao";rnString user="sa";rnString password="";rnconn=DriverManager.getConnection(url,user,password);rnstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rn%>rn<%rnsql = "CREATE TABLE abc(rna varchar(40) NOT NULL,rnb varchar(40) NOT NULL)";rnstmt = conn.createStatement();rnstmt.executeUpdate(sql);rn%>rnrn结果出来的是那个CREATE已经定义~!rnrn什么原因~!
java实现在数据库中建表(mysql数据库)
public class ColumnVo { private String columnName;//字段名称 private String columnType;//字段类型 &quot;整数&quot;,&quot;小数&quot;,&quot;字符串&quot;,&quot;时间&quot; private Integer columnSize;//字段大小 private Boolean isNullable;//是否可为空 ...
hibernate+mysql在数据库中建表发生错误
23:18:35,000 ERROR SchemaExport:202 - schema export unsuccessfulrncom.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: rnrn** BEGIN NESTED EXCEPTION ** rnrnjava.io.EOFExceptionrnrnSTACKTRACE:rnrnjava.io.EOFExceptionrn at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1934)rn at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:483)rn at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:992)rn at com.mysql.jdbc.Connection.createNewIO(Connection.java:2568)rn at com.mysql.jdbc.Connection.(Connection.java:1485)rn at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)rn at java.sql.DriverManager.getConnection(Unknown Source)rn at java.sql.DriverManager.getConnection(Unknown Source)rn at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)rn at org.hibernate.tool.hbm2ddl.ManagedProviderConnectionHelper.prepare(ManagedProviderConnectionHelper.java:28)rn at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:180)rn at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:133)rn at com.bjsxt.hibernate.ExportDB.main(ExportDB.java:15)rnrnrn** END NESTED EXCEPTION **rnrnrnrnLast packet sent to the server was 16 ms ago.rn at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:554)rn at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:992)rn at com.mysql.jdbc.Connection.createNewIO(Connection.java:2568)rn at com.mysql.jdbc.Connection.(Connection.java:1485)rn at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)rn at java.sql.DriverManager.getConnection(Unknown Source)rn at java.sql.DriverManager.getConnection(Unknown Source)rn at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)rn at org.hibernate.tool.hbm2ddl.ManagedProviderConnectionHelper.prepare(ManagedProviderConnectionHelper.java:28)rn at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:180)rn at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:133)rn at com.bjsxt.hibernate.ExportDB.main(ExportDB.java:15)rn
如何在数据库赋予权限
原来是同事帮我创建的帐号.但是现在很多权限没有 我要alter一个字段进去 都没办法进去rn试了几种添加权限的办法都没成功.总是提示:rn1045-access denied for user 'msol'@'localhost'(using password:YES)rn原表也没grant权限!rn
这些权限如何在数据库中存储
我在后台分管理分为三类角色,普通操作员,高级维护员,系统管理员三种角色rn比如后台功能分类分为共十点:rn1,新闻发布rn2,新闻管理rn3,评论管理rn......rn比如:rn普通操作员有权限:1.3.7rn高级维护户有权限:2.4.5rn系统维护员有权限:全可以,rn而且这些权限根据情况有时系统管理员可以有选择性重新分配,rn问题:请教,角色分配的这些权限如何在数据库中存储????rnrn比如普通操作员,权限为1,3,7 在表中一个字段里写一个字符串1,3,7么?rn然后写一个小算法判断所要执行的权限存不存在?rn还有没有别的办法?rn
问一个ADO在数据库中建表的问题,请来帮忙。
想用ADO在数据库中动态创建表格。并且会自动检查,当数据库里有重名的表时,先删除这个表,再创建。rnrn请高人帮忙。
关于在数据库插入数据问题
int a = 0;rnOleDbCommand com1 = new OleDbCommand("insert into 联系人管理(名称,编号) Values('小王',a)", conn);rn这样是错的,我想在Values里用参数表示,因为数据时动态的,不可能永远在程序里直接写出值,可是我应该怎么把 a 的值添加进去呢,求大神指点
关于在数据库中保存换行符的问题。
请问怎样在SQL数据库中保存换行符,而且将SQL库中的表导出为XLS电子表格的时候单元格内能正确换行?rn我用的是chr(13)+chr(10)但是导出XLS的时候看不出效果。
关于在数据库中插入图片的问题
在数据库中,将图片插入到数据库中时,要将图片文件转化为二进制数据,如何获得该数据.?rn(我不想用DataSet)
关于在数据库中批量替换字符串的问题.
1.要求在输入查找名称,输入替换的名称,输入要查找的字段名.rn2.查找替换时必须要求是在字段中的任务位置.rnrn如我有一个数据库dbrn其中有两条记录,其中rn记录一:url字段值为"http://202.101.112.01/test/01.htm"rn记录二;url字段值为"http://202.101.112.01/test1/02.htm"rnrn此时程序输入查找名称"202.101.112.01",输入替换名称"202.101.112.02",rn输入字段名urlrn经过程序输入后的结果是rn记录一成了:"http://202.101.112.02/test/01.htm"rn记录二成了:"http://202.101.112.02/test1/02.htm"rnrn我想实现的就是这个结果,请问哪位高手知道用asp程序如何做.rnrnrnrnrn
关于在数据库中保存图片和操作问题??
现在我决定将图片报存在数据库中,数据库是pb7自带的asa,但是我不知道用什么数据类型,里面没有bolb类型,有一个bigint类型,是它么??rn我该怎么保存及显示图片,因为我以前从来没用开发过关于图片的数据库,能给我写的详细一些么,例如用什么函数等等,怎么保存,怎么提取,怎么显示??谢谢了
关于在数据库中添加记录的问题?
我要在数据库中添加记录,将4个TEXT控件中的内容添加到数据库相应的字段里,请问如何实现?谢谢!
关于在数据库中检索最大值的问题
我使用Adoquery和adotable 使用adoconnection为connection.我现在想在数据库中查找某一字段的最大值,并将该最大值输出。请问分别用Adoquery和adotable怎么实现这个功能呢?能给点代码提示一下吗?谢谢
关于在数据库中存储图片的问题?
将图片文件以二进制的形式存储到数据表中,且数据表的数据量可能达到500W,rn这种情况下select/insert的速度大概有多快?这样的设计合理么?rnrn环境:windows 2000 / CPU:3.0G /1G RAM /SCSI DISK
Django如何在数据库中创建表
1.前提是你安装了Django框架在你的项目中运行Django ZIP文件中的python Setup.py install 2.前提是你已经安装了MySQLdb这个框架在你的项目中1.2.2(直接有EXE文件) 3.前提是你已经安装了PIL-1.1.7.win32-py2.6.exe图片数据库在你的项目中 4.以上准备好之后,创建的Django项目django-admin.py sta...
关于#号在数据库中的使用问题
今天使用jsp来写一段代码,插入用户信息的时候,插入了一个用户名为C#的用户,结果是成功的插入了这一条记录,但是当我使用这个字段来查找用户时,在数据库中查找可以查找到,通过jsp页面却显示空指针异常(其他记录都没有产生空异常),求教是否与#这个符号有关系,因为没有#的记录都可以从jsp页面查找到。注:数据库为mysql数据库,数据库和页面编码都是gbk;
关于文件在数据库中存储的问题
如何将文件保存到数据库中的某个字段中
关于在数据库中查询的问题
ResultSet rs = null;rn String sql = "select * from managert where managerid=?";rn stmt = new DataBaseA("Gel");rn stmt.prepare(sql);rn stmt.setParater(1, userName);rn rs = stmt.prepareQuery();rn这是一个javabean的部分内容,我想问第2句的数据库查询语句为什么有where managerid=?,这个?代表什么意思啊
关于在数据库中添加数据的问题(ASP.NET)
用了一个SqlDataSource控件绑定数据库,再用GridView控件显示,自带有编辑,删除功能,现在想加一个保存功能,就是要能实现在文本框中输入文本之后,点击保存,新数据可以添加到数据库中。rn1,添加数据成员:rnprivate bool AddFlag = false;rn private SqlConnection MyConnection = new SqlConnection();rnrnrn2,页面加载事件代码:rn[color=#FF0000]this.dianwei_1TableAdapter.Fill(this.SqlDataSource1.dianwei_1);rn GridView1_CellClick(null, null);[/color] //这个有错的,不知道怎么更改,请高手详细解答下。rnrn3,单击“保存”代码:rn。。。。rn。。。。rn。。。。(前面这部分省略,主要是确定参数数据类型和参数赋值)rn[color=#FF0000]cmd.ExecuteNonQuery();rn SqlDataSource1.AcceptChanges();rn dianwei_1TableAdapter.Fill(this.SqlDataSource1.dianwei_1);rn GridView1.DataBind(); [/color]这部分也有错,因为我手头上的学习资料是讲解窗体版的,有个别跟WEB版做的不一样,所以这些不明白,请懂的兄弟帮帮忙rn rn catch Label12.Text = "数据错误"; rn finally MyConnection.Close(); rn
hibernate+sqlserver2000 无法自动在数据库中创建表
一个项目用的mysql 后来转为sqlserver,按照网上的说明修改了hibernate配置,如何修改不表,网上有的是,但是启动后提示无法自动创建表,原因是数据库不存在或是无权限,我数据库也建了啊,捣鼓了一上午,突然灵机一现,发现sqlserver数据库的表前缀是dbo. 于是果断修改每个表的对应xxx.hbm.xml, ,在表明钱添加dbo. 前缀。问题解决!...
如何利用DataSet在数据库中创建表
[code=csharp] SqlConnection sc = new SqlConnection("Server=;Database=;Trusted_Connection=SSPI");rn sc.Open();rnrn DataSet ds = new DataSet();rn SqlDataAdapter da = new SqlDataAdapter("select * from userdata", sc);rn da.Fill(ds);rn SqlCommandBuilder scb = new SqlCommandBuilder(da);rn DataTable dt = new DataTable("newtable1");rn dt.Columns.Add(new DataColumn("name", typeof(string)));rn dt.Columns.Add(new DataColumn("age", typeof(int)));rn DataRow newrow = dt.NewRow();rn newrow["name"] = "user";rn newrow["age"] = 30;rn ds.Tables.Add(dt);rn da.Update(ds, "newtable1");rnrn sc.Close();rn Console.ReadKey();[/code]rnrn运行之后没有报错,可是数据库里面也没有创建新的表。请教一下错误出在哪里?rn我知道用查询语句创建一个表之后再插入行更省事,可我还是想搞明白我这个是哪里出错了。
如何在数据库中创建表。(在线等待)
现在我已经连好了数据库,但如何在其中创建表。
spring+hibernate+sqlserver2000 无法自动在数据库中创建表。
很简单的一个程序,包含一个pojo类,一个xml映射文件,一个业务逻辑类,当实例化spring容器,调用这个业务逻辑类的方法,进行数据库操作时,就会报下面的错误。rnog4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).rnlog4j:WARN Please initialize the log4j system properly.rnHibernate: insert into students (name, birthday) values (?, ?)rnException in thread "main" org.hibernate.exception.SQLGrammarException: could not insert: [com.firstssh.bean.Students]rnrn。。。。。。。。。。。。。。。rnrnCaused by: com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'students' 无效。rnrn我打开数据库,发现没有这个pojo类所对应的表,那也就是为什么会报:对象名'students’无效的原因了。但是这个程序在mysql中可以运行的,换成sql server2000就不行了,不能自动的创建表。rn于是,我就手动在数据库中创建了一个students表,然后运用Myeclipse的反相工程自动生成pojo类和映射文件。调用业务逻辑,这次没有报错。但是。当我把数据库中的表删除,重新运行程序,又出现了以上错误。rn我感觉,出现这个错误的原因就是,hibernate不能在数据库中自动创建这个students表,但中找不到什么原因,期待高手,给小弟指点一下。rnrnapplicationContext.xmlrnrnrnrn rn rn rn rn rn rn rn rn rn rn rn rn com/firstssh/bean/Students.hbm.xmlrn rn rn rn rn rn org.hibernate.dialect.SQLServerDialectrn rn rn creatrn rn rn truern rn rn rn rn rn rn rn rn rn rnrnrnrnrnStudents.hbm.xmlrnrnrnrnrnrn rn rn rn rn rn rn rn rn
在数据库中显示图片问题
我在Access2000里设置了一个OLE字段,但在delphi里用DBimage连接时总是出错,请问该如何正确的显示Access2000中的图片数据?
在数据库中添加数据的问题???
表中的主键是用户的ID,这个ID是varchar型的用PL作前缀例如:PL0001,如果要求每添加一条id的数字便加一,象:PL0002,PL0003等,要求数据库自动添加怎样实现?
在数据库中插入数据的问题
下面代码执行后没有出错信息,但数据也没有插入到数据库中,请高手指教rn public void hykh()rn rn OleDbConnection sg = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0;" + "Data Source = C:\\Documents and Settings\\知秋一叶\\My Documents\\Visual Studio Projects\\ff\\sg.mdb");rn int hybh;rn string hyxm,lxdh,jtzz;rn hybh = int.Parse(textBox_hybh.Text.Trim());rn hyxm = textBox_hyxm.Text.Trim();rn lxdh = textBox_lxdh.Text.Trim();rn jtzz = textBox_jtzz.Text.Trim();rn sg.Open();rn OleDbCommand hykh = sg.CreateCommand();rn hykh.CommandText = "INSERT INTO hyxxb " + "hybh,hyxm,lxdh,jtzz" + "VALUES ( '"+hybh+"','"+hyxm+"','"+lxdh+"','"+jtzz+"');";rn //int n = hykh.ExecuteNonQuery();rn sg.Close();rnrnrn
在数据库中插入图片
我想问一下怎样在数据库中插入图片rn是连接图片的路径还是把图片直接插进去啊!
在数据库中‘+’的用法
我建两个存储过程,但不知道结果是不是一样的,发上来给大家看看给点意见我rncreate proc spClientInfrn@ClientName varchar(8)='%',rnrnasrnselect * from dbo.tClientrnwhere cname like '@clientname%'rngorn另一个是:rncreate proc spClientInfrn@ClientName varchar(8)='%',rn@rnasrnselect * from dbo.tClientrnwhere cname like '@clientname'+'%'rngornrn执行的结果是否一样,这个+的作用是否连接字符串的意思rn
在数据库中保存数据
在数据库中保存数据
在数据库中获取当前时间
oracle: select sysdate from dual; sqlserver: select getdate(); mysql: select sysdate();
在ssh框架中,根据JavaBean(实体类)在数据库中创建表
以下是我写好的一个实体类/** * 虫害实体类 * @author pc * */ @Entity @Table(name="t_insect") public class InsectBean { /** * 昆虫id */ @Id @GeneratedValue(strategy=GenerationType.AUTO) private
hibernate建表在数据库中不生成外键约束
oneToMany或manyToOne的时候不在数据库中生成外键约束,但希望hibernate在应用中依旧维护这部分数据,比如get的时候。手动删除的话不切实际,每次启动hibernate都会再重新建外键。请问能不能办的到,hibernate有没有这样的机制,自己能实现也行,要怎么做。
my sql-在数据库中建表、删表
名称 deptid int(11) 部门编号 在数据库中建数据表(简称:表)的方式,我知道的情况有两种: 第一种:在数据库中新建一个表,字段内容自己调剂,
在数据库中如何建表(这个表有点特殊)
我想在asp.net中用代码动态地将一个表,并且表名是和列名相同,请问高手能否实现?
建表问题:树型结构的保存,如何在数据库实现“环”约束
我想建一表来保存树型结构rnIdrnNamernParentIdrnrn希望能在数据库内实现一个约束,保证输入(修改)的结点不会构成一个环。rn
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池