常用的数据库安全技术有哪些
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。 安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。 系统安全保护措施是否有效是数据库系统的主要指标之一。 数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。 实现数据库安全性控制的常用方法和技术有: (1)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己咱勺名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。 (2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如C2级中的自主存取控制(I)AC),Bl级中的强制存取控制(M.AC)。 (3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。 (4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放人审计日志中,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。 (5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
数据库三大范式是什么
数据库中三大范式的定义如下:
1、第一范式:
当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。
2、第二范式:
如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。
3、第三范式:
设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF。
范式简介:
范式来自英文Normal form,简称NF。要想设计—个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求得严格。
满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。-数据库安全
关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般来说,数据库只需满足第三范式(3NF)就行了。-数据库
vb.net数据库操作
参考一下下面这段代码就可以了。Imports System.Data’引入数据库操作类命名空间Imports System.Data.OleDb’引入ADO.NET操作命名空间Public Class FrmModifystInfo Inherits System.Windows.Forms.Form Public ADOcmd As OleDbDataAdapter Public ds As DataSet = New DataSet() ’建立DataSet对象 Public mytable As Data.DataTable ’建立表单对象 Public myrow As Data.DataRow ’建立数据行对象 Public rownumber As Integer ’定义一个整型变量来存放当前行数 Public SearchSQL As String Public cmd As OleDbCommandBuilder’======================================================#Region “ Windows 窗体设计器生成的代码 “#End Region’====================================================== Private Sub FrmModifystInfo_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ’窗体的载入 TxtSID.Enabled = False TxtName.Enabled = False ComboSex.Enabled = False TxtBornDate.Enabled = False TxtClassno.Enabled = False TxtRuDate.Enabled = False TxtTel.Enabled = False TxtAddress.Enabled = False TxtComment.Enabled = False ’设置信息为只读 Dim tablename As String = “student_Info “ SearchSQL = “select * from student_Info “ ExecuteSQL(SearchSQL, tablename) ’打开数据库 ShowData() ’显示记录 End SubPrivate Sub ShowData() ’在窗口中的textbox中显示数据 myrow = mytable.Rows.Item(rownumber) TxtSID.Text = myrow.Item(0).ToString TxtName.Text = myrow.Item(1).ToString ComboSex.Text = myrow.Item(2).ToString TxtBornDate.Text = Format(myrow.Item(3), “yyyy-MM-dd “) TxtClassno.Text = myrow.Item(4).ToString TxtTel.Text = myrow.Item(5).ToString TxtRuDate.Text = Format(CDate(myrow.Item(6)), “yyyy-MM-dd “) TxtAddress.Text = myrow.Item(7).ToString TxtComment.Text = myrow.Item(8).ToString End SubPrivate Sub BtFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtFirst.Click ’指向第一条数据 rownumber = 0 ShowData() End Sub Private Sub BtPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtPrev.Click ’指向上一条数据 BtNext.Enabled = True rownumber = rownumber - 1 If rownumber 《 0 Then rownumber = 0 ’如果到达记录的首部,行号设为零 BtPrev.Enabled = False End If ShowData() End Sub Private Sub BtNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtNext.Click ’指向上一条数据 BtPrev.Enabled = True rownumber = rownumber + 1 If rownumber 》 mytable.Rows.Count - 1 Then rownumber = mytable.Rows.Count - 1 ’判断是否到达最后一条数据 BtNext.Enabled = False End If ShowData() End Sub Private Sub BtLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtLast.Click ’指向最后一条数据 rownumber = mytable.Rows.Count - 1 ShowData() End Sub Private Sub BtDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtDelete.Click mytable.Rows.Item(rownumber).Delete() ’删除记录 If MsgBox( “确定要删除改记录吗? “, MsgBoxStyle.OKCancel + vbExclamation, “警告 “) = MsgBoxResult.OK Then cmd = New OleDbCommandBuilder(ADOcmd) ’使用自动生成的SQL语句 ADOcmd.Update(ds, “student_Info “) BtNext.PerformClick() End If End Sub Private Sub BtModify_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtModify.Click TxtSID.Enabled = False ’关键字段只读 TxtName.Enabled = True ’可读写 ComboSex.Enabled = True TxtBornDate.Enabled = True TxtClassno.Enabled = True TxtRuDate.Enabled = True TxtTel.Enabled = True TxtAddress.Enabled = True TxtComment.Enabled = True End Sub Private Sub BtUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtUpdate.Click If Not Testtxt(TxtName.Text) Then MsgBox( “请输入姓名! “, vbOKOnly + vbExclamation, “警告 “) TxtName.Focus() Exit Sub End If If Not Testtxt(ComboSex.Text) Then MsgBox( “请选择性别! “, vbOKOnly + vbExclamation, “警告 “) ComboSex.Focus() Exit Sub End If If Not Testtxt(TxtClassno.Text) Then MsgBox( “请选择班号! “, vbOKOnly + vbExclamation, “警告 “) TxtClassno.Focus() Exit Sub End If If Not Testtxt(TxtTel.Text) Then MsgBox( “请输入联系电话! “, vbOKOnly + vbExclamation, “警告 “) TxtTel.Focus() Exit Sub End If If Not Testtxt(TxtAddress.Text) Then MsgBox( “请输入家庭住址! “, vbOKOnly + vbExclamation, “警告 “) TxtAddress.Focus() Exit Sub End If If Not IsNumeric(Trim(TxtSID.Text)) Then MsgBox( “请输入数字学号! “, vbOKOnly + vbExclamation, “警告 “) Exit Sub TxtSID.Focus() End If If Not IsDate(TxtBornDate.Text) Then MsgBox( “出生时间应输入日期格式(yyyy-mm-dd)! “, vbOKOnly + vbExclamation, “警告 “) Exit Sub TxtBornDate.Focus() End If If Not IsDate(TxtRuDate.Text) Then MsgBox( “入校时间应输入日期格式(yyyy-mm-dd)! “, vbOKOnly + vbExclamation, “警告 “) TxtRuDate.Focus() Exit Sub End If myrow.Item(0) = Trim(TxtSID.Text) myrow.Item(1) = Trim(TxtName.Text) myrow.Item(2) = Trim(ComboSex.Text) myrow.Item(3) = Trim(TxtBornDate.Text) myrow.Item(4) = Trim(TxtClassno.Text) myrow.Item(5) = Trim(TxtTel.Text) myrow.Item(6) = Trim(TxtRuDate.Text) myrow.Item(7) = Trim(TxtAddress.Text) myrow.Item(8) = Trim(TxtComment.Text) mytable.GetChanges() cmd = New OleDbCommandBuilder(ADOcmd) ’使用自动生成的SQL语句 ADOcmd.Update(ds, “student_Info “) ’对数据库进行更新 MsgBox( “修改学籍信息成功! “, vbOKOnly + vbExclamation, “警告 “) TxtName.Enabled = False ComboSex.Enabled = False TxtBornDate.Enabled = False TxtClassno.Enabled = False TxtRuDate.Enabled = False TxtTel.Enabled = False TxtAddress.Enabled = False TxtComment.Enabled = False ’重新设置信息为只读 End Sub Private Sub BtCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtCancel.Click TxtSID.Enabled = False TxtName.Enabled = False ComboSex.Enabled = False TxtBornDate.Enabled = False TxtClassno.Enabled = False TxtRuDate.Enabled = False TxtTel.Enabled = False TxtAddress.Enabled = False TxtComment.Enabled = False End Sub Public Function ExecuteSQL(ByVal SQL As String, ByVal table As String) Try ’建立ADODataSetCommand对象 ’数据库查询函数 ADOcmd = New OleDbDataAdapter(SQL, “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\student.mdb “) ’建立ADODataSetCommand对象 ADOcmd.Fill(ds, table) ’取得表单 mytable = ds.Tables.Item(0) ’取得名为table的表 rownumber = 0 ’设置为第一行 myrow = mytable.Rows.Item(rownumber) ’取得第一行数据 Catch MsgBox(Err.Description) End Try End FunctionEnd Class