精华内容
下载资源
问答
  • 知识点:数据库表的相关概念、创建数据库表的方法、设计数据库表、向数据库表中插入数据、建立不同数据库表之间的关系、删除数据库表。 1、数据表相关的一些概念 1.1 数据库里的数据是如何保存的? 数据库...

    知识点:数据库表的相关概念、创建数据库表的方法、设计数据库表、向数据库表中插入数据、建立不同数据库表之间的关系、删除数据库表。

     

    1、数据表相关的一些概念

     

    1.1 数据库里的数据是如何保存的?

            数据库到底是怎么存储数据的?比如要把学生信息存储到数据库里,能把学生塞进数据库吗?肯定是把学生的数据信息抽象出来,把一些重要信息以文字或数字的形式保存到数据库中去。

           具体是怎么保存的,有点类似于excel,是用一张二维表的形式来进行数据保存的。这里有两个名词需要注意,行(称之为记录),列(称之为字段)。表中一条记录表示现实中的一个实体(学生)。所以以后的重点就是围绕这个表来进行设计,设计他的列。这个就是存储数据的概念。

     

     

    • 记录:数据库中存储的数据表格,每一“行”(Row)实际上对应一个实体(如每一行都对应一个名人),在数据库中,通常叫作一条“记录”(Record)。
    • 字段:表格中的每一个“列”,如编号、姓名、性别、职业、代表角色/作品等,在数据库中,通常称之为“字段”。

     

    1.2  数据冗余

     

    数据冗余:在一个数据集合重复的数据称为数据冗余

            在数据库系统中,数据冗余是指数据之间的重复(比如上面学生信息表中,3条记录中都出现了“演影视剧表演”),也可以说是同一数据存储在不同数据文件中的现象(比如还有一个表,学生成绩表(该表的字段有姓名、专业、成绩),那么可以看到专业这个字段出现在两个表中,并且等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段)。

     

    减少数据冗余最常见的方法是分类存储

           比如,对上面的学生信息表进行调整,先制作一个专业编码表,然后再制作一个学生信息统计表。

     

           通过这样的方法,可以减少数据冗余,但是会增加查找数据的复杂性。比如,要查找专业为“主持人”的学生信息,原来只需要查找一个表就可以了。而现在则需要先在“专业编码表”里查询,专业为“主持人”的编码是多少,然后再到学生信息表里查到对应的人。这样一来,就增加了查找的复杂性,降低了效率。因此,在数据库中,通常允许有必要的冗余

     

    1.3 数据完整性

           数据完整性是指数据库中数据的准确性,如果多个表互相关联,那么只要修改其中一个表,与之相关的所有表都要做出相应的修改。否则数据将不再准确,也就失去完整性。(比如上面的职业编码表,将计算机专业对应的编码改为5,那么对应的学生信息表里的信息也要对应发生变化,否则就会出问题。)

            数据准确性是通过数据库表的设计和约束来实现的。例如在“学生信息表”中,如果不对表中存储的年龄信息加以限制(约束),那么学生的年龄可能会出现负数(录入错误等原因),这样的数据就不具备完整性。

             为了实现数据完整性,SQLServer提供了四种类型的约束:实体完整性约束、域完整性约束、引用完整性约束、自定义完整性约束。

    (1)实体完整性约束

    实体的概念:数据库表中的每一行数据都是一个实体。

    什么是实体完整性?实体完整性是指数据库表中行的完整性,即要求每一行数据都是唯一的不重复的。

    如何保证实体完整性?(后面详细讲解)

    • 设置主键约束:每个数据库表有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空”(NULL)或重复。
    • 设置唯一键约束:唯一键在一张表中可以有多个,并且唯一键允许字段数据为NULL。
    • 设置标识列属性:标识列又称标识符列,习惯上又叫自增列。(保证了不会重复且不会为空)

     

    (2)域完整性约束

    域的概念:域就是字段,数据库表中的每一列都是一个域/字段。

    什么是域完整性?域完整性指的是必须保证字段的值是合理的。即数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。

    如何保证域完整性?可以使用CHECK约束、UNIQUE约束、default默认值、identity自增、not null/null保证列的值域的完整性。

     

    (3)引用完整性

    引用的概念:一个表中的某个字段引用另一个表中的字段,被引用的表称为主表,引用表称为从表或外键表。

    什么是引用完整性?引用完整性也叫参照完整性,引用完整性指被主表中的主关键字和从表中的外部主关键字之间的关系。引用完整性是保证从表中外键列不会出现主表中对应主键列没有的项。

     

           举例:上面两张表“专业编码表”和“学生信息表”,观察他们有什么关系?“学生信息表中”的专业字段所对应的编号,引用自“专业编码表”中的专业编码字段。这时候这两张表之间就有了引用和被引用的关系。

    • 被引用的表“专业编码表”   ——主表。(用来约束其他表
    • 引用数据的表“学生信息表”——从表(或外键表)。(被主表约束
    • 建立主外键联系的字段之间的类型和意义必须一致(主表中的专业编码字段和从表中的专业字段,类型和意义必须一致)。
    • 主表中建立关系的字段必须是主键或者唯一键。
    • 删除主表数据:从表如果没有引用所要删除的主表数据,则可以删除。否则会报错。(先删除从表相关记录,再删除主表数据)

     

    (4)自定义完整性

    自定义的概念:用户自己定义规则。

    什么是自定义完整性?自定义完整性,也称域完整性规则,是对数据表中字段属性的约束。包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。如,百分制成绩的取值范围在0~100之间等。再比如输入性别信息时,只允许输入“男”或“女”。

     

    1.4 主键(Primary Key)

            如果在表中存储了很多行数据,就会引发这样的问题:如何判断表中没有重复的数据行?这时就需要有一个列,这一列的值能够唯一标识表中的每一行(即一条记录),用来强制实现表的实体完整性,这样的列称之为表的“主键”。

     

            数据库主键:指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。主键主要是用于和其他表的外键关联,以及本表记录的修改与删除。

    比如:
    学生表(学号,姓名,性别,班级)
    其中每个学生的学号是唯一的,学号就是一个主键

    专业表(专业编码,专业)
    其中课程编号是唯一的,课程编号就是一个主键

    注意:

    • 一个表只能有一个主键,并且主键列不允许出现空值(NULL),尽管有的表中允许没有主键,但是通常情况下,建议为表设置一列为主键。
    • 如果两列或多列组合起来唯一地标识表中的每一行,则该主键也叫作“复合主键”。
    • 在同一张表中,如果有多个列可以用来当做主键,在选择哪个列做为主键时,需要考虑两个原则:最少性和稳定性

     

     

    1.5 外键(Foreign Key)

            外键是实施引用完整性的约束,外键涉及到两个以上的表。如果一张表中的某一列是引用另一张表中的主键,那么这列就成为外键。比如学生信息表里的列“专业”,不是学生信息表的主键,但是它和专业编码表里的列“专业编码”对应,并且“专业编码”列是专业编码表的主键。因此,学生信息表里的列“专业”,是该表的外键。一个表可以有多个外键。

     

    1.6 列的数据类型

           在创建数据库表时,必须为表中的每列指派一种数据类型。

    • 文本数据类型选择:

    Unicode编码:(统一码、万国码、单一码)是一种在计算机上使用的字符集。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

    Char、Varchar、Text储存的字符是基于ASCII编码格式,是国际化通用与标准。对于其他编码格式的字符可能会造成存储问题。Unicode字符集(万国码)就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。

    Nchar、 Nvarchar、Ntext存储的正是Unicode编码格式的字符。所以一般来说,如果含有中文字符,用Nchar、Nvarchar、Ntext, 如果只含英文字符,就用Char、Varchar、Text。

    Char性能好;Varchar节省空间。选择方法:10个字节以上的用Varchar。N类型的占用空间大,性能低,如果不准备存中文或中亚文字则尽量避免使用。

    • 整数类型选择:首先int,空间占用合适,运算速度快。如果非常在意空间的话,考虑tinyint,   超大应用场合,考虑bigint。

     

    2、创建数据库表

            数据表(或称表)是数据库最重要的组成部分之一。数据库只是一个框架,数据表才是其实质内容。如“教学管理系统”中,教学管理”数据库包 含分别围绕特定主题的6个数据表:“教师”表、“课程”表、“成绩”表、“学生”表、“班级”表和 “授课”表,用来管理教学过程中学生、教师、课程等信息。这些各自独立的数据表通过建立关系被联接起来,成为可以交叉查阅、一目了然的数据库。

    创建数据库表的前提:已经在SSMS中建立了数据库,这里已经提前创建好数据库SchoolDB.

    2.1 在SSMS中建立数据库表

    第一步:在对象资源管理器中,点击数据库SchoolDB前面的“+”号,展开数据库,展开表,单击数据右键,点击【表】

    第二步:系统会创建一个空白表,在右侧区域定义表的列名和数据类型、是否允许Null值以及其他属性

    第三步:对表进行设计,这里先设计一个学生信息表。(列名不允许中文,数据类型根据该列的值选中适合的数据类型。)

    第四步:设置表的主键,这里设置MajorNumber为主键。设置方法:选中第一列,单击数据右键,在弹出的下拉菜单中单击【设置主键】即可。

    主键设置成功以后,会在改列的左侧出现一个钥匙符号,代表该列是主键。

     

    2.2 保存数据库表

    第五步:保存数据库表。方法:单击工具栏上的保存按钮,或者快捷键Ctrl+S,进行保存。初次保存时会弹出保存对话框,按照提示给表起个名称,然后单击确定即可。这里给表起名Student。

    刷新对象资源管理器,可以看到新创建的表。

     

    2.3 完善表的设计结构

    1、是否允许为空值

           数据库表的列是否允许为空,也是一种约束。如果该列允许为空,那么在输入数据行的时候,这一列的值可以不输入。比如注册账号的时候,一些非必填项,用户可以不填写。

     

    2、建立主键

           确定了列的名称、数据类型和是否允许为空后,表的基本框架就完成了。建立主键的方法在上面第四步已经详细说明,这里不再重复。

    思考几个问题:设置为主键的列,可以允许为空吗?一个表的主键可以由多列组成吗?列设置好以后,怎么调整顺序?

     

    3、默认值

            为了存储数据的方便,在设计表的时候,可以对一些列设置默认值。比如同一个学校的学生,地址如果不填写,默认值可以是学校地址,比如教师的级别如果不输入,默认值可以是“讲师”。

           表的默认值能够未某一列定义一个值,当用户没有在某一列中输入数据时,则将定义的值赋值给这一列。

           举例,在表中新添加一列,Address,设置数据类型,允许为空,并在表的下方设置默认值。

     

    4、标识列

           在很多情况下,存储的信息中很难找到不重复的信息作为表的主键。比如一个学生信息表,如果用姓名作为主键,那么在存储数据的时候,就不允许同一个班级、甚至同一个学校存在重名的学生。这样显然比较麻烦。SQL Sererver提供了一个“标识列”,来解决这样的en问题。

           标识列本身没有具体的意义,不反映诸如地址、性别这样的信息,只是用来区别不同的学生。设置标识列的方法:举例新增加一列Id,int类型,在表的下方列属性里点击“标识规范”,在(是标识)选项中点选“是”。

    注意:

    • 如果一列的数据属于数字类型(如整数),那么可以把该列定义为标识列。
    • 定义成标识列之后,还需要分别指定“标识种子”和“标识增量”,默认值都是 1。
    • 定义了标识列之后,在以后每次输入数据的时候,该列随数据行的增加而自动增加数值,并且不会重复,第一次的数字就是“标识种子”值,以后每次按照“标识增量”增加数值。
    • 标识列通常也被定义为主键,通常所说的“自动编号”就是指标识列的数字自动增加。
    • 标识列中的数据是自动生成的,不能在该列上输入数据。

    思考:标识列可以是字符串吗? 标识列可以允许空吗? 

    测试:如果标识列的标识种子是2,标识增量是3,先添加三行数据,然后删除,接着再向表中添加数据时,标识列的值会是多少?

     

     

    2.4 向表中插入数据

            数据库表设计好以后,就需要往表中添加数据了。

    方法:选择要添加数据的表,单击鼠标右键,在弹出的下拉菜单中选择【编辑前200行】

    在SSMS右侧出现添加数据,按照自己的设计添加数据就可以了。

    这里先添加两条数据,注意观察默认值和标识列、非空属性的应用。

    数据添加完成以后,要保持,在空白地方单击鼠标右键,点击【执行SQL】即可。

     

    2.5 建立表之间的关系

    准备工作:

    1、在SchoolDB数据库中新创建一个Major表。专业编号和专业名称,其中专业编号是主键。

    2、在Major表中添加专业信息(添加4条记录)

    两个表之间的关系:Student表中的Major列,引用Major表中的MajorNumber列。因此,Student表是从表,Major表是主表。

    建立两个表之间的关系:

    第一步:选中Student表中的Major列,单击数据右键,单击【关系】

    第二步:弹出一个【外键关系】对话框,点击【添加】

    第三步:点击【添加】以后,默认添加一个【关系】

    第四步:在右侧【表和列规范】后面的输入框里单击一下数据左键,出现一个按钮,单击该按钮。

    第五步:弹出一个【表和列】窗口,这个窗口是用来对关系进行设置的。这里要分清楚两个表,谁是主表、谁是从表。点击选择设置主键表是Major里的MajorNumber列,外键吧是Student里的Major列。然后单击【确定】

    单击确定后【表和列】窗口会关闭,直接在【外键关系】窗口单击【关闭】即可。

    第六步:由于刚才的Student表已经有了改动,单击保存,在弹出的【保存】窗口中,单击【是】。

    此时两个表之间已经建立了关系。

    思考:向Student表中插入数据,测试如果Major列输入数字5,是否可以?实际演练一下看看结果。

     

     

    2.6 建立数据库关系图

            要查看表之间的关系,可以在 SQL Server Management Studio 中展开该数据库(SchoolDB),右击“数据库关系图”,在弹出的快捷菜单中选择“新建数据库关系图”选项,然后根据提示信息新建数据库关系图,在向导中选择要显示关系的表。

    第一步:选择【数据库关系图】,单击鼠标右键,选择【新建数据库关系图】。

    第二步:弹出提示框,选择【是】。

    第三步:在弹出的【添加表】窗口中,将有关系的表全部选中,然后点击【添加】

    第四步:系统创建数据库表关系图。(注意观察不同符号)

    第五步:保存数据库关系图,单击工具栏保存按钮,弹出【选择名称】窗口,起个名字,然后单击【确定】即可。

    此时可以看到关系图文件已经保存

     

     

    2.7 建立检查约束

             检査约束也叫作 CHECK 约束,用于定义列中可接受的数据值或者格式,在设计表的时候,在快捷菜单中选择“CHECK 约束”选项,然后在弹出的“CHECK 约束”对话框中单击“添加”按钮,将添加一个新的约束。

    举例:设置Student表中Age列的值为18~30

    设置方法:

    第一步:重新设计Student表。在SchoolDB数据库中找到Student表,单击鼠标右键,选择【设计】

    第二步:选中Age列,单击鼠标右键,选择【CHECK约束】

    第三步:弹出【检查约束】窗口,在窗口上点击【添加】按钮

    第四步:系统新添加一个约束,点击右侧表达式后面的输入框,然后点击最右侧的按钮

    第五步:在弹出的【CHECK约束表达式】窗口中,添加对应的表达式,然后点击【确定】

    第六步:点击【检查约束】窗口上的【关闭】按钮

    第七步:保存Student表,单击工具栏保存按钮即可。

    第八步:验证CHECK约束。方法:选中Student数据表表单击右键选择【编辑前200行】,添加一行数据,如第三行,在填写Age列的值是填写16,全部填写完成要进入下一行填写时,提示错误,错误提示与CHECK约束起冲突。

     

     

    2.8 删除数据库表

            对于不再使用的数据库表,可以删除以释放磁盘空间,右击该表,在弹出的快捷菜单中选择“删除”选项可以把该表直接删除。对于建立主外键关系的表,若要删除主表,则首先要删除相关的从表以保证数据的引用完整性。

    举例:直接删除Major表时,提示删除失败,因为有外键约束。

     

     

     

     

    =================这里是结束分割线======================

    展开全文
  • 如何创建数据库表之间的关联关系

    千次阅读 2015-10-24 16:04:22
    例如两张:Husband和wife,在数据库中设置彼此主键id相互关联(少用) 此时在两个实体类中不用添加任何对象属性 2.一对一单向外键关联 例如两张:Husband和wife ***在设计实体类时建立联系: 对象
    

             
                                             一对一关联
     
    1.一对一的单向主键关联:
    例如两张表:Husband和wife,在数据库中设置彼此的主键id相互关联(少用)
    此时在两个实体类中不用添加任何的对象属性
    2.一对一的单向外键关联
    例如两张表:Husband和wife
    ***在设计实体类时建立联系:
    对象模型:只在Husband类中添加属性private Wife wife;并生成getter和setter方法,
             如果不使用多表关联查询HQL语句,那么要进行多表查询需在Husband实体类中再添加private int wifeid;属性,这也是传统做法
    关系模型:以Wife表为主导:
             在Husband表中添加一个字段wifeid,该字段与wife表中的id建立关联关系
    或者:
    对象模型:只在Wife类中添加属性private Husband husband;并生成getter和setter方法,
             如果不使用多表关联查询HQL语句,那么要进行多表查询需在Wife实体类中添加private int husbandid;属性,这也是传统做法
    关系模型:以Husband表为主导:
             在wife表中添加一个字段husbandid,该字段与husband表中的id建立关联关系
    3.一对一的双向外键关联
    对象模型:在Husband类中添加属性private Wife wife;并生成getter和setter方法,同时在
             在Wife类中添加属性private Husband husband;并生成getter和setter方法
    关系模型:两种主导关系建立任意一种即可,不必两种主导关系同时建:
             以Wife表为主导:在Husband表中添加一个字段wifeid,该字段与wife表中的id建立关联关系或者
             以Husband表为主导:在wife表中添加一个字段husbandid,该字段与husband表中的id建立关联关系
            
    4.一对一双向主键关联----(不重要,此处不再介绍)

    ----------------------------------------------------------------------------------------------
    总结:一对一单向和双向在数据库中的表现是一样的,区别体现在java程序中,单向只能找一次,双向可以相互找到
    ----------------------------------------------------------------------------------------------
     
                                     一对多和多对一关联 ---- 原则:在多方添加外键
      两张表:user表和group表
    1.多对一的单向关联:
    对象模型:根据在多方添加外键的构思:在多方User类中添加属性:private Group group;
    关系模型:在user表中添加groupid字段,该字段和group表中的id关联
    2.一对多的单向关联:
    对象模型:在一的一方设置多方的集合属性:即在group中设置:private Set<User> users = new HashSet<User>();//此处最适合使用set集合,因为不会重复
    关系模型:和多对一在数据库的表现一致,同样遵循在多方设置外键的思想,即在user表中添加groupid字段,该字段和group表中的id关联
    3.多对一(一对多)的双向关联:
    对象模型:在单方添加集合属性,在多方添加对象属性
    关系模型:和单向在数据库的表现一致,同样遵循在多方设置外键的思想,即在user表中添加groupid字段,该字段和group表中的id关联
    ----------------------------------------------------------------------------------------------
    总结:数据库表现相同并遵循一个原则:在多方设置外键
    ----------------------------------------------------------------------------------------------

                                                多对多关联 --- 增加中间表
      两张表:teacher表和student表
    1.多对多单向关联:
    对象模型:在其中某一个实体类中设置set集合属性
    关系模型:增加中间表,包含studentid和teacherid,并分别向两张表做关联
    2.多对多双向关联:
    对象模型:在两个实体类中均设置set集合属性
    关系模型:和单向关联在数据库表现一致,增加中间表,包含studentid和teacherid,并分别向两张表做关联
    -----------------------------------------------------------------------------------------------
    总结:在数据库表现一致:增加中间表,类中设置set集合
    -----------------------------------------------------------------------------------------------

    -----------之前的BBS项目中数据库表设计:
    新闻表和评论表:
                 1.如果要先查询新闻再查询评论,则确定两张表为一对多关系
                 2.如果想在查询评论的时候查询它属于哪个新闻,则确定关系为多对一
    到底是一对多还是多对一对在数据库中的表现没有影响,都是在多方设置外键,但是在java类中的表现不同,
    是在一方添加set集合属性,还是在多方添加对象属性,这取决于关联关系,既然双向,单向在数据库中表现一致,
    那么在java类中建议设置成双向关联。


    展开全文
  • 这里指的是二者之间的命名关系,以一些例子来说明: 1.用户中有 用户名,任务名称,创建时间、更新时间等字段,那中的列名就应该采用下划线并统一小写的形式: user_name,task_name, create_time,update_time 2....

    这里指的是二者之间的命名关系,以一些例子来说明:

    1.用户表中有 用户名,任务名称,创建时间、更新时间等字段,那表中的列名就应该采用下划线并统一小写的形式: user_name,task_name, create_time,update_time

    2.对应用户表的实体就采用规范的驼峰命名法一一对应即可:
    userName、taskName、createTime、updateTime

    3.这时候你可能会发现数据库有值,但查询结果的字段值为 null : 所以基于以上两个步骤,还需要在配置文件中设置开启 下划线转驼峰命名的配置:
    mybatis:
    configuration:
    # 下划线转驼峰
    map-underscore-to-camel-case: true

    上述是以我自己的项目情况叙述,根据自己实际情况进行相应调整(欢迎补充指正)

    展开全文
  • SQL创建多表及多表之间的关系

    千次阅读 2018-11-29 22:46:32
    ### SQL 会创建多表及多表的关系 #### 需求: 分类表和商品表之间是不是有关系? 如果有关系,在数据库如何表示这种关系 ```sql create table category(  cid int primary key auto_increment,  cname varchar...

    ### SQL 会创建多表及多表的关系

    #### 需求:

    分类表和商品表之间是不是有关系? 如果有关系,在数据库中如何表示这种关系

    ```sql
    create table category(
      cid int primary key auto_increment,
      cname varchar(10),
      cdesc varchar(31)
    );

    insert into category values(null,'手机数码','电子产品,生产');
    insert into category values(null,'鞋靴箱包','江南皮鞋厂倾情打造');
    insert into category values(null,'香烟酒水','黄鹤楼,茅台,二锅头');
    insert into category values(null,'酸奶饼干','娃哈哈,蒙牛酸酸乳');
    insert into category values(null,'馋嘴零食','瓜子花生,八宝粥,辣条');

    select * from category;
    select cname,cdesc from category;

    --所有商品
    1.商品ID
    2.商品名称
    3.商品的价格
    4.生产日期
    5.商品分类ID

    商品和商品分类 : 所属关系
    create table product(
        pid int primary key auto_increment,
          pname varchar(10),
          price double,
          pdate timestamp,
          cno int
    );

    insert into product values(null,'小米mix4',998,null,1);
    insert into product values(null,'锤子',2888,null,1);
    insert into product values(null,'阿迪王',99,null,2);
    insert into product values(null,'老村长',88,null,3);
    insert into product values(null,'劲酒',35,null,3);
    insert into product values(null,'小熊饼干',1,null,4);
    insert into product values(null,'卫龙辣条',1,null,5);
    insert into product values(null,'旺旺大饼',1,null,5);

    //插入数据会失败
    insert into product values(null,'副表',1,null,12);

    ```

    #### 技术分析:

    - 多表之间的关系如何来维护

      外键约束: foreign key

      - 给product中的这个cno 添加一个外键约束

        alter table product add foreign key(cno)  references  category(cid);

      - 自己挖坑

      - 从分类表中,删除分类为5信息,

        - delete from category where cid =5;  //删除失败
        - 首先得去product表, 删除所有分类ID=5的所有商品

    - 建数据库原则:

      - 通常情况下,一个项目/应用建一个数据库


    - 多表之间的建表原则

      - 一对多 : 商品和分类

        - 建表原则: 在多的一方添加一个外键,指向一的一方的主键

          ​

      - 多对多: 老师和学生, 学生和课程

        建表原则: 建立一张中间表,将多对多的关系,拆分成一对多的关系,中间表至少要有两个外键,分别指向原来的那两张表

        ​

      - 一对一: 班级和班长, 公民和身份证, 国家和国旗

        - 建表原则:  

          - 将一对一的情况,当作是一对多情况处理,在任意一张表添加一个外键,并且这个外键要唯一,指向另外一张表
          - 直接将两张表合并成一张表
          - 将两张表的主键建立起连接,让两张表里面主键相等

        - 实际用途: 用的不是很多.    (拆表操作  )

          - 相亲网站: 
            - 个人信息 : 姓名,性别,年龄,身高,体重,三围,兴趣爱好,(年收入,  特长,学历, 职业, 择偶目标,要求)
            - 拆表操作 : 将个人的常用信息和不常用信息,减少表的臃肿, 

    展开全文
  • 数据库表的关系

    2010-12-16 13:23:03
    关系(一对一,一对多,多对多) 收藏 可以在数据库图表中的表之间创建关系,以显示一个表中列与另一个表中列是如何相链接。 在一个关系数据库中,利用关系可以避免多余数据。例如,如果设计一个可以跟踪...
  • mysql数据库中,表与表之间进行关联之后,就不可随意的进行删除操作,否则会影响所有关联表之间的结构,那么如何安全的删除关联表呢,让我们来了解一下。推荐课程:MySQL教程。1. 删除表的外键约束外键是一个特殊...
  • 展开全部创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只e69da5e887aa62616964757a686964616f31333365653739有主键没有外键时不行的。建外键的前提是此外键必须是另外一个表的...
  • 内容总述:1.... SQL基本语法-------------------------------------------------------------------------------------------数据库(database, DB):存放数据关系数据库:多张表+各表之间的关系...
  • 如何确认表与表之间的关系是 (一对多、多对多、一对一)注意:总结:外键: 语法:创建两张表关联表:插入数据:报错插入更新数据或删除数据先删除已关联的dep_id字段,才能修改dep表中的关联id字段。删除: 先删除关联表...
  • 表和表之间,一般就是三种关系:一对一,一对多,多对多 1、一对一:数据库表中数据结构,我们用人与车一 一对应方式来描述一对一数据表结构,type是区分这条数据是人还是车,master对应是主人(车主人是...
  • 内容总述:1.... SQL基本语法-------------------------------------------------------------------------------------------数据库(database, DB):存放数据关系数据库:多张表+各表之间的关系...
  •  因为在实际的项目开发中,如果系统的数据存储量较大,设计的表比较多,表和表之间的关系比较复杂,需要首先考虑规范的数据库设计,然后进行具体的创建库,创建表的工作,不管是创建动态网站,还是创建桌面窗口的...
  • 一、简介 Javaweb中开发中必然会有多个javabean对象,而对象之间必然会存在的关系。那么对象之间的关系在关系型数据库中,如MySql、Oracle、SqlServer数据库中是...二、Java对象关系与数据库表之间的关系映射 从实...
  • 如何实现两个数据库之间的同步

    万次阅读 2013-11-15 11:33:50
    两台服务器分别架在两个不同的机房,要实现所有中数据的同步,延时一两分钟没关系数据库数据量很大,大概有不到一百个吧,怎么实现同步? 不同服务器数据库之间的数据操作 --创建链接服务器 execsp_...
  • 首先是确定多层结构,基于事件驱动,规划DAO层,Service层。 并且在开发过程中,演示重构并解释重构理由和好处。接着是开发顺序。...1. 数据库表的创建  2. 表关系  3. 约束  一条记录数据,只...
  • SQL 会创建多表及多表的关系 需求: 分类表和商品表之间是不是有关系? 如果有关系,在数据库如何表示这种关系 create table category( cid int primary key auto_increment, cname varchar(10), cdesc varchar(31...
  • 有人会对数据库有这样的疑问:因为大多数的数据库教程上都是告诉你关系数据库如何创建1:1、1:N和N:M的数据库关系,但我发现很多开源产品中,并没有直接使用关系数据库的关系查询、关系删除等功能,而是直接在...
  • 实体类需要标注@Entity 表示实体类 @Table(name = “t_tag”) 表示生成...如何表示对象之间的联系呢? 例如博客与博客分类是之间是 多对一的关系 1).需要在博客类中添加 @ManyToOne() private Type type; 2).需要...
  • 见名知意,java databases connection java 虚拟机与数据库之间的连接,需要通过Statement接口来实现 3.程序员只需要面向通用的JDBC接口调用方法即可完成数据的增删改查,而不需要关系底层具体的...
  • LINQ to SQL 中实体类之间的关联类似于数据库表之间的关系。可以使用“关联编辑器”对话框创建实体类之间的关联。 使用“关联编辑器”对话框创建关联1、必须选择父类和子类。父类是包含主键的实体类;子类是包含...
  • 在课堂上,我们都是“学习”数据库...我已经设法创建数据库和表,但现在我如何在两个表之间建立关系?如果我有我两个表这样:CREATE TABLE accounts(account_id INT NOT NULL AUTO_INCREMENT,customer_id INT( 4 )...
  • SQL会创建多表及多表的关系 需求: 分类表和商品表之间是不是有... 多表之间的关系如何来维护 外键约束:foreign key 给product中的这个cno添加一个外键约束 alter table product add foreign key(cno) refer...
  • 代码如下 --订单明细 create table SALE_ORDER_LINE( ODL_ID NUMBER(10) PRIMARY KEY, --PK ODL_ORDER_ID NVARCHAR2(10), --FK ODL_PRODUCT_NAME NVARCHAR2(100...两个不同名称如何创建主外键关系????
  • 有人会对数据库有这样的疑问:因为大多数的数据库教程上都是告诉你关系数据库如何创建1:1、1:N和N:M的数据库关系,但我发现很多开源产品中,并没有直接使用关系数据库的关系查询、关系删除等功能,而是直接在...
  • 1.3 实体之间的关系 20 1.3.1 二元关系 21 1.3.2 非二元关系 24 1.4 数据访问语言(SQL) 24 1.5 理解依赖性 25 1.5.1 函数依赖性 26 1.5.2 判定 26 1.6 总结 27 第2章 数据建模语言 28 2.1 数据建模介绍 ...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 324
精华内容 129
关键字:

数据库如何创建表之间的关系