如何设计一个客户信息数据库

如何设计一个客户信息数据库,第1张

一、引言数据库对于企业信息化的重要性是不言而喻的。数据库存储着现代企业最重要的数据,包括生产、经营、管理等各类数据,这些数据作为企业的核心信息,通过各类信息系统,为用户提供及时准确的信息,帮助用户分析,为用户提供决策依据。为提高企业的工作效率,提升企业形象,具有传统模式无法比拟的优势。其中构建合理高效的数据库,是数据库建设关键之一。如何构建合理高效的数据库是企业信息化过程要解决的问题。下面就数据库的构建谈谈自己的一些经验,希望能对大家有所帮助。

二、设计数据库之前

数据库并不是凭空想象出来的,而是根据业务部门的需要设计符合业务需求的数据库。因此在形成数据库之前需要充分了解业务需求。1充分理解业务需求。需求分析是整个设计过程的基础,是最困难、最耗费时间的一步。在这期间通过与业务部门交流,了解用户的想法以及工作流程,通过双方多次交流,会形成初步的数据模型,当然这时的数据模型不会是最终的模型,还需要和用户进行交流,并且在以后的信息系统开发过程中还会反复修改。2重视输入输出。在定义数据库表和字段需求(输入)时,首先应了解数据产生源和数据流程,也就是必需要知道每个数据在那儿产生,数据在那儿表现,以什么样的形式表现等等,然后根据用户提供的报表或者设计出的报表、查询和视图(输出)以决定为了支持这些输出哪些是必要的表和字段。3创建数据字典和ER图表。ER图表和数据字典可以让任何了解数据库的人都明确如何从数据库中获得数据。ER图对表明表之间关系很有用,而数据字典则说明了每个字段的用途以及任何可能存在的别名。对SQL表达式的文档化来说这是完全必要的。需要注意的是,在需求分析调研过程中,并不是一帆风顺的,因为业务人员对于业务的理解不同,以及对于信息知识的缺乏,会影响需求分析的质量,为了提高质量,各方要用更多的时间交流与相互理解,业务部门需要精通业务的人员自始至终全力配合,而开发人员则尽量使用用户理解的业务术语交流,这样会避免出现理解不同而产生的歧义。三、设计合理的表结构

通常合理的表结构会减少数据冗余,提高数据库的性能。设计合理的表结构要遵循以下两点。1标准化和规范化数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但3NF(第三范式)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF标准的数据库的表设计原则是:某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。例如:某个存放单井信息及其有关油井生产日报信息的3NF数据库就有两个表:单井基础信息和油井日报信息。日报信息不包含单井的任何信息,但表内会存放一个键值,该键指向单井基础信息里包含该油井信息的那一行。不过也有例外,有时为了效率的缘故,对表不进行标准化也是必要的。2考虑各种变化在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。使数据库更具扩展性,从而减少将来数据变更所带来的损失。例如,日期类型字段,有时我们会考虑使用字符类型代替日期类型,因为在处理日期字段上容易产生数据错误,所以我们就使用字符类型。这样的例子还很多,在做前期设计时都要考虑的。表结构的设计不是一次就能成功的,在信息系统开发过程中会存在数据读取、录入或统计困难,为了解决这些问题会修改表结构,或增加一些字段,或修改一些字段的属性。这个过程不断重复,因此不要想一次能成功。建议使用专门设计工具来做这些工作,笔者经常使用:SYBASE,当然还有其它的工具:ORACLEDesigner2000,ROSE等工具。这样会使你的工作事半功倍。四、选择合理的索引

索引是从数据库中获取数据的最高效方式之一。95%的数据库性能问题都可以采用索引技术得到解决。1逻辑主键使用唯一的成组索引,对系统键(作为存储过程)采用唯一的非成组索引,对任何外键列采用非成组索引。考虑数据库的空间有多大,表如何进行访问,还有这些访问是否主要用作读写。2大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它们也是经常使用的键,比如运行查询显示主表和所有关联表的某条记录就用得上。3不要索引大型字段(有很多字符),这样作会让索引占用太多的存储空间。如MEMO(备注)、TEXT(文本)等字段。4不要索引常用的小型表不要为小型数据表设置任何键,假如它们经常有插入和删除 *** 作就更别这样作了。对这些插入和删除 *** 作的索引维护可能比扫描表空间消耗更多的时间。如代码表,或系统参数表。五、保证数据完整性

数据的完整性非常重要,这关系到数据的准确性,不准确的数据是毫无价值的,因此保证数据的完整性非常重要。1完整性实现机制:实体完整性:主键参照完整性:父表中删除数据:级联删除;受限删除;置空值父表中插入数据:受限插入;递归插入父表中更新数据:级联更新;受限更新;置空值DBMS对参照完整性可以有两种方法实现:外键实现机制(约束规则)和触发器实现机制用户定义完整性:NOTNULL;CHECK;触发器以上完整性机制需要熟悉和掌握,它对于数据的完整性非常重要。2用约束而非业务规则强制数据完整性采用数据库系统实现数据的完整性。这不但包括通过标准化实现的完整性而且还包括数据的功能性。在写数据的时候还可以增加触发器来保证数据的正确性。不要依赖于业务层保证数据完整性;它不能保证表之间(外键)的完整性所以不能强加于其他完整性规则之上。3强制指示完整性在有害数据进入数据库之前将其剔除。激活数据库系统的指示完整性特性。这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条件。4使用查找控制数据完整性控制数据完整性的最佳方式就是限制用户的录入。只要有可能都应该提供给用户一个清晰的价值列表供其选择。这样将减少键入代码的错误和误解同时提供数据的一致性。某些公共数据特别适合查找:性别代码、单位代码等。5采用视图视图是一个虚拟表,其内容由SQL语句定义,视图不仅可以简化用户对数据的理解,也可以简化他们的 *** 作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的 *** 作每次指定全部的条件。另外通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,增强数据的安全性。六、结束语

数据库的高效运行不仅需要技术上的支持,也需要硬件平台和网络的支持以及数据库管理员的有效管理,本文只是从技术的角度说明如何提高数据库的效率,但在实际应用过程中其它方面的支持也是不可缺少的,尤其是数据库管理,数据库建设是“三分技术,七分管理,十二分基础数据”,因此对于数据库管理一定要重视,在管理到位的情况下技术才能发挥应有的作用。

1、创建管理员表

CREATE TABLE  Ad

(密码 CHAR(8) PRIMARY KEY,

姓名 varchar(20)

);

2管理员表初始化

insert into Ad (密码,姓名)

VALUES('admin', 'admin');

3.创建学生表

CREATE TABLE Student

(学生学号 CHAR (10) PRIMARY KEY,

学生姓名 VARCHAR (20) UNIQUE,

学生性别 CHAR (2),

学生年龄 SMALLINT,

班级号 CHAR (4),

FOREIGN KEY (班级号) REFERENCES Class(班级号)

);

4 创建教师表

CREATE TABLE Teacher

(教工号 CHAR (8) PRIMARY KEY,

教师姓名 VARCHAR (20) UNIQUE,

教师性别 CHAR (2),

职称 VARCHAR (10),

);

登陆源码:

if radiobutton1Checked then

begin

adoquery1close;

adoquery1SQLclear;

adoquery1SQLadd('select  from Student');

adoquery1SQLadd('where 学生学号='''+edit2text+''' and 学生姓名='''+edit1text+'''');

adoquery1Open;

if adoquery1RecordCount>0 then

begin

form1hide;

form2show;

end

else

showmessage('用户名不存在或者权限错误,请查证后输入');

edit2Clear

end

else if radiobutton2Checked then

begin

adoquery1Close;

adoquery1SQLclear;

adoquery1SQLadd('select  from Teacher');

adoquery1SQLadd('where 教工号='''+edit2text+''' and 教师姓名='''+edit1text+'''');

adoquery1Open;

if adoquery1RecordCount>0 then

begin

form1hide;

form3show;

end

else

showmessage('用户名不存在或者权限错误,请查证后输入');

edit2Clear;

end

else if radiobutton3Checked then

begin

adoquery1close;

adoquery1SQLclear;

adoquery1SQLadd('select  from Ad');

adoquery1SQLadd('where 密码='''+edit2text+''' and 姓名='''+edit1text+'''');

adoquery1Open;

if adoquery1RecordCount>0 then

begin

form1hide;

form4show;

end

else

showmessage('用户名不存在或者权限错误,请查证后输入');

edit2Clear;

end

如果你单写页面链接数据库的话:

mysql_connect('数据库服务器','数据库用户名','数据库密码');mysql_select_db('数据库名');//选择你需要的数据库

mysql_query("编码");//选择你要用的编码类型

然后:

提交表单数据,获取表单数据,同时作出判断和检测。把值写入到sql查询语句里面用于查询,看返回值。

你试试,希望你可以成功

简单的代码

你看看

1 登陆前台代码

    <form id="form1" runat="server">

    <div>

    

        <asp:Label ID="Label1" runat="server" Text="用户:"></asp:Label>

        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <br />

        <asp:Label ID="Label2" runat="server" Text="密码:"></asp:Label>

        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>

        <br />

        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="登陆" />

        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="注册" />

    

    </div>

    </form>

登陆判断后台代码

  protected void Button1_Click(object sender, EventArgs e)

    {

        UserInfo info = new UserInfo();

        infoName = thisTextBox1TextTrim();

        infoPass = thisTextBox2TextTrim();

        //用户登陆验证

        if (UserBLLLogin(info))

        {

            ResponseRedirect("Default2aspx");

        }

        else

        {

            ResponseWrite("<script>alert('登陆错误');</script>");

            thisTextBox1Text = "";

            thisTextBox2Text = "";

         

        }

    }

    protected void Button2_Click(object sender, EventArgs e)

    {

        ResponseRedirect("Default3aspx");

    }

我的textbox验证是在后台验证。你可以用JS在前台验证。判断是否空等等

注册前台:

 <form id="form1" runat="server">

    <div>

    

        <asp:Label ID="Label1" runat="server" Text="姓名:"></asp:Label>

        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <br />

        <asp:Label ID="Label2" runat="server" Text="密码:"></asp:Label>

        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>

        <br />

        <asp:Label ID="Label3" runat="server" Text="性别:"></asp:Label>

        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>

        <br />

        <asp:Button ID="Button1" runat="server" Text="注册" onclick="Button1_Click" />

        <asp:Button ID="Button2" runat="server" Text="返回登陆" onclick="Button2_Click" 

            style="height: 26px" />

    

    </div>

注册后台代码:

  protected void Button1_Click(object sender, EventArgs e)

    {

        UserInfo info = new UserInfo();

        infoName = thisTextBox1TextTrim();

        infoPass = thisTextBox2TextTrim();

        infoSex = thisTextBox3TextTrim();

        //注册

        UserBLLInsert(info);

        ResponseWrite("<script>alert('注册成功');</script>");

        thisTextBox1Text = "";

        thisTextBox2Text = "";

        thisTextBox3Text = "";

    }

    protected void Button2_Click(object sender, EventArgs e)

    {

        ResponseRedirect("Defaultaspx");

    } //数据库 *** 作login是登陆,insert是注册

  public bool Login(UserInfo info)

        {

            string sql =stringFormat("pro_Login");

            SqlParameter[] values = new SqlParameter[] { new SqlParameter("@name", infoName), new SqlParameter("@pass", infoPass) };

            int result = ConvertToInt32(DBHlpergetSR(sql, values));

            if (result > 0)

            {

                return true;

            }

            else

            {

                return false;

            }

           

        }

        public int Insert(UserInfo info)

        {

            string sql = stringFormat("pro_Insert");

            SqlParameter[] values = new SqlParameter[] { new SqlParameter("@name", infoName), new SqlParameter("@pass", infoPass), new SqlParameter("@sex", infoSex) };

            int resulut = ConvertToInt32(DBHlpergetEQ(sql, values));

            return resulut;

        }

我用的是存储过程,你可以不用存储过程

如:登陆

public bool Login(string name,string pwd)

{

 string sql =“select  from 表 where username=”+name"+" and pwd="pwd;

 }

// 很灵活随意写,数据库我自己找不到了,设计的话也很简单

//给你个思路,用户表, userid  username  pwd 

//userid 自动增长 注册登陆用这张表即可,如果还有什么相关的表,即用userid去关联

//如:用户成绩表  id userid  chengji

//查询数据 用用户表的userid去关联成绩表的userid就可以

以上就是关于如何设计一个客户信息数据库全部的内容,包括:如何设计一个客户信息数据库、用delphi设计 软件用户登陆验证 网络 SQL数据库 验证登陆姓名和密码、PHP网页设计,关于登录(MySQL)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9756331.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存