精华内容
下载资源
问答
  • 现在我的里面的列不确定,举个例子来说吧:现在我要建立一个结果,结果的列是各种楼型,列数据是每种楼型的数量。比如我的一个结果记录:50个A楼型,40个B楼型,30个C楼型.....。那么我的第一个结果记录就是50...
  • 在xcode的数据库中建立了一个数据表,数据存上去之后,怎么在视图上读取并显示数据库中的数据?
  • 还是决定要写一些MySQL workbench的操作过程,怎么添加新的数据库建立新的,为添加数据!    1:可以看到MySQL Connections下面是我们设置的MySQL本地登录账号,这个账号是我们安装MySQL过程设置的,...

           为了日后能找到自己的学习笔记。还是决定要写一些MySQL workbench的操作过程,怎么添加新的数据库,建立新的表,为表添加数据!

     

     1:可以看到MySQL Connections下面是我们设置的MySQL本地登录账号,这个账号是我们在安装MySQL过程中设置的,一般命名为root,端口为3306,密码默认为空。双击进入。

    1

     2:要注意一点的是,在MySQL中,database(数据库)==schema(模式)。在左下角schema下方区域鼠标右键选择create schema,即可创建数据库。

    2

     3

    3:新建表

    5 

    展开全文
  • 问题:一个庞大的系统,数据表几百张,所有字段近万个;还没有完整的数据表说明文档;怎么维护,怎么二次开发?解决:自己手动建立一个excel文档;简单上手就制作一个详细的表清单!工具:plsql方法:plsql的sql...
    问题:一个庞大的系统,数据表几百张,所有字段近万个;还没有完整的数据表说明文档;
    怎么维护,怎么二次开发?

    解决:自己手动建立一个excel文档;简单上手就制作一个详细的表清单!

    工具:plsql

    方法:在plsql的sql窗口直接执行 :(记住:不要改动上面的任何字母,适用于所有oracle数据库)

    SELECT t.table_name,
           t.COLUMN_NAME,
           t.DATA_TYPE || '(' || t.DATA_LENGTH || ')',
           t1.COMMENTS
      FROM User_Tab_Cols t, User_Col_Comments t1
    WHERE t.table_name = t1.table_name
        AND t.column_name = t1.column_name;

    结果就是所有的表结构了,然后导出cvs文件,用excel打开,表结构一目了然,包括了 表名称,字段名称,字段类型及长度 ,备注等信息,这样,只要复制黏贴就可以很快高效率的完成表结构文档的编写和修改了! 

    只需要自己再排个序,然后另存为excel的xsl格式就OK了!觉得方便好用就顶一下!

    纯干货,无废话,多多支持!


    展开全文
  • 1.要先了解是用MVC的思想来实现,MVC是由模型层(Model),...3.MyEclipse中建立一个项目并给项目取一个名字,此我建立的名字为userManager。 4.现在来分析M层需要什么,然而M需要建立实体类,dao层和DBHelper类...

    1.要先了解是用MVC的思想来实现,MVC是由模型层(Model),视图层(View)和控制器层(Controller)这三个相互独立的层面所组成的。

    2.第二步是很重要的,你要有MYSQL,并在其中创建表。

    3.在MyEclipse中建立一个项目并给项目取一个名字,在此我建立的名字为userManager。

    4.现在来分析M层需要什么,然而M需要建立实体类,dao层和DBHelper类(DBHelper是一个很好用的类,将要用的封装起来)

    4.1 建立实体类(User),需要根据数据库中定义的内容来制定,例如

    package entity;
    
    public class User {
        private String userID;//数据成员(字段)
        private String userName;
        private String password;
        public String getUserID() {
            return userID;
        }
        public void setUserID(String userID) {
            this.userID = userID;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
    
    }

    在以上代码中定义了3个数据成员,分别是userID,userName,password;它们都定义为私有的。

    4.2 建立dao层

    package dao;
    
    import java.util.*;
    import java.sql.*;
    import entity.*;
    import DBHelper.DBHelper;
    
    public class Userdao {
        public List getAllUser()
        {
            try
            {
            String SQL="SELECT* FROM user";
            ResultSet rs=DBHelper.getResultSet(SQL);
            List users=new ArrayList();
            while(rs.next())
            {
                User u=new User();
                u.setUserID(rs.getString("userID"));
                u.setUserName(rs.getString("userName"));
                u.setPassword(rs.getString("password"));
                users.add(u); 
            }
            return users;
        }
            catch(Exception ex){
                ex.printStackTrace();
                return null;
                }
            
    }
    }

    在以上代码中体现的是要查询所有的用户数据

    List是列表的意思,List getAllUser是列出所有的数据

    try是抛出异常

    String SQL="SELECT * FROM user"是指查询数据库中user表

    ResultSet rs=DBHelper.getResultSet(SQL);是指结果等于SQL中的数据结果集

    List users=new ArrayList();是指输出用户列表

    然后用循环语句来遍历数据

    while(rs.next())
            {
                User u=new User();
                u.setUserID(rs.getString("userID"));
                u.setUserName(rs.getString("userName"));
                u.setPassword(rs.getString("password"));
                users.add(u); 
            }

    返回值为 users

    最后写一个捕获异常的语句,返回值为空

    4.3 DBHelper

    package DBHelper;
    
    import java.io.Console;
    import java.sql.*;
    import java.util.Enumeration;
    //import java.util.logging.*;
    //import javax.swing.table.*;
    
    /**
     *  SQL 基本操作
     * 通过它,可以很轻松的使用 JDBC 来操纵数据库
     * @author Null
     */
    public class DBHelper
    {
    
        /**
         * 驱动
         */
        //public static String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
        public static String driver = "com.mysql.jdbc.Driver";
        /**
         * 连接字符串
         */
        //public static String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=st";
        public static String url = "jdbc:mysql://127.0.0.1:3306/test";
        /**
         * 用户名
         */
        public static String user = "root";
        /**
         * 密码
         */
        public static String password = "root";
    
        /**
         * 不允许实例化该类
         */
        private DBHelper()
        {
        }
    
        /**
         * 获取一个数据库连接
         * 通过设置类的  driver / url / user / password 这四个静态变量来 设置数据库连接属性
         * @return 数据库连接
         */
        public static Connection getConnection()
        {
            try
            {
                //获取驱动
                Class.forName(driver);
            } catch (ClassNotFoundException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
            }
    
            try
            {
                return DriverManager.getConnection(url, user, password);
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                return null;
            }
        }
    
        /**
         * 获取一个 Statement
         * 该 Statement 已经设置数据集 可以滚动,可以更新
         * @return 如果获取失败将返回 null,调用时记得检查返回值
         */
        public static Statement getStatement()
        {
            Connection conn = getConnection();
            if (conn == null)
            {
                return null;
            }
            try
            {
                return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                        ResultSet.CONCUR_UPDATABLE);
            // 鐠佸墽鐤嗛弫鐗堝祦闂嗗棗褰叉禒銉︾泊閸旓拷閸欘垯浜掗弴瀛樻煀
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                close(conn);
            }
            return null;
        }
    
        /**
         * 获取一个 Statement
         * 该 Statement 已经设置数据集 可以滚动,可以更新
         * @param conn 数据库连接
         * @return 如果获取失败将返回 null,调用时记得检查返回值
         */
        public static Statement getStatement(Connection conn)
        {
            if (conn == null)
            {
                return null;
            }
            try
            {
    
                return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
                // 设置数据集可以滚动,可以更新
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                return null;
            }
        }
    
        /**
         * 获取一个带参数的 PreparedStatement
         * 该 PreparedStatement 已经设置数据集 可以滚动,可以更新
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return 如果获取失败将返回 null,调用时记得检查返回值
         */
        public static PreparedStatement getPreparedStatement(String cmdText, Object[] cmdParams)
        {
            Connection conn = getConnection();
            if (conn == null)
            {
                return null;
            }
    
            PreparedStatement pstmt = null;
            try
            {
                
                pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
                int i = 1;
                for (Object item : cmdParams) //java foreach遍历集合,要求集合类实现Enumeration接口
                {
                    pstmt.setObject(i, item);
                    i++;
                }
            } catch (SQLException e)
            {
                e.printStackTrace();
                close(conn);
            }
            return pstmt;
        }
    
        /**
         *  获取一个带参数的 PreparedStatement
         * 该 PreparedStatement 已经设置数据集 可以滚动,可以更新
         * @param conn 数据库连接
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return 如果获取失败将返回 null,调用时记得检查返回值
         */
        public static PreparedStatement getPreparedStatement(Connection conn, String cmdText, Object[] cmdParams)
        {
            if (conn == null)
            {
                return null;
            }
    
            PreparedStatement pstmt = null;
            try
            {
                pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
                int i = 1;
                for (Object item : cmdParams)
                {
                    pstmt.setObject(i, item);
                    i++;
                }
            } catch (SQLException ex)
            {
                System.out.println(ex.getMessage());
                //ex.printStackTrace();
                close(pstmt);
            }
            return pstmt;
        }
    
        /**
         * 执行 SQL 语句,返回结果为整型
         * 主要用于执行非查询语句
         * @param cmdText SQL 语句
         * @return 非负数:正常执行; -1:执行错误; -2:连接错误
         */
        public static int ExecSql(String cmdText)
        {
            Statement stmt = getStatement();
            if (stmt == null)
            {
                return -2;
            }
            int i;
            try
            {
                i = stmt.executeUpdate(cmdText);
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null,ex);
                System.out.println(ex.getMessage());
                i = -1;
            }
            closeConnection(stmt);
            return i;
        }
    
        /**
         * 执行 SQL 语句,返回结果为整型
         * 主要用于执行非查询语句
         * @param cmdText SQL 语句
         * @return 非负数:正常执行; -1:执行错误; -2:连接错误
         */
        public static int ExecSql(Connection conn, String cmdText)
        {
            Statement stmt = getStatement(conn);
            if (stmt == null)
            {
                return -2;
            }
            int i;
            try
            {
                i = stmt.executeUpdate(cmdText);
    
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
               
                i = -1;
            }
            close(stmt);
            return i;
        }
    
        /**
         * 执行 SQL 语句,返回结果为整型
         * 主要用于执行非查询语句
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return 非负数:正常执行; -1:执行错误; -2:连接错误
         */
        //非常好用
        public static int ExecSql(String cmdText, Object[] cmdParams)
        {
            PreparedStatement pstmt = getPreparedStatement(cmdText, cmdParams);
            if (pstmt == null)
            {
                return -2;
            }
            int i;
            try
            {
                i = pstmt.executeUpdate();
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
               i = -1;
            }
            closeConnection(pstmt);
            return i;
        }
    
        /**
         * 执行 SQL 语句,返回结果为整型
         * 主要用于执行非查询语句
         * @param conn 数据库连接
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return 非负数:正常执行; -1:执行错误; -2:连接错误
         */
        public static int ExecSql(Connection conn, String cmdText, Object[] cmdParams)
        {
            PreparedStatement pstmt = getPreparedStatement(conn, cmdText, cmdParams);
            if (pstmt == null)
            {
                return -2;
            }
            int i;
            try
            {
                i = pstmt.executeUpdate();
    
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                i = -1;
            }
            close(pstmt);
            return i;
        }
    
        /**
         * 返回结果集的第一行的一列的值,其他忽略
         * @param cmdText SQL 语句
         * @return
         */
        public static Object ExecScalar(String cmdText)
        {
            ResultSet rs = getResultSet(cmdText);
            Object obj = getScalar(rs);
            closeConnection(rs);
            return obj;
        }
    
        /**
         * 返回结果集的第一行的一列的值,其他忽略
         * @param conn 数据库连接
         * @param cmdText SQL 语句
         * @return
         */
        public static Object ExecScalar(Connection conn, String cmdText)
        {
            ResultSet rs = getResultSet(conn, cmdText);
            Object obj = getScalar(rs);
            closeEx(rs);
            return obj;
        }
    
        /**
         * 返回结果集的第一行的一列的值,其他忽略
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return
         */
        public static Object ExecScalar(String cmdText, Object[] cmdParams)
        {
            ResultSet rs = getResultSet(cmdText, cmdParams);
            Object obj = getScalar(rs);
            closeConnection(rs);
            return obj;
        }
    
        /**
         * 返回结果集的第一行的一列的值,其他忽略
         * @param conn 数据库连接
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return
         */
        public static Object ExecScalar(Connection conn, String cmdText, Object[] cmdParams)
        {
            ResultSet rs = getResultSet(conn, cmdText, cmdParams);
            Object obj = getScalar(rs);
            closeEx(rs);
            return obj;
        }
    
        /**
         * 返回一个 ResultSet
         * @param cmdText SQL 语句
         * @return
         */
        public static ResultSet getResultSet(String cmdText)
        {
            Statement stmt = getStatement();
            if (stmt == null)
            {
                return null;
            }
            try
            {
                return stmt.executeQuery(cmdText);
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
               closeConnection(stmt);
            }
            return null;
        }
    
        /**
         * 返回一个 ResultSet
         * @param conn
         * @param cmdText SQL 语句
         * @return
         */
        public static ResultSet getResultSet(Connection conn, String cmdText)
        {
            Statement stmt = getStatement(conn);
            if (stmt == null)
            {
                return null;
            }
            try
            {
                return stmt.executeQuery(cmdText);
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                close(stmt);
            }
            return null;
        }
    
        /**
         * 返回一个 ResultSet
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return
         */
        public static ResultSet getResultSet(String cmdText, Object[] cmdParams)
        {
            PreparedStatement pstmt = getPreparedStatement(cmdText, cmdParams);
            if (pstmt == null)
            {
                return null;
            }
            try
            {
                return pstmt.executeQuery();
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                closeConnection(pstmt);
            }
            return null;
        }
    
        /**
         * 返回一个 ResultSet
         * @param conn 数据库连接
         * @param cmdText 需要 ? 参数的 SQL 语句
         * @param cmdParams SQL 语句的参数表
         * @return
         */
        public static ResultSet getResultSet(Connection conn, String cmdText, Object[] cmdParams)
        {
            PreparedStatement pstmt = getPreparedStatement(conn, cmdText, cmdParams);
            if (pstmt == null)
            {
                return null;
            }
            try
            {
                return pstmt.executeQuery();
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
                close(pstmt);
            }
            return null;
        }
    
        public static Object getScalar(ResultSet rs)
        {
            if (rs == null)
            {
                return null;
            }
            Object obj = null;
            try
            {
                if (rs.next())
                {
                    obj = rs.getObject(1);
                }
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
            }
            return obj;
        }
     
        private static void close(Object obj)
        {
            if (obj == null)
            {
                return;
            }
            try
            {
                if (obj instanceof Statement)
                {
                    ((Statement) obj).close();
                } else if (obj instanceof PreparedStatement)
                {
                    ((PreparedStatement) obj).close();
                } else if (obj instanceof ResultSet)
                {
                    ((ResultSet) obj).close();
                } else if (obj instanceof Connection)
                {
                    ((Connection) obj).close();
                }
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
           }
        }
    
        private static void closeEx(Object obj)
        {
            if (obj == null)
            {
                return;
            }
    
            try
            {
                if (obj instanceof Statement)
                {
                    ((Statement) obj).close();
                } else if (obj instanceof PreparedStatement)
                {
                    ((PreparedStatement) obj).close();
                } else if (obj instanceof ResultSet)
                {
                    ((ResultSet) obj).getStatement().close();
                } else if (obj instanceof Connection)
                {
                    ((Connection) obj).close();
                }
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
            }
    
        }
    
        private static void closeConnection(Object obj)
        {
            if (obj == null)
            {
                return;
            }
            try
            {
                if (obj instanceof Statement)
                {
                    ((Statement) obj).getConnection().close();
                } else if (obj instanceof PreparedStatement)
                {
                    ((PreparedStatement) obj).getConnection().close();
                } else if (obj instanceof ResultSet)
                {
                    ((ResultSet) obj).getStatement().getConnection().close();
                } else if (obj instanceof Connection)
                {
                    ((Connection) obj).close();
                }
            } catch (SQLException ex)
            {
                //Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
           }
        }
    }

    5.在C层控制器层(Controller)中建立servlet类

    public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
                doPost(request, response);
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            Userdao dao=new Userdao();
            List users=dao.getAllUser();
            request.getSession().setAttribute("users", users);
            response.sendRedirect("../user.jsp");
            
        }

    在servlet中主要写执行语句

    List users=dao.getAllUser();

    显示所有用户列表

    request.getSession().setAttribute("users", users);

    请求会话的属性

    response.sendRedirect("../user.jsp");

    跳转的页面路径

    6.记得要加入SQL的驱动

    7.在V层视图层(View)中写入一个jsp,取名为user,在里面写入动态内容

    <body>
        <% 
            List<User> users =(List<User>)session.getAttribute("users");
            out.print("<table border=1>");
            out.print("<tr><td>用户ID</td><td>用户名</td><td>密码</td></tr>");
            for(User u : users)
            {
                out.print("<tr>");
                out.print("<td>"+u.getUserID()+"</td>");
                out.print("<td>"+u.getUserName()+"</td>");
                out.print("<td>"+u.getPassword()+"</td>");
                out.print("</tr>");
            }
            out.print("</table>");
        %>
      </body>

    8.最后就大功告成了

    在这里显示中有??,是因为有乱码问题,还在解决中

     

    转载于:https://www.cnblogs.com/yumofei/p/5261923.html

    展开全文
  • 数据库怎么设计多对多的数据表

    千次阅读 2018-05-11 00:50:00
    数据库怎么设计多对多的数据表 一、总结 1、项目小组和主题之间是多对多的 2、可以将常用信息和不常用信息分成两个表来优化数据库  2、一对多的话:多的里面建立一的字段,比如母亲(一)和孩子(多),...

    数据库怎么设计多对多的数据表

    一、总结

    1、项目中小组和主题之间是多对多的

    2、可以将常用信息和不常用信息分成两个表来优化数据库 

    2、一对多的话:在多的里面建立一的字段,比如母亲(一)和孩子(多),在孩子里面添加母亲id

    3、多对多的话:比如老师和学生,建立一个关系表,表id,老师id,学生id即可

     

    二、数据表设计(一对多,多对多)

     做一个项目,必然是少不了数据库设计的!在学习阶段,基本都是单表。然而在实际开发过程中,一对多,多对多的表处处都是!简单整理一下,一对多,多对多表如何设计整理一下思路:

           数据库实体间有三种对应关系:一对一,一对多,多对多。

           一对一关系示例:

      • 一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。

           一对多关系示例:

      • 一个学生只属于一个班,但是一个班级有多名学生。

           多对多关系示例:

      • 一个学生可以选择多门课,一门课也有多名学生。

    1.一对多关系处理:

           通过学生和班级问题了解一对多:

           设计数据库表:只需在 学生表 中多添加一个班级号的ID;

    注:在数据库中表中初学时,还是通过添加主外键约束,避免删除数据时造成数据混乱!

     

    2.多对多关系处理:

        通过学生选课了解多对多问题的处理:

     

           在多对多中在一个表中添加一个字段就行不通了,所以处理多对多表问题时,就要考虑建立关系表了

    例:

     学生表:     课程表:   关系表:

     

    注:所以对于多对多表,通过关系表就建立起了两张表的联系!多对多表时建立主外键后,要先删除约束表内容再删除主表内容

     

     

     

    三、数据库怎么设计多对多的数据表

    1.数据库中的多对多关联关系一般需采用中间表的方式处理将多对多转化为两个一对多
    2.通过表的关系,来帮助我们怎样建表,建几张表。
    一对一
    一张表的一条记录一定只能与另外一张表的一条记录进行对应,反之亦然。

    学生表:姓名,性别,年龄,身高,体重,籍贯,家庭住址,紧急联系人
    其中姓名、性别、年龄、身高,体重属于常用数据,但是籍贯、住址和联系人为不常用数据
    如果每次查询都是查询所有数据,不常用的数据就会影响效率,实际又不用
    常用信息表:ID(P),姓名,性别,年龄,身高,体重
    不常用信息表:ID(P),籍贯,家庭住址,紧急联系人

    解决方案:将常用的和不常用的信息分享存储,分成两张表
    不常用信息表和常用信息表,保证不常用信息表与常用信息表能够对应上:找一个具有唯一性的
    字段来共同连接两张表。
    一个常用表中的一条记录永远只能在一张不常用表中匹配一条记录,反之亦然。
    一对多
    一张表中有一条记录可以对应另外一张表中的多条记录;但是反过来,另外一张表的一条记录
    只能对应第一张表的一条记录,这种关系就是一对多或多对一
    母亲与孩子的关系:母亲,孩子两个实体
    母亲表:ID(P),名字,年龄,性别
    孩子表:ID(P),名字,年龄,性别
    以上关系:一个妈妈可以在孩子表中找到多条记录(也可能是一条),但是一个孩子只能找到一个妈妈
    是一种典型的一对多的关系。
    但是以上设计:解决了实体的设计表问题,但是没有解决关系问题,孩子找不到母亲,母亲也找不到孩子

    解决方案:在某一张表中增加一个字段,能够找到另外一张表中的记录:在孩子表中增加一个字段
    指向母亲表,因为孩子表的记录只能匹配到一条母亲表的记录。
    母亲表:ID(P),名字,年龄,性别
    孩子表:ID(P),名字,年龄,性别,母亲表ID(母亲表主键)
    多对多
    一对表中(A)的一条记录能够对应另外一张表(B)中的多条记录;同时B表中的一条记录
    也能对应A表中的多条记录

    老师和学生
    老师表 T_ID(P),姓名,性别
    学生表 S_ID(P),姓名,性别
    以上设计方案:实现了实体的设计,但是没有维护实体的关系
    一个老师教过多个学生,一个学生也被多个老师教过

    解决方案:增加一张中间关系表
    老师与学生的关系表:ID(P),T_ID,S_ID
    老师表与中间表形成一对多的关系,而中间表是多表;维护了能够唯一找到一表的关系;
    同样的学生表与中间表也是一个一对多的关系;
    学生找老师:找出学生ID--->中间表寻找匹配记录(多条)--->老师表匹配(一条)
    老师找学生:找出老师ID--->中间表寻找匹配记录(多条)--->学生表匹配(一条)

     

    展开全文
  • 我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值。 下面我们通过例子来展示,EF Core是怎么获取数据库的...
  • 官方文档的培训教程看到了SQL一章,看了一下午没怎么懂,于是晚上找了一些前辈的实例来学习,大致明白了SQLAndroid当中的使用。 1.建立契约类(Contract) 契约类的作用是为数据库定型,包含了数据库具体的...
  • C# 关于从数据库数据,并显示DataGridView

    万次阅读 多人点赞 2016-08-30 15:49:56
    2.将数据库中取到的数据通过一定方法,显示界面的的dataGridView中 代码:   效果如下: 从中,我们可以看到,显示出来的表格,完全是数据库中的样子,包括列明也是数据库中的列名,把数据库的搬到前台页面...
  • 如下图:前段数据页面这不演示了,提交表单后,后台服务器获取各种属性,传递到数据处理层,也就是数据库的插入操作。代码执行: //数据传递 public void getEmpList(String name, Strin...
  • 关于怎么把Excel表格导入MySQL数据库中

    万次阅读 多人点赞 2019-06-06 18:27:35
    关于怎么把Excel表格导入MySQL数据库中第一步:建造Excel表格并且编辑数据1、我们要建立一个Excel表格文件2、编辑我们需要的数据3、保存到你知道的位置第二步:MySQL中建立一张1、   我一开始学习编程时...
  • 以前的文章,我曾经提到过数据类型、怎么创建一个合适的用户。今天我就以实际的例子来与大家讨论讨论这个问题。很多面试者都没有给出我想要的答案。 进入正题,我就以用户建立抛砖引玉。 首先来看看我...
  • 数据库数据 索引

    2021-05-10 10:08:09
    怎么数据库中的一亿条数据中读取我想要的十条数据? 写查询的sql语句,要查询关键字上建立索引,这样可以加快速度。 例如:select 字段1,字段2,… from where 条件1= aa and 条件2 = bb 1、应尽量避免 ...
  • RDBMS(Relational Database Management System)关系型数据库管理系统,建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中数据,简而言之,就是管理数据库的软件。常见的关系型数据库...
  • //记录数据库中的一行报警数据 QString strString; const QString FILE_PATH(csvFileName); QFile csvFile(FILE_PATH); if (csvFile.open(QIODevice::ReadWrite)) { for (int i=0;i<exportModel->...
  • // 建立查询条件 String sql = "select 旅客.航班号,座位号,姓名,旅客.票号,票价,起点,终点,起飞时间,到达时间 from 旅客,航班,机票 where 航班.航班号=旅客.航班号 and 旅客.票号=机票.票号 and 旅客.航班号='A...
  • 收藏 数据库设计

    万次阅读 2016-05-18 17:56:25
    现用户可以收藏产品,应该怎么设计数据表 1.是用户表里增加收藏列,以类似(产品ID)这样的方法存储? 2.还是增加收藏表,以每个用户的每个收藏都当作一条数据? 单独建立收藏表, 基本没有用户表...
  • Oracle数据库中运行DDL时,它会发出两个隐式提交。语句之前一个,语句完成之后一个(成功!)。上周,我Twitter上提出了以下测验,违反了这一规则。我运行以下命令:建立表格其中插入一行创建另一个回滚现在第...
  • 为什么要SQL2008...BENET公司新建立了一个SQL数据库,名称为benet,再创建一个名称为temp的学生。企业数据不一定会使用相同的数据格式存储数据,就需要把不同的数据格式进行相应的转换。 (这是BENET公...
  • 数据库中的三范式

    2020-08-07 10:13:59
    数据库中的三范式: 数据库设计三范式(重点) 1、什么是设计三范式? 设计的依据。按照这个三范式设计的不会出现数据冗余。 2、三范式都有哪些内容? (1)第一范式:任何一张都应该有主键,并且中每一个...
  • 1.定义一个数据表 2.为这个表建立一个类,成员变量是表的字段、方法是每个成员变量的getter与setter 3.建立一个DAO类,实现对这个表的数据的添加、删除、更新、查询(包括...如果不清楚怎么在Java和SQL数据库中搭建J...
  • 1、是我的表建立时字段类型不支持中文? 2、数据库的排序规则错误? 3、写入数据库时的数据编码问题? 第一种情况:把nchar改成nvarchar即可 我试了一下,表格内输入中文字符能显示,且能按中文正常读取,我的问题...
  • 通过Mysql数据文件进行数据库还原

    千次阅读 2011-10-24 19:35:17
    一直没有做MYSQL数据库的备份,最近...通过show tables命令倒是能够看到其中所有的,但是操作如查询的时候,就会报没有这个数据文件不存在,这个时候需要做的就是当前数据库中建立与原来库中相同的
  • 数据库表设计(一对多,多对多)

    万次阅读 多人点赞 2018-09-26 09:21:05
    三、数据库怎么设计多对多的数据表   回到顶部 一、总结 1、项目小组和主题之间是多对多的 2、可以将常用信息和不常用信息分成两个表来优化数据库  2、一对多的话:多的里面建立一的字段,比如母亲(一...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 274
精华内容 109
关键字:

怎么在数据库中建立数据表