精华内容
下载资源
问答
  • 建立客户数据库.pdf

    2021-10-11 00:57:37
    建立客户数据库.pdf
  • 实体店裂变引流(39):用抓潜方式建立客户数据库-你学会了吗?.pdf
  • CRM 客户关系数据库系统概论客户 关系管理系统 课程设计报告 学生姓名: 曹婉君 学号 2011305010101 学 院 : 经济管理学院 班级 : 管理 111 题目 : 图书馆管理信息系统 指导教师 职称: 副教授 2013 年 07 月 02 日 ...
  • 数据库建立索引

    2020-12-14 23:53:05
     前些时候,一位颇高级的程序员居然问我什么叫做索引,令我感到十分的惊奇,我想这绝不会是沧海一 粟,因为有成千上万的开发者(可能大部分是使用MySQL的)都没有受过有关数据库的正规培训,尽管他们都为客户做过...
  • 客户关系管理数据库

    2012-11-28 12:48:15
    客户关系管理数据库建立数据库,并实现对SQL Server的用户和角色管理;在企业管理器中,创建数据库下的表(三个以上),并完成表和表之间的各种完整性约束的设置;在查询分析器中,创建默认值对象,并与表中字段...
  • driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@10.26.1.20:1521:bqjr username=akswap password=amarsoft ...--建立佰仟EAS帐套与中间数据库的连接 CREATE public DATABAS
    driver=oracle.jdbc.driver.OracleDriver
    
    url=jdbc:oracle:thin:@10.26.1.20:1521:bqjr
    username=akswap
    password=amarsoft
    1.建立连接:
    --建立佰仟EAS帐套与中间数据库的连接
    CREATE public DATABASE LINK exhdblink  CONNECT TO akswap  identified by  amarsoft USING
    '(DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.26.1.20)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = bqjr)

        ))'

    2.创建视图

    --创建放款明细视图
    create or replace view V_BQ_PaymentBill
    as 
    select 
    SERIALNO FSeqNum, --流水号
    PRODUCTID FProductType,   --产品类型
    BUSINESSTYPE FProductnum, --产品代码
    PutOutNo FContractNum,     --合同号
    CUSTOMERID FCustomerNum,    --客户编号
    CUSTOMERNAME FCustomerName,  --客户名称
    OPENBANK FBankNum, --客户开户行
    REPLACENAME FAccountBankName, --客户开户行户名
    PEPLACEACCOUNT FAccountBankNo, --客户开户行账号
    PRICE   FPrice,          --商品价格
    BUSINESSSUM FDebitAmount, --贷款金额 
    INPUTDATE  FBillDate,    --录入时间
    APPROVEDATE FBizDate,  --合同生效日
    SERVICEID FRetailerNum, --零售商代码
    SERVICENAME FRetailerName, --零售商名称
    CUSTOMERNAME FPersonName, --客户名称
    STORESERVICEAMT FstoreServiceAmt,--商家服务费
    CUSTOMERFEERATE  FCustomerFeeRate,--合同应收服务费率
    BASEAMOUNT FBaseAmount,--应收商家服务费、佣金计算基数
    DOWNPAYMENT FDownPayMent, --首付金额
    EIR FEIR, --EIR
    TERM FTERM --还款期数
    from BATCH_PUTOUT_INFO@exhdblink


    3.本地访问所连接的数据库

    EAS客户端执行方言:

    select * from BATCH_PUTOUT_INFO@exhdblink

    视图可直接查询:

    select * from V_BQ_PaymentBill


    展开全文
  • 一个公司希望为其客户订购行为建立一个数据库。一个消费者可以有一个或多个订单,每个订单可以有一种或多种商品。每个订单有一张发票,可以通过多种方式来支付,例如支票、信用卡或现金。 要求完成的主要任务: 1. ...
  • Java建立数据库连接池

    千次阅读 2016-12-11 18:31:25
    频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。  对于共享资源,有一个很著名的设计模式:资源池。该模式正是为了解决资源频繁分配、释放所造成的问

    对于一个简单的数据库引用,用于对数据库的访问不是很频繁。这时就可以简单的在需要访问数据库是,就创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销。但是对于一个复杂的数据库引用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。

      对于共享资源,有一个很著名的设计模式:资源池。该模式正是为了解决资源频繁分配、释放所造成的问题的。把该模式应用到数据库连接管理领域,就是建立一个数据库连接池,提供一套高效的连接分配、使用策略,最终目标是实现连接的高效、安全的复用。 

      数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回方法。如:外部使用者可通过getConnection 方法获取连接,使用完毕后再通过releaseConnection 方法将连接返回,注意此时连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。

      数据库连接池技术带来的优势: 

      1、资源复用

        由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统  消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进   程/线程的数量)。

      2、更快的系统响应速度

        数据库连接池在初始化过程中,往往已经创建了若干数据库连接至于池中备用。此时连接  的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接  初始化和释放过程的时间,从而缩减了系统整体响应时间。

      3、统一的连接管理,避免数据库连接泄漏

        在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连  接。从而避免了常规数据库连接操作中可能出现的资源泄漏。

    写一个数据库连接池的小例子,供大家参考学习:

    首先建立一个Java工程,然后倒入MySQL驱动jar包,然后新建一个连接池类如下:

    package com.test.util;


    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.Driver;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Enumeration;
    import java.util.Vector;


    public class ConnectionPoolUtil {
    private String jdbcDriver = ""; // 数据库驱动
    private String dbUrl = ""; // 数据 URL
    private String dbUsername = ""; // 数据库用户名
    private String dbPassword = ""; // 数据库用户密码
    private String testTable = ""; // 测试连接是否可用的测试表名,默认没有测试表
    private int initialConnections = 10; // 连接池的初始大小
    private int incrementalConnections = 5;// 连接池自动增加的大小
    private int maxConnections = 50; // 连接池最大的大小
    private Vector connections = null; // 存放连接池中数据库连接的向量 , 初始时为 null
    // 它中存放的对象为 PooledConnection 型


    /**
    * 构造函数

    * @param jdbcDriver
    *            String JDBC 驱动类串
    * @param dbUrl
    *            String 数据库 URL
    * @param dbUsername
    *            String 连接数据库用户名
    * @param dbPassword
    *            String 连接数据库用户的密码

    */
    public ConnectionPoolUtil(String jdbcDriver, String dbUrl, String dbUsername, String dbPassword) {
    this.jdbcDriver = jdbcDriver;
    this.dbUrl = dbUrl;
    this.dbUsername = dbUsername;
    this.dbPassword = dbPassword;
    System.out.println("--------------:ConnectionPoolUtil");
    }


    /**
    * 返回连接池的初始大小

    * @return 初始连接池中可获得的连接数量
    */
    public int getInitialConnections() {
    return this.initialConnections;
    }


    /**
    * 设置连接池的初始大小

    * @param 用于设置初始连接池中连接的数量
    */


    public void setInitialConnections(int initialConnections) {
    this.initialConnections = initialConnections;

    }


    /**
    * 返回连接池自动增加的大小 、

    * @return 连接池自动增加的大小
    */
    public int getIncrementalConnections() {
    return this.incrementalConnections;
    }


    /**
    * 设置连接池自动增加的大小

    * @param 连接池自动增加的大小
    */


    public void setIncrementalConnections(int incrementalConnections) {
    this.incrementalConnections = incrementalConnections;
    }


    /**
    * 返回连接池中最大的可用连接数量

    * @return 连接池中最大的可用连接数量
    */


    public int getMaxConnections() {
    return this.maxConnections;
    }


    /**
    * 设置连接池中最大可用的连接数量

    * @param 设置连接池中最大可用的连接数量值
    */


    public void setMaxConnections(int maxConnections) {
    this.maxConnections = maxConnections;
    }


    /**
    * 获取测试数据库表的名字

    * @return 测试数据库表的名字
    */


    public String getTestTable() {
    return this.testTable;
    }


    /**
    * 设置测试表的名字

    * @param testTable
    *            String 测试表的名字
    */


    public void setTestTable(String testTable) {
    this.testTable = testTable;
    }


    /**

    * 创建一个数据库连接池,连接池中的可用连接的数量采用类成员 initialConnections 中设置的值
    */


    public synchronized void createPool() throws Exception {
    // 确保连接池没有创建
    // 如果连接池己经创建了,保存连接的向量 connections 不会为空
    if (connections != null) {
    return; // 如果己经创建,则返回
    }
    // 实例化 JDBC Driver 中指定的驱动类实例
    Driver driver = (Driver) (Class.forName(this.jdbcDriver).newInstance());
    DriverManager.registerDriver(driver); // 注册 JDBC 驱动程序
    // 创建保存连接的向量 , 初始时有 0 个元素
    connections = new Vector();
    // 根据 initialConnections 中设置的值,创建连接。
    createConnections(this.initialConnections);
       System.out.println(" 数据库连接池创建成功! ");
    }


    /**
    * 创建由 numConnections 指定数目的数据库连接 , 并把这些连接 放入 connections 向量中

    * @param numConnections
    *            要创建的数据库连接的数目
    */


    @SuppressWarnings("unchecked")
    private void createConnections(int numConnections) throws SQLException {
    // 循环创建指定数目的数据库连接
    for (int x = 0; x < numConnections; x++) {
    // 是否连接池中的数据库连接的数量己经达到最大?最大值由类成员 maxConnections
    // 指出,如果 maxConnections 为 0 或负数,表示连接数量没有限制。
    // 如果连接数己经达到最大,即退出。
    if (this.maxConnections > 0 && this.connections.size() >= this.maxConnections) {
    break;
    }
    // add a new PooledConnection object to connections vector
    // 增加一个连接到连接池中(向量 connections 中)
    try {
    connections.addElement(new PooledConnection(newConnection()));
    } catch (SQLException e) {
    System.out.println(" 创建数据库连接失败! " + e.getMessage());
    throw new SQLException();
    }
       System.out.println(" 数据库连接己创建 ......");
    }
    }


    /**
    * 创建一个新的数据库连接并返回它

    * @return 返回一个新创建的数据库连接
    */


    private Connection newConnection() throws SQLException {
    // 创建一个数据库连接
    Connection conn = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
    // 如果这是第一次创建数据库连接,即检查数据库,获得此数据库允许支持的
    // 最大客户连接数目
    // connections.size()==0 表示目前没有连接己被创建
    if (connections.size() == 0) {
    DatabaseMetaData metaData = conn.getMetaData();
    int driverMaxConnections = metaData.getMaxConnections();
    // 数据库返回的 driverMaxConnections 若为 0 ,表示此数据库没有最大
    // 连接限制,或数据库的最大连接限制不知道
    // driverMaxConnections 为返回的一个整数,表示此数据库允许客户连接的数目
    // 如果连接池中设置的最大连接数量大于数据库允许的连接数目 , 则置连接池的最大
    // 连接数目为数据库允许的最大数目
    if (driverMaxConnections > 0 && this.maxConnections > driverMaxConnections) {
    this.maxConnections = driverMaxConnections;
    }
    }
    System.out.println("--------------:创建一个新的数据库连接");
    return conn; // 返回创建的新的数据库连接
    }


    /**
    * 通过调用 getFreeConnection() 函数返回一个可用的数据库连接 , 如果当前没有可用的数据库连接,并且更多的数据库连接不能创
    * 建(如连接池大小的限制),此函数等待一会再尝试获取。

    * @return 返回一个可用的数据库连接对象
    */


    public synchronized Connection getConnection() throws SQLException {
    // 确保连接池己被创建
    if (connections == null) {
    return null; // 连接池还没创建,则返回 null
    }
    Connection conn = getFreeConnection(); // 获得一个可用的数据库连接
    // 如果目前没有可以使用的连接,即所有的连接都在使用中
    while (conn == null) {
    // 等一会再试
    // System.out.println("Wait");
    wait(250);
    conn = getFreeConnection(); // 重新再试,直到获得可用的连接,如果
    // getFreeConnection() 返回的为 null
    // 则表明创建一批连接后也不可获得可用连接
    }
    System.out.println("--------------:获得数据库连接");
    return conn;// 返回获得的可用的连接
    }


    /**
    * 本函数从连接池向量 connections 中返回一个可用的的数据库连接,如果 当前没有可用的数据库连接,本函数则根据
    * incrementalConnections 设置 的值创建几个数据库连接,并放入连接池中。 如果创建后,所有的连接仍都在使用中,则返回 null

    * @return 返回一个可用的数据库连接
    */
    private Connection getFreeConnection() throws SQLException {
    // 从连接池中获得一个可用的数据库连接
    Connection conn = findFreeConnection();
    if (conn == null) {
    // 如果目前连接池中没有可用的连接
    // 创建一些连接
    createConnections(incrementalConnections);
    // 重新从池中查找是否有可用连接
    conn = findFreeConnection();
    if (conn == null) {
    // 如果创建连接后仍获得不到可用的连接,则返回 null
    return null;
    }
    }
    System.out.println("--------------:获得一个可用的数据库连接");
    return conn;
    }


    /**
    * 查找连接池中所有的连接,查找一个可用的数据库连接, 如果没有可用的连接,返回 null

    * @return 返回一个可用的数据库连接
    */


    private Connection findFreeConnection() throws SQLException {
    Connection conn = null;
    PooledConnection pConn = null;
    // 获得连接池向量中所有的对象
    Enumeration enumerate = connections.elements();
    // 遍历所有的对象,看是否有可用的连接
    while (enumerate.hasMoreElements()) {
    pConn = (PooledConnection) enumerate.nextElement();
    if (!pConn.isBusy()) {
    // 如果此对象不忙,则获得它的数据库连接并把它设为忙
    conn = pConn.getConnection();
    pConn.setBusy(true);
    // 测试此连接是否可用
    if (!testConnection(conn)) {
    // 如果此连接不可再用了,则创建一个新的连接,
    // 并替换此不可用的连接对象,如果创建失败,返回 null
    try {
    conn = newConnection();
    } catch (SQLException e) {
    System.out.println(" 创建数据库连接失败! " + e.getMessage());
    return null;
    }
    pConn.setConnection(conn);
    }
    break; // 己经找到一个可用的连接,退出
    }
    }
    System.out.println("--------------:获得一个可用的数据库连接(findFreeConnection)");
    return conn;// 返回找到到的可用连接
    }


    /**
    * 测试一个连接是否可用,如果不可用,关掉它并返回 false 否则可用返回 true

    * @param conn
    *            需要测试的数据库连接
    * @return 返回 true 表示此连接可用, false 表示不可用
    */


    private boolean testConnection(Connection conn) {
    try {
    // 判断测试表是否存在
    if (testTable.equals("")) {
    // 如果测试表为空,试着使用此连接的 setAutoCommit() 方法
    // 来判断连接否可用(此方法只在部分数据库可用,如果不可用 ,
    // 抛出异常)。注意:使用测试表的方法更可靠
    conn.setAutoCommit(true);
    } else {// 有测试表的时候使用测试表测试
    // check if this connection is valid
    Statement stmt = conn.createStatement();
    stmt.execute("select count(*) from " + testTable);
    }
    } catch (SQLException e) {
    // 上面抛出异常,此连接己不可用,关闭它,并返回 false;
    closeConnection(conn);
    return false;
    }
    // 连接可用,返回 true
    System.out.println("--------------:测试数据库连接是否可用");
    return true;
    }


    /**
    * 此函数返回一个数据库连接到连接池中,并把此连接置为空闲。 所有使用连接池获得的数据库连接均应在不使用此连接时返回它。

    * @param 需返回到连接池中的连接对象
    */


    public void returnConnection(Connection conn) {
    System.out.println("--------------:返回到连接池中的连接对象");
    // 确保连接池存在,如果连接没有创建(不存在),直接返回
    if (connections == null) {
    System.out.println(" 连接池不存在,无法返回此连接到连接池中 !");
    return;
    }
    PooledConnection pConn = null;
    Enumeration enumerate = connections.elements();
    // 遍历连接池中的所有连接,找到这个要返回的连接对象
    while (enumerate.hasMoreElements()) {
    pConn = (PooledConnection) enumerate.nextElement();
    // 先找到连接池中的要返回的连接对象
    if (conn == pConn.getConnection()) {
    // 找到了 , 设置此连接为空闲状态
    pConn.setBusy(false);
    break;
    }
    }
    }


    /**
    * 刷新连接池中所有的连接对象

    */


    public synchronized void refreshConnections() throws SQLException {
    // 确保连接池己创新存在
    if (connections == null) {
    System.out.println(" 连接池不存在,无法刷新 !");
    return;
    }
    PooledConnection pConn = null;
    Enumeration enumerate = connections.elements();
    while (enumerate.hasMoreElements()) {
    // 获得一个连接对象
    pConn = (PooledConnection) enumerate.nextElement();
    // 如果对象忙则等 5 秒 ,5 秒后直接刷新
    if (pConn.isBusy()) {
    wait(5000); // 等 5 秒
    }
    // 关闭此连接,用一个新的连接代替它。
    closeConnection(pConn.getConnection());
    pConn.setConnection(newConnection());
    pConn.setBusy(false);
    }
    }


    /**
    * 关闭连接池中所有的连接,并清空连接池。
    */


    public synchronized void closeConnectionPool() throws SQLException {
    // 确保连接池存在,如果不存在,返回
    if (connections == null) {
    System.out.println(" 连接池不存在,无法关闭 !");
    return;
    }
    PooledConnection pConn = null;
    Enumeration enumerate = connections.elements();
    while (enumerate.hasMoreElements()) {
    pConn = (PooledConnection) enumerate.nextElement();
    // 如果忙,等 5 秒
    if (pConn.isBusy()) {
    wait(5000); // 等 5 秒
    }
    // 5 秒后直接关闭它
    closeConnection(pConn.getConnection());
    // 从连接池向量中删除它
    connections.removeElement(pConn);
    }
    // 置连接池为空
    connections = null;
    }


    /**
    * 关闭一个数据库连接

    * @param 需要关闭的数据库连接
    */


    private void closeConnection(Connection conn) {
    try {
    conn.close();
    } catch (SQLException e) {
    System.out.println(" 关闭数据库连接出错: " + e.getMessage());
    }
    }


    /**
    * 使程序等待给定的毫秒数

    * @param 给定的毫秒数
    */


    private void wait(int mSeconds) {
    try {
    Thread.sleep(mSeconds);
    } catch (InterruptedException e) {
    }
    }


    /**

    * 内部使用的用于保存连接池中连接对象的类 此类中有两个成员,一个是数据库的连接,另一个是指示此连接是否 正在使用的标志。
    */


    class PooledConnection {
    Connection connection = null;// 数据库连接
    boolean busy = false; // 此连接是否正在使用的标志,默认没有正在使用
    // 构造函数,根据一个 Connection 构告一个 PooledConnection 对象


    public PooledConnection(Connection connection) {
    this.connection = connection;
    }


    // 返回此对象中的连接
    public Connection getConnection() {
    return connection;
    }


    // 设置此对象的,连接
    public void setConnection(Connection connection) {
    this.connection = connection;
    }


    // 获得对象连接是否忙
    public boolean isBusy() {
    return busy;
    }


    // 设置对象的连接正在忙
    public void setBusy(boolean busy) {
    this.busy = busy;
    }
    }


    }


    然后新建一个测试类:

    package com.test.test;


    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;


    import com.test.util.ConnectionPoolUtil;


    public class Test {
    /**
    * @param args
    * @throws Exception
    */
    public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub
    try {
    // 创建数据库连接库对象
    ConnectionPoolUtil connPool = new ConnectionPoolUtil("com.mysql.jdbc.Driver",
    "jdbc:mysql://127.0.0.1:3306/pool", "root", "root");
    // 新建数据库连接库
    connPool.createPool();
    // SQL测试语句
    String sql = "select * from pool";
    // 设定程序运行起始时间
    long start = System.currentTimeMillis();
    // 循环测试100次数据库连接
    for (int i = 0; i < 3; i++) {
    Connection conn = connPool.getConnection(); // 从连接库中获取一个可用的连接
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(sql);
    while (rs.next()) {
    String name = rs.getString("userName");
    System.out.println("查询结果" + name);
    }
    rs.close();
    stmt.close();
    connPool.returnConnection(conn); // 连接使用完后释放连接到连接池
    }
    System.out.println("经过100次的循环调用,使用连接池花费的时间:" + (System.currentTimeMillis() - start) + "ms");
    // connPool.refreshConnections();//刷新数据库连接池中所有连接,即不管连接是否正在运行,都把所有连接都释放并放回到连接池。注意:这个耗时比较大。
    connPool.closeConnectionPool();// 关闭数据库连接池。注意:这个耗时比较大。
    // 设定程序运行起始时间
    start = System.currentTimeMillis();
    // 导入驱动
    Class.forName("com.mysql.jdbc.Driver");
    for (int i = 0; i < 100; i++) {
    // 创建连接
    Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/pool", "root", "root");
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(sql);
    while (rs.next()) {
    }
    rs.close();
    stmt.close();
    conn.close();// 关闭连接
    }
    System.out.println("经过100次的循环调用,不使用连接池花费的时间:" + (System.currentTimeMillis() - start) + "ms");
    } catch (SQLException e) {
    e.printStackTrace();
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    }
    }

    展开全文
  • 用rose建立数据库

    千次阅读 2010-10-31 23:49:00
    用rose建立数据库表 2009年5月3日 用rose建立数据库表  1 引言    Rational Rose 是一个完全的,具有能满足所有建模环境(Web开发,数据建模,Visual Studio和 C++ )需求能力和灵活性的一套解决方案。...
    用rose建立数据库表 2009年5月3日 用rose建立数据库表   1 引言      Rational Rose 是一个完全的,具有能满足所有建模环境(Web开发,数据建模,Visual Studio和 C++ )需求能力和灵活性的一套解决方案。通过在软件开发周期内使用同一种建模工具可以确保更快更好的创建满足客户需求的可扩展的、灵活的并且可靠的应用系统。利用这个工具,可以建立用UML描述的软件系统模型,而且可以自动生成和维护C++、Java、VB和Oracle等语言和系统的代码。而在这里我要给大家介绍的是如何用Rose建立数据库和数据库表,这是我在用Rational Rose进行软件系统设计、建模时通过资料的搜集和实践得来的一点经验,下面我就将具体方法介绍给大家,希望能够对大家有所帮助。      2 用Rational Rose建立数据库表      在用Rational Rose建立数据库表之前,必须保证电脑安装了Rational Rose 2003和SQL Server 2000。这里以一个System库为例,命名新的数据库名为SystemRose;新建三个表 Teachers、Students和Card表,用Card表来建立表间关系,其他依此类推。   2.1 具体的操作步骤   Step 1:打开Rational Rose 2003,新建一个MDL文档,命名为System.mdl。   Step 2:展开左上方面板中的“Componet View”,选中“Componet View”后单击右键依次选择“Data ModeleràNewàDatabase”(如图1所示),即可新建一个Database,将其命名为SystemRose(如图2所示),这个就是会出现在SQL Server中的新库名。这里可以注意到,Rose已经自动在“Logical View”中新建了两个包“Global Data Types”和“Schemas”。   Step3:选中“SystemRose”单击右键选择“Open Specification”,在弹出的窗口中选择“Target”为“Micfosoft SQL Server2000.x”,如图3所示。   Step 4:新建SystemRose的表空间。选中“SystemRose”单击右键,依次选择“Data ModeleràNewàTablespace”(如图4所示),一般情况下,请把表空间命名成“PRIMARY”。   Step 5:选中“Logical View”中的“Schemas”,单击右键选择“Data ModeleràNewàSchema”(如图5所示),新建一个Schema,默认名为S_0。   Step 6:选中“S_0”单击右键选择“Data ModeleràNewàData Model Diagram”(如图6所示),新建一个Data Model Diagram,取名为Main,双击这个Main图标,可以看到工具栏有变化,出现了新的工具栏。   Step 7:选中“S_0”单击右键选择“Open Specification”, 将DataBase选择为” SystemRose”,表明从属关系(如图7所示)。     Step 8:在模式“S_0”下新建三个表Card、Teachers和Students,这里以建立Card表为例,介绍怎么在Rose2003中建立表格,以及如何设置主键、选择数据类型以及数据长度等。   1)选中工具栏中的“Table” 工具,在Main数据视图中按下鼠标左键新建一个名为“T_0”的表格;   2)双击T_0表格,设置表格参数:将Name设置为Card,选择Tablespace为PRIMARY;   3)选择“Columns”栏,单击“New Column” 按钮插入一列,默认列名为“COL_0”;   4)双击“COL_0”列,编辑其属性。在General栏中将Name设置为CardID,注释(Comment)为卡的ID(如图8所示);在Type栏中设置数据类型(DataType)为INT,将“Primary Key”复选框打勾将CardID设置为主键(如图9所示);   5)采用同样的方法新建一个名为CardType的列,并设置其数据类型为NVARCHAR,长度为10;   6)设置完毕后,单击“OK”按钮。名为Card的表格就算创建好了,如图10所示。   Step 9:模仿Step 8提到的方法,建立Teachers表和Students表,并使用工具栏(Toolbar)中的Identifying Relationship 和Non-identifying Relationship 两个工具建立三个表之间的关系,Identifying Relationship表示主外键关系,拖动方向应该是从父表指向子表,图11中的Card表为父表,Teachers表和Students表为子表, CardID为其他两个表的主键和外键;Non-identifying Relationship则仅仅是建立外键关系。   Identifying Relationship 工具使用方法:选中Identifying Relationship 工具,然后选择父表(Parent表),拖动连线指向子表即可。   到此,数据库、数据库表和表关系就算建立好了。      3 生成SQL Server对应的数据库      3.1 具体的操作步骤   Step 10:导入数据库。打开SQL Server的“企业管理器”,新建一个名为“SystemRose”的数据库,与Rose中的DB同名,打开属性,在“文件组”一栏上已有默认的“PRIMARY”,这里就是对应Rose中的Tablespace。   Step 11:回到Rational Rose中,选中“SystemRose”单击右键选择“Data Modelerà Forward Engineer(生成数据库)” (如图13所示)。   Step 12:在弹出的如图14所示对话框中,点击“Next”,选择想导入的部分(一般按默认选项即可,如图15所示),再点击“Next”,选择“Execute”复选框,输入SQL Server的登陆帐号和密码(这是在安装SQL Server时设置好的),选择刚才建立的 “SystemRose”数据库(如图16所示),选择“Next”按钮Rational Rose就会将“SystemRose”数据库导入SQL Server中对应的“SystemRose”数据库中。   Step 13:检查SQL Server 2000,应该可以看到表都已经自动建立好了(如图18所示)。   3.2 出错原因   如果导入不成功,基本上是以下几个原因:   1)在Rose中建立表的时候,没有选择相应的Tablespace;   2)Rose中的Tablespace在SQL Server 2000中的文件组中找不到对应项。这里我们一开始就是用默认的“PRIMARY”,应该不会出错。如果用其他名称命名了Tablespace的话,只要把其改为“PRIMARY”,然后重新导入。注意重新导入之前,要先把SQL Server中SystemRose库里的表先删除,最后就可以看到一个可以使用的库了。
    展开全文
  • 一个专门进行运输业务的运送公司希望建立一个数据库以控制用户的运输订单。客户向一个办事处进行注册可以有一个或多个订单。每个订单都描述了运输的路线,包括各个地点和目的地。计算每个订单的需要的班数和拖车数等...
  • 客户管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易...
  • 客户管理系统之数据库设计

    千次阅读 2015-05-20 19:33:44
    客户管理系统的数据库设计使用SQL Server 2008数据库开发,客户管理系统(Customermanagement)一共包含七个表,下面一一介绍:  一,存储管理员账号和密码的manager表    存储管理员账号和密码的manager表...

            客户管理系统的数据库设计使用SQL Server 2008数据库开发,客户管理系统(Customermanagement)一共包含七个表,下面一一介绍:

            一,存储管理员账号和密码的manager表

     

            存储管理员账号和密码的manager表文档为:

     

            二,存储客户资料的customer表

     

            存储客户资料的customer表文档

     

            三,存储投诉信息的inform表

     

            存储投诉信息的inform表文档

     

            四,存放服务的servers表

     

            存放服务的servers表文档

     

            五,存放名族信息的nation表

     

            存放名族信息的nation表文档

     

            六,存放省信息的province表

     

            存放省信息的province表文档

     

            七,存放市信息的city表

     

            存放市信息的city表文档

     

            CustomerManagement数据库建立和七个数据表建立后就会出现一个相对完整的数据库:

     

           

     

     

     

           

     

           

    展开全文
  • 首先客户电脑上需要安装sqlserver数据库(2000或者是2005版本) 安装方法就不在这里介绍,下面说一下数据库建立办法。(以2005版本为例) 打开数据库的对象资源管理器,新建一个数据库,名称可以任意填写,如下...
  • 数据库

    千次阅读 2017-03-25 18:08:20
    关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。完整性包括: 1、域完整性: 域完整性是保证数据库字段取值的合理性。包括限制类型(数据类型),格式(通过检查约束和规则),...
  • 如何用VB建立数据库

    千次阅读 2007-06-17 23:31:00
    最佳答案Visual Basic作为应用程序的开发“利器”也表现在数据库应用程序的开发上,它良好的界面和强大的控件功能使数据库编程变得简单多了。但即便如此,数据库应用程序的开发仍然算得上是VB编程中的难点,这是因为...
  • 使用JDBC建立数据库连接的两种方式

    千次阅读 2016-12-29 10:19:42
    使用JDBC建立数据库连接的两种方式: 1.在代码中使用DriverManager获得数据库连接。这种方式效率低,并且其性能、可靠性和稳定性随着用户访问量得增加逐渐下降。 2.使用配置数据源的方式连接数据库,该方式其实质...
  • POI数据库说明 一、 典型使用者介绍:国家机构:国家...(核心应用场景:城市发展研究、LBS项目研发)目前全国企业级客户已经达到5000家以上。 二、 数据库说明:第一列ID,数据更新和维护;三组坐标:按照顺序...
  • 数据库建立索引的原则

    千次阅读 2010-11-03 16:15:00
    数据库建立索引的原则
  • 帮不少客户安装了PHPstudy,虽然建站上面非常简单明了,但是还是很多小白不清楚如何建立数据库,里面自带了快速创建数据库,但那只是创建了数据库,并未创建独立的数据库用户名,不太合适。下面介绍的是通过PHPstudy...
  • Access教程 第二章 建立数据库

    千次阅读 2008-03-12 12:39:00
    本章内容 ◆ 数据库的设计概念与创建数据库。◆ 表的创建及表与表之间的关系。◆ 数据库的修改、设计与编辑。 一、数据库的设计 1.概念及准则 下面介绍数据库设计的概念,及由此而产生的数据库设计准则。Access...
  • 为mysql数据库建立索引

    千次阅读 2016-01-13 16:18:35
    为mysql数据库建立索引 前些时候,一位颇高级的程序员居然问我什么叫做索引,令我感到十分的惊奇,我想这绝不会是沧海一粟,因为有成千上万的开发者(可能大部分是使用MySQL的)都没有受过有关数据库的正规培训,...
  • 数据库 - 数据库系统结构

    千次阅读 2015-05-03 12:47:08
    数据库系统结构从数据库管理系统角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构 从数据库最终用户角度看(数据库系统外部的体系结构) ,数据库系统的结构分为: 单用户结构 分布式结构 ...
  • 今天在使用另外一个数据库通过DBLINK 链路进来的一张表时,抛出“ORA-02041: 客户数据库未开始一个事务处理”异常,但是简单的BeginTransaction好像并不能解决问题,苦翻了一通资料,又上网转了半天,最终在一个博客...
  • 建立安全SSL连接PostgreSQL数据库服务器当前物联网的挑战之一就是提供最高的安全级别。这就是为什么需要开启SSL连接到 PostgreSQL。 当你想要安全的存储数据到PostgreSQL数据中时,第一件事就是通过加密的连接保护...
  • 数据库数据库中表等数据库对象的建立实验(包括关系图、完整性、权限控制、视图、索引等内容)实验1 SQL Server的安装安装过程展示实验2 设计数据库、创建数据库和数据表实验5 视图实验6 完整性约束实验7 权限管理...
  • 数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    1,数据库 1)概念 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。 常见数据库管理系统有:Access、mysql、sql server 2)特点 ①数据库数据特点 永久存储、有组织...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 235,881
精华内容 94,352
关键字:

怎么建立客户数据库