00:00
开始上课,那下边我们来看这个外建这个字段,外键也是我们这个设计数据库的这个很重要的一块一个方面设计外键,包括以后我们写程序的时候,操作表的时候,外键也是经常操作一个字段,仅次于主键,知道吧,那现在我问你了,外键是干嘛的?为什么要设计外键?沟通。其他的表。对,给他记住么?主键是唯一确定,用来唯一确定一个表中的某一条记录的主键是用来确定什么主键用来,那么用来确定表和表之间的关关联关系的,所以用来确定表和表之间的关系的,那么让这个外键是用来啊,用来用来确定表和表之间的关系的关系,我们说在一个项目里边有好多张表。咱们这个地方就做了十几张表,在实际开发有可能几十张甚至上百张表,那么这些表和表之间有可能有关系,它不是孤立存在的,知道吧?啊,那他们为什么有关系?因为表里边存在是现实世界数据,现实世界的数据就是什么有关系的,现实世界就是一个什么互相关联,互相联系的一个世界,知道吗?其实这你要是详细的说一说大纲,把你以前学的那些学的,上学的时候学的那些知识全都是么?全都不是白学的是么?这又说到咱们以前学的那个什么哲学了是么?就说什么现实世界不是孤立存在的,任何两个事物之间都有什么关系,知道吗?有一个是互相关联的一个世界,知道吗?
01:40
所以我们这样反映到软件里边也是一样,那么数据和数据之间也有关系,那么要放到数据,放到表,表和表之间也有关系,那这时我们说的这那表和表之间的关系怎么来表示在数据库里边是吧?就用外键字段来什么来表示这种关系,知道吗?那不同的关系设计不同的外键。
02:02
用外键来表示这种关联关系。这是我们说的这种外键字段,那现在我们说要,那大家要了解有哪些一个表中有哪些外键字段,需要设计哪些字段,哪些外键字段以后我要操作哪些外键字段,那这个时候你就要什么非常清楚在你开发项目的时候做的这些功能当中所牵涉到这张这这么多的表,这些表和表之间有哪些关系。那不同的关系,那就添加不同的外键,创建不同的外键以后你要操作不同的外键,知道吗?所以那现在我问你了,表和表之间有哪些关系,表和表之间都有什么关系啊。对那三种三种关系是吧,一对多一对一,还有什么多对多对,这都是大家以前学过的是吧,那有什么一个一个来看,首先一对多这是最基础的,最基本的一个关系叫一对多这种关系啊,一对多这种关系是什么样的关系,四四多的表对四段多多的表加个外键引用一到一段主键是不是这样吧?哎,但这种关系,但你怎么知道它是一个一对多的关系呢?
03:14
两张表,假如给你两张表,你怎么知道他俩是个一对多呢?一对多的关系概念定义是什么?怎么定义的?在一个院里。对一个表中的一条记录对应另一个表中的什么多条记录啊,那反过来另一表,另一张表中的一条记录只能对应什么?对这个表中的一条记录,这叫意味多是吧?就是我们知一张表一张表我们把它叫A表吧,A表一张表中的一条记录啊,一条记录对应什么?另一张表,另一张表我们把它叫做B表是什么叫B表让中的多条记录是吗?那么就是可以对应是吗?
04:05
多条记录,然后呢,然后呢,我们这那么另一张表,另一张表我们还是这个B表是吧,中的一条记录,好吧,只能对应啊对一张表,我们这个是叫A表啊中的一条记录,第一条记录啊,这个时候我们把这两张表叫做一倍多的完节,一倍多,那谁是一谁是多。谁是一啊?对,他是一是吧,他是一,他是多,他是一,他是多,知道吗?这是我们这知道吧,那我们知道吧,它是一,它是多,一般来讲我们也有这名词,一的一段一般叫什么?对,叫附表,是附表,被引用的表,然后呢,多的一段叫什么子表,什么叫子表,知道吗?那我们最典型的什么一对多的关系,我们每次教学的时候,不管说的,不管在哪个地方说的一对多关系,一般都是这个例子是吧?哪两个例子,学生表还有什么?对,对班级表是吧?
05:21
啊,班级表他俩是个最典型的一对多的关系啊,然后呢,这个地方来一个ID,班级有班级的名字,就这吧。那他俩怎么一对多了啊,对得倒过来写是吧,对这个是吗?一个班级。对,对应多个学生,可以有多个学生,那一个学生呢,对,只能属于一个班级,所以这就是典型的一对多这种关级,知道吧,你比如说大概我们来一个,来一个学生1001,来一个张三是吧,然后呢,再来一个学生1002李四是吧,然后呢,这个地方来一个班级1111,然后呢,班级来一个班级一,然后呢,这个地方来一个222是吧,然后呢,这个地方来一个,再来一个班级啊班级二是吧,那这个时候它俩就有一对多的关系,那一对多关系我们要在数据库里边表示,这种关系应该怎么表示呢?对,在多的一端是不是加外键呀?对,这是我们以前给大家讲过的,引用一的一端主线。
06:25
那多的一端谁是多的一端对学生,那在那边加个外键,加个外键引用一的预算主任,引用班级的组建,班级的主建class ID道吧,因为我们在数据库里边命名的时候,如果单多个单词的话,多个单词用下文线隔开知道吧,然后呢,Class ID啊,你比如说的话,我们在这个地方来表示,你比如说张三属于班级一等,那就什么啊。对611,然后呢,假如说李四也是属于班级一的。那也是幺幺知道吗?这是我们说的,你要来个王五1003属于班级二的,那叫什么二知道吗?所以这样的话就能表示这种管理关联关系,知道吗?所以这时候我们说要知道那有老师你这样设计了怎么了,设计了这么设计的话,那么将来就影响到我们的编程了。
07:20
怎么引导编程,你比如说他我要添加数据时,添加数据时就假如我要往数据库表里边存数据了啊,添加数据时假如我要添加一个学生,那这个学生属于哪个班级的?假如,假如属于属于班级一的,假如我,我添加全称叫赵61004,假如赵六他属于班级一的,那有111。知道吧,那我能不能这样说,赵六属于班级三的,我能,我知道能不能添加,对添加不了,为什么对,班级三压根就没有是吧,在附表当中是吧,压根就不存在相应的记录。
08:01
所以说他刚我们说添加数据时,往子表里边添加数据的时候,必须得保证它引用的附表中的某一条记录,必须先添加上才能添加图表,是不是这样吗?所以添加数据是先添加懂么?先添加附表记录附表。附表中被引用的记录,然后呢先添加上,然后呢再添加子表记录。子表记录知道吧,啊,那如果删除数据呢,删除数据呢,假如我想删除班级二。能不能直接就把班级二删了,不行,为什么?对先删子表这边先把王五删掉,班级二下边的学生都清空了,再把班级二删了,要不然的话,那这个学生属于哪个班级呢?所以不知道啊,所以我们这个地方知道吗?先删是吗?
09:00
先删啊,先删除子表记录,子表记录,然后呢,再删除什么父表记录啊,这个东西删除父表记录知道吧?啊,那查询数据呢,查询数据时知查询数据的时候,那这个时候可能会进行关联查询,就可能会进行关联查询,因为这两个表有关系啊。啊,我什么时候进行关联查询,就说你牵扯到字段一个serve入用牵扯到字段在要跨两张表,一个表里边没有这些字段要跨表了,这个候有可能会关联查询什么怎么叫关联,你比如大现在我想着你给我写个操数据,写个查询操数,你给我这么写这个操误,就给我完成这件事,你给我查询所有班级里边。所有姓张的学生ID name和所在班级的name,你给我写个骚,就给我把这三个字段给我查出来。
10:00
来查询查询是查询所有姓张的学生啊,姓张的学生的ID name和所在班级name写这个sorry,你怎么给我写。对,那我们来写造数句吧,查询的造数据select的,我就简单给大家写一下,因为这种造数句大家以后开发的时候经常要写到select,查询的select from从哪个表里边抄,查询学生的ID内容,那学生表是主表。最终落到学生,那学生表示,主角知道吧。那查询他的哪一组需又说的很明白了,查询他的name ID和内,那就直接查了ID name所在班级的name呢?这个表里边儿有所在班级的内幕吗?没有没有什么,哪个表里边有班对班级表,班级表里有,你现在能不能直接用啊,不能得连接上班级表才能用。
11:05
那就叫连接班级表,那连接班级表那这个时候只要是连接查询,我们以前都学过内连接和外连接是,那到底用内连接还是外连接呢。对,你得你得清楚,你要如果不清楚,你这王亚不不知道怎么写了。那这个地方用内连接外连接呢。嗯,那你得知道内连接和外连接有什么不一样是吧,那沈阳中内连接是什么意思。对等值点就叫什么,把所有什么查询的时候,把所有符合条件的数据都查出来是不是,然后呢,要求这个结果在两张表中。是不是都有相对应的记录,这种符合条件记录才能查出来,是不是这样的,这是这是这是什么?内连接,把所有符合条件的数据都查出来,并且要求在两张表中都有相对应的记录,这叫内连接,知道吧,这是我们说这是内连接,内连接啊,这是内链接,那内链接然后查询所有符合条件的数据,条件的数据,然后呢,并且要求。
12:25
并且要求,然后呢,结果在两张表中有两张连接的,两张表中啊,不但要符合条件,都有相对应的记录啊,这样的话,这叫内连接内那外连接呢。对,指定一个主表就这啊连接啊,来一个这样啊外连接。
13:00
外连接是吧,它是查询账篷外连接分为左外和右外,是不是这吧,那我们就以左外为例了,假如主表在左边,假如主表在左边,那就查询,我们就以左外连接为例了,右外连接是一样的,一样的道理,我就以左外为例了,左外连接为例就查询,那么所有啊符合啊查询这样吗?左侧表中叫连接的时候,左侧表中所有对符合条件的数据啊啊。啊,左侧只要是左边表中符合条件就行,然后呢,在右侧表中不即使没有相对应的记录,是不是也可以也要查出来,对吧?然后呢,那即使是吧,即使啊,即使在右侧表中没有相对应的记录,记录也要查出来,这就左外是不是这子是吧?右外是不是正好相反啊,把右侧表中所有符合条件记录都查出来,哪怕在左侧表中没有相对应的就也要查出来,是不是啊对,有的数据库还有全连接是吧?全外连接什么意思?
14:17
把两张表中所有符合条件数据都查出来,哪怕在两张表在什么,只要有一个表符合条件,另个表中没有相对应的记录,也都能查出来。知这是我们全外连接,知就全外连接,这是左外,右外和全外,这这是我们说的,这咱们就以左外为例了,知道吗?好,这是我们说的这样,那大家我们知道左这么内连接和外连接的区别了,那我这个地方是用左外连接还是右外连接呢?对,那你吗,都行不行是吧,都行你得是吗?根据根据什么来判断,根据什么来判断,用什么链接。
15:04
对根据你,对根据你需要的数据是吧,你想要查的数据是不知道吗?知道,那我们现在它是它是什么,它是主表表表是主表,假如我们让他去连接客这个班级这个表格,那他在组格,假如说啊假如说。我想把所有姓张的学生都查出来,哪怕这个学生刚来还没有分配班级的,只要姓张我也查出来的,这个时候用内连接和外连接,对外连接,左外连接是不是这样的,对,那假如说我想什么,假如我想这个把所有姓张的学生。都查出来,然后但是我得要求姓张的学生必须有所在的班级,这样我才查出来,没有班级即使姓张我也不查出来,这个用什么变连接是不是这样的就就章了,那这个时候就看你查询的这个结果是吗?就查询结果,那你说老师我怎么知道。
16:06
我怎么知道这个表里边儿有没有姓张的学生,刚一来没有给他分配班级,也就是说他这个没有分配班级什么意思?是不是这个这个是是个空的,对这个外键是空的,这个时候没有给他分配关系,没有分配关系知道吗?那你说我怎么知道。有没有人这个这个班级,可班级有没有姓张的学生没有班级呢?我怎么能知道啊,姓张,有一个姓张的学生没有,还没给他分班级的,我怎么知道有没有呢?这个时候呢,我们只要,我们只需要看谁啊。是不是只需要看这个外键就行了,看外键假如说大家我举个例子,假如说这个外键压根儿就不能为空。什么意思?就是说你添加一个学生的,必须指定班级,如果不指定班级,这个学生就加不上。
17:03
就如果外降为空。这个时候用内连接还是外连接?就如如果外如果如果外加不可以为空内连接,还是外连接对内连接吧。也就是说,所有的学生肯定有相对应的班级,在另个表中一定有相对应的记录,是不是这样吗?对,这是我们内里,如果外建不可为空,那如果外键可以为空呢?那就。以你查那个表为主。对,那就看你要哪个要要哪些数据了,是不知道总如果说外建可以为空,就可能为空,那你就要什么,就看你查的数据是不是要查那些所有符合条件的没有班级的学生是不是要查出来,如果要查出来那叫什么?外连接是不是呢?那如果说即使外键可以为空,我要求查到数据在另个转中必须有相对应的记录,那这个时候即使外键可以为空,是不是还得用什么?
18:06
对,是不是用内连接,内连接就这意思,大家明白这意思不就长,所以呢,我们这个地方可以总结一下,将来我们到底用内链接还是外链接,看什么?对,看外键是否为空,这时我们总结一句话,以后大你再也不用想用外键还是用外连接还是内连接了,就记住这句话就行了,哪一句话就如果啊,如果这个外键啊,外键,如果外剑不可以为空,不能为空。就像我们我们确定的就是它是主表了是吧,如果外键不能为空,那这个时候查的时候什么,其实大家看这个时候用什么。是是不是内连接,对用内连接,其实上用外连接可不可以。对,也可以,只不过内连接和外连接查询的结果是不是一样的一样,这个时候用内连接是不是用内连接效率更高一些?
19:06
大家能理解这意思吧,对,这个时候优先使用内链接。优先使用内容,就如果外加不能为空,把所有符合条件数据查出来的时候,一定在另一个表上有条对应接入,那这个时候优先使用内连接,就如果外键可以为空,那这个时候用内敛交管连接。对,看情况,看情况。是吧,那是第一种情况是什么?就如果我需要查询那些什么,查询那些查询的记录,要求在列个表,表中必须有相对应的记录,这个是用什么?内链接对,如果外径为空。假如,假如。
20:01
徐有宝。假如只需要装。是需要查询那些在另一张表中,表中有相对应的记录啊。记录这个时候什么使用内连接连接,然后呢,这个时候如果假如是吗?假如是吗?啊。假如啊,需要查询什么啊,怎么左侧,当然我们这个前提是主表在左边啊,我们这个前提就这需要查询左边啊,左侧这个人表中所有符合条件的条件的记录啊,那这个时候使用使用外连接,我们就左外连接了,使用左外连接。
21:15
好,所以大家内连接外连接,其实大家以后是吧,想的时候你不用你不用临时想了。你只需要记住这句话,就看外剑可不有空就行了。这时候我们说到这样,那这个地方呢,我们现在有这一句话了,看内连接外连接这个地方对,那你就看这个班级可不为空了,那班级可不为空,谁来设计的,这当项目经理肯定他来设计的。那项目经理怎么设计?项目经理肯定根据需求来设计,假如说需求允许,刚转过来一个学生,还没有分配班级的,允许这种记录存在,那他就可以为空,假如不允许这种记录存在,那就是什么?那就那这个不不为空知道吗?那假如我这个地方,假如我这个地方,前提是我这个地方来一个假如说假如假如,然后呢,这个地方外键不可以为空。
22:08
那也就是说,不允许这种记录存在。刚转过来学生必须得分配班级才能转过来。如果是这种需求的话,这个地方外键不会为攻,那是不是优先用内连接啊,内连接怎么连啊?教问谁啊,Class这个叫是吗?那就起上别名了,这个假如起个别名叫S空格,这个地方来个C。然后呢,这个连接条件啊,怎么连啊,对s.class ID等于谁啊?C点叫什么ID是不是这样的?对它的外键引用它的主线,那这个地方查询字段,那这个地方得带上别名了,S那这个地方查谁啊?对C点内诶这个地方就有问题了,有啥问题你看看这俩查询字段都叫内,你看我。
23:01
那么将来万一你用买把子的接收,到时候,嗯,这个将来复制给实体类属性,付给实体类的属性,你复实体类只有一个内幕属性,他一个学生的名字,一个班级的名字,你付给那个属性的时候,把谁付过去?咋办?是不是起别名啊?怎么起别名?爱子他叫什么叫什么无所谓了,那叫什么?假如我这个地方就叫克拉那边。那么将来如果用买巴子接收的时候,是不是可以在那个实体类里边加上这么一个属性啊,这样就接收到了,好这样的话呢,我们这个什么所有字段需要的字段都查出来了,连接字段查询的是名字,那下边查询条件Y根据什么查。对,根据姓名对S的那模糊查询是吧?对,给你名字一般都模糊姓张的学生叫什么。对,张然呢,摆分号是不是这样的好,这样的话咱们这个骚帚就行了啊。所以大家看单表增产改查都好办,主要是多表的时候,你一旦确定到表格表,这关系以后你写代码。
24:08
基本上就受限制了,知道吧。但是这些字数句大家必须写到很熟练的,必须写熟,因为我们以后天天在写这些字数句,知道吧,好,这是我们说的这个,关于这个一对多这种关系,我们就给他说到这儿,那么好,下面来看这种关系就是一对多,然后呢,继续来这个下边第二个一对一。一对一,那一对一这种关系,当我们首先来明确它的什么这种关系的概念是吧?到底什么样子的一对一的关系叫什么?对,一张表中一条记录。对,只能对应是吧,只能对应啊。对另一张表中的一条记录是不是这样的?对一条记录是吧?然后另一张表中的一条记录也只能对应这张表中的一条记录,这叫一对一行吗?
25:09
这是一对一,那这种一对一最典型的一个例子,就不管你看什么资料,基本上都是认为哪一个例子,就我刚才给家说这个例子。对,就这个好吗?就这个意思。这个例子你知道吗?公民表和驾照表或者叫护照表都一样,知道吗?就这种关系。就这这是我们啊这样。好。这就一对一对吧,那一对一的话,那我们设计数据库的时候,大纲应该怎么设计呢。就刚才我们给大家说的,这是一种方式叫什么共享主件叫什么共享组件,设计数据库表的时候叫共享主线,可以表示一对一的问题。共享组件叫什么?这两张表的主键值共享的。
26:02
有个先后顺序知道吗?这是我们这,但是这种方式我们我们说了不推荐。就为什么两张表的耦合度太高了,他俩的存在两个表里边字段值都是一样的,这是很危险的,说以后我们维护的时候不太好维护,但这种方式大家简单了解一下就行了。这让我们不太推荐,不不推荐不推荐,但是他这种资料上他有这种方式知道吧,那你说这种方式添加数据修改数据,知道查询数据的时候,那这那这他的操作就太简单了,怎么操作,你们添加数据,添加数据,那添加数据的时候。那我们说他的记录引用他的记录,假如有一个人考了一个驾照,那王里边天天记录找这个驾照主建值的时候,找谁呀就对,就找这一个人的主见值就行,把他的数据查出来,让填一数就行,知道吗?所以那这个地方其实也是先添加什么。
27:01
附表记录再添加什么,这个子表记录是不是这样的,其实他这个附表记录跟子表记录压根儿他俩并不是我们前面说的一对多的那种,引谁引用谁,就它的主键值引用它知道它这个不是外键知道他没见外键约束知道吗?是添加时先添加先产生的表啊,先添加先产生的产生的那表知道吗?知道吗?然后呢,再添加后产生的数据表不要记录就这。好,这是我们说那删除数据的时候,删除数据也是一样,先删除啊后产生的。先先删除后产生的表记录,然后呢,再删除啊先产生。
28:07
这表记录知道吗?这是吗?假如你要删一个是吧,删一个这个添加这个。驾照的时候必须这个这个公民的信息得有,再一个你要删一个公民的,他驾照也经删,知道吗?这是我们说的这然后查询数据时查询数据,那查询数据大家看,其实这个这个查的时候,它就不是按照主外键查了,因为查他直接就是主建了,他俩也没有外建约束,那就是什么呢?那就这样,假如我想让你查询张三的护照信息,或者见张三的驾照信息。假如我让你写个操数句就不不不无需进行无需进行连接查询叫什么,假如我让你查询啊,假查询张三这个人呢,然后呢,驾照信息,那你写个骚手机你给我,你给我查出来。
29:08
那你要查的话,张三查张三的价格,张三的信息你肯定都有了。对张三的信息都要包括张三的主见,那张三主见就是1001,那你就查呗,查张三的驾照的信息,那你就来查select张from,对,查驾照信息。是不是驾照表是主表,那查他的信息,那把里边字段都查出来呗。那查哪一个驾照信息,我根据谁查对根据ID,因为什么,因为你设计的时候就说了共享主见,你有张三的主见了,那你这个地方就把张三的主键值查传到这,这样直接就查出来了,所以他就比较简单了,因为你因为你他的主见值都有了。那他的所有的信,这个记录就已经确定了,他不管有多少信息,主件都有了,就可以直接确定了,它不像以前的外键,外键有确定,他确定不了一条记录,他确定多条记录,那这个地方你就已经有主见值了,所以直接查就行了,知道吧。
30:11
啊,但是不管怎么查,但是这些我们以后开发的时候几乎不会用,几乎但是他理论他的资料上面告诉大家有这种方式,这种方式一几乎不会,因为这是我们不推荐的,所以大家简单了解一下这个地方就行了,那你说老师开发的时候不用这种共享组件的方式,假如我真要有一个一对多的这种关系,我如何设计它。对,还有另外一种设计方式,专门表示这种什么,这种一对一的关系的哪一种方式叫唯一外界,唯一外键,唯一外键什么意思,还是加外键,怎么加外键,还是长,还是加外键,他这种加外键知道吗?
31:01
加外键的方式,那你说它俩是个一对一,那你要加外键在哪个标准加外键随便,理论上来讲在哪个表都行,但是一般来讲我们习惯上在什么对在后边表上面加外键后产生的表,那后产生表哪个表就这个表在它上面加个外键来表示这种一对一的问题一那肯定引入另一个表示主键了,那我们这个加个外键,你比如来个叫波损,然后呢,这个是ID知道吗?你比如说再看我们说,假如说那那那这个地方,那他既然不用共享主件了,那它的这个什么,它这个主键的值,那给他可以不一样了,大家明白这意思吧,就是你往里面添加数据,你不能用它的主键了。知道吗?那你说我就用他主件可不可以。也可以,但是前提是他俩主键生成方式必须是一样的,如果他俩设计主键生成方式都不一样,那你就不能用它主件,如果一样,那你可以用它的主件,但用它的主键你得去查它的主键,填他的记录去查主键是不是很麻烦很麻烦,所以一般来讲,只要不是共享主键,一般来讲两张表的主键值最好不要重,如果重了。
32:14
那我们说有可能会他俩主键生成方式不一样,有可能它的长度和类型都不一样,再一个即使一样,你用另一个表的主键作为这个表的主键的话,你得去查另一个表,所以比较麻烦。所以一般来讲,它有自己的主见值,怎么自己的主见值自己生成知道吗?好,这是我们说的这样,然后呢,大看那这样的话,大家这两张表,假如我让你给你说一个驾照,张三考了一个驾照,那就往张三往这个驾照表说驾教记录,家教记录,那驾照有自己的主见,然后呢,这是驾照名字,当然还有驾照别的信息我就不写了,那属于张三是考了一个驾照,那我就证了,对,把张三的ID写到这儿,就表示这个驾照是张三考的,知道吗?这是我们说的这。那你说假如说来一个李四,李四也考了一个驾照,李四也考了一个驾照,那我就可以这么下了,再往这个边,我驾教记录哪一个自己生成一个主见,然后呢,来一个看到二是,然后呢,1002李四也考虑一下,往五考一样全部都是这知道吗。
33:19
所以这时候我们说用外建的这种方式来表示一对一的管理,但你说只用外建可不可以,不可以,这个这就有可能会有问题了,有什么问题?假如来个王五也考了一个驾照,王五也考了一个驾照。那往我往往驾照边的加条记录333对吧,然后呢,这个是他的三对吧,那往里边加记录,假如不小心写了。1001。那我不小心写的,那不小心写的呢,也能按照我们外键的理论也能添,添加进来,为什么也能添加进来,只要外键这个表,这个字段值来自于另一个表的主键,是不是从语法上来讲都不会报错的,都不会报错,也能加上,也能加上就有问题了,有啥问题。
34:12
对啊,一个人考了两个驾照看吗?那这个时候就表示什么,一对多了就成了一对多了,看到吗。所以这个时候就有这种数据不一致的风险,那为了解决这种不一致的风险怎么办呢?对对,在这个加个唯一性约束,唯一性约束,唯一性约束什么意思?就是往这个驾照标准加记录的时候,对这个值,这一个字段的值,所有的记录都不能重复,假如你给张三加加一个驾照。你不小心写了一个1001了,这个时候这个往站里边加记录了,这个代码就给你报异常了,为什么?因为这个地方重复了1001,已经有别人是吗?考过了,大家明白这个意思吧,就是这样,所以说那这个什么一报一抄你就知道哦,写错了,那什么1003。
35:06
这样的话,这个外键永远不可以为空,而且都来自于另一个表的主键,这样的话就表示了一个什么,本来是它中的一条记录。可以对应,如果加上外键,可以对应多的一段的多条记录,但是我一旦加了微性约束,它中的一条记录只能对应什么?它中对另一网一条记录。那同样他中的一条记录呢,也只能对应他中的一条记录,这个是不是就能实现了一对一了?对,这就是一对一的,所以其实一对多大家看从语法,从它这个设计结构上来讲,其实就是一个什么一对对吧,一对一其实就是一个特殊的一对多,只不过在多的一端上面加外键的同时,又多加了一个唯一性约束,它不能重,如果它可以重,那它就多了。它不能同,它就是一,那这边本来就是一,一对一听懂,所以这是我们说的这个地方,它就是一个,其实一对一啊,一对一就是一种特殊的一对多,一对多特殊的一就这了。
36:20
这是我们说到这那特殊的一对多,这边是一,这边是多,就找我,只不过多的一端加了限值,只能是一啊,只能是唯一的,知知道吗?这时候我们要这样,那它是附表,从一对多的角度来讲,它是附表,它是子表,知道吗?那以后我们说这么设计的话,以后写代码,以后写搜狗语句操作他们的时候怎么操作,跟一对多完全一样。先加记录的时候先添加谁先添加这个,一个人考了一个驾照,只能先把这个人呢,在公民表中有这条记录,先添加附表记录,再添加子表记录,删除数据的时候,这个人都删了,他下边的子表的记录也得删。
37:05
查询数据的时候同样也要进行连接查询。连接查询还是这么。有可能进行关联查询。也还是有可能关联上,也有可能内连接外连接,这个外连接,内连接到底用到底用内连接外连接也是符合我们这个规则。所以大纲我们说他的操作,他的操作操作跟一对锅是完全一样,我这个地方搜狗就不给大家写了,以后我们真正用到这块的时候,我们再说那吗?然后呢,操作操作的时候知吗?跟一对多完全一样,完全一样,因为它本来就是特殊的一对多,知道吗。所以这个字我就我就不给大家写了,知道吧,知道这种跟一对多是完全一样。这是我们说的这个一对一,我们就说到这在实际开发的时候,基本上都是一对一啊,基本上都是基本上都是用唯一外建来实现,这种方式几乎不会用啊,这是我们推荐的是吧。
38:08
好,这是一对一,我就给大家说到这对下边来看啊,另一个多对多多对多,那么多对多来看他这个关系到底什么样子的。那就是一张表中的一条记录。可以对应到另一张表中的对多条记录,另一张表中的一条记录,对也可以,什么也可以对应什么,也可以对应一张表中的多条记录,这就是多对勾,这是多对勾啊。对,那你来看看大那是什么意思,那我们来看一看啊,给大家举个最常用的例子是吗?你说你光说这种理论,大家感觉比较空洞,知道吧?对,一落实到表上面你就知道了,最典型的一个表,所有的多最多,不管什么资料,基本上都是这个例子,你不管学到什么时候,只要是多最多哪一个这个。
39:12
学生表是吗?还有一个什么,这一个对选课程表,学生选课表是吗?学生选课表怎么是多的多了一个学生可以选对多门课是吧?一门课呢,可以被多个学生选,这是不是多得多,这就是典型的多得多,看学生内容,然后呢,这个地方课程有课程的ID,课程有课程的名字。你比如说我们举个例子,1001张三,然后呢,这个地方1111,假如一门课加完这个课吧,我们简单写了啊,假如说1002李四,然后呢,再来一个课,随便来了,我就随便写,假如买块户行了。
40:00
那这个时候这两张表是多对多的关系,是一个学生可能选多门课,一个课可能被多个主学生选多对多,那多的多的话,这张表有关系,这种关系怎么设计?那说引用关系,那就加外键吧,把这个外键加到哪儿。那加到哪不知道不知道,随便加一个,假如我把外键加到这个地方,因为外键是表示表和表这关系的。说只要是表格表示关系,你马上想到就外键,那你加外键吧,在这边加个外键,引另一方的主键,那就加吧,课程的阿迪知道吗?加个外键知道吗?那这种关系能不是加这个外键,能不能满足要求呢?那你来看看吧,假如张三选了Java这门课。那你写什么幺幺,是不是这样的,对,这。是吧,那关键是假如说张三也选了买色了。
41:03
你打吧。那有的同学老是这样写。这样行不行?这样是不是不太好啊,其实从理论上来讲也行,但是你以后写代码是不是不好操作了,对写代码不好操作,为什么他俩连接的时候,我将来连接产品我咋连啊?所以不好了,那那那那咋办呢。那你说老师,那你这个外键加到这个地方不好,要张三可以选多门课。那加到这边好,那你要加,把这个外线加到这边就好了,那来加到这边,你看看留头ID张三选了加我,那应该怎么办。1001是吧。张三也选了马口。对1001,诶这样挺好是吧。那关于关键是李四也选了加我的吧。你咋咋咋办,你能不能这样对,这不又又跟刚才一样了是吧,所以大看这个外键加哪都不太好。
42:11
加哪个都不大。所以大家这种关联关系多对多的这关系就不行了,知道吗知道吗。那有老师以前一对多的时候为啥可以一对多为啥可以?多方面看。对一的时候,一假如说一对多,假如他是一对多的时候,那叫什么?一个学生可以选多门课,一个课只能被一个学生选了,是不是就可以啊?关键是一个课可以被多个学生选,如果一个学生一个课只能被一个学生选,这样就行了,这样最好。这就是一对多嘛,关键是他又说了,一个课可以被多个学生选啊。这个时候是什啊,这边加一个外键就不行了,加到哪儿都不行,就一对多,它只能一边是多,现在两边都是多用一个外键就解决不了了,那怎么办呢?那我们以前跟大家讲过,是不是就介入第三张表了,第三用两个外键来表。
43:12
两个外键,这两个外键不加的任何一个表的,然后专门创建一张表,这个表什么也不干,就两个外键,就来表示这种关联关系,哪个你比如说来我们来这个表,然后呢,对still,然后呢,Cos,然后一般来讲我们叫relation是吧,两张表的一个关联关系表,这个表里边啥也不干,最重要的就俩字段,一个是引用一张表的主键,再有一个外径,对引用另一个表的主键,这俩都是,这俩都是外键,这个外键引用它的主键,这个外键引用它的主键。然后呢,再看那这个时候用这两个外键就可以表示关联关系了,怎么表示,你比如说再看我们说张三选了Java这门课,那就什么对1001111。
44:02
就张三也选了买客户,再加一套记录,这又有个关联关系,然后呢。要买草口的叫嗷。李四也选了Java啊,111,李四也选了马骚口啊,这就表示让关联关系。这是我们要说的这。但从这个表结构上面你会看到了哈,其实多对多转换成两半,两半关系你看吧。2万挣一分为二,这边是一个关系,这边是一个关系。什么关系?两个一对对,两个一对多,知道吧,这边来看它是一,选课记录是多,这来看课程是一。选课记录是多啊?就转成两个一对多,其实本质上也是个一对多,只不过是两个一对多结合在一起的,你知道吗,知道吗?所以一对多是我们最最基本的关系,最基础关系。
45:10
所以他的操作基本上也跟一对多几乎完全一样,知道吗?就是更复杂了一点。No。那怎么基本一样了,操作的时候也是一对多是吧,那如果添加数据的时候,假如要添加一个学生。假如,假如要添加一个选课记录的话,那叫什么?这个学生得先存在,是不是知道吗?这边是子标,这边是中国副标。如果添加选课记录,那这个学生必须存在。同样这边呢,课程也必须承担。所以我这个这个是子表,这两个都是附表俩,附表一个子表,添加子表记录两两,学生和选课和课程必须存在,删除记录的时候,不管学生上了还是课程上了,选课记录相对应都必须上了。
46:03
那查询数据有可能进行关联查询,关联查询的时候,这个有可能进行多重关联,什么多重关联。他能够连上他,他也能可能连他,但是他俩不能直接连。所以有可能就有多个连接,知道吗?所以加上复杂,复杂程度就更高了,但是道理是一样的,那连接的时候到底内连接和外连接,看看外键可不为空。但是这个地方给大家强调,这这个表里边这些外键就主要是表示关联关系系统,关联关系表里边外键都不可以为空,永远不有空,所以在这里边查询到基本上都是什么内连接,所以这是我们说到这,所以这个地方跟大家简单说一下,那我们这个地方来个添加数据,是添加数据时,添加数据时先添加,先添加附表记录。附表记录就是你往添加选课记录的时候,往这个表里边添加记录的时候,这两张表里边记录必须存的,必须都已经先添加上了,这俩都是附表啊,然后呢,再添加子表记录,就选课的时候必须学生和课程都得存在,再添加子表记录,知道吧,这种删除数据时,删除数据时不管删除那么学生还是删除课程都必须先什么必须先删除选课记录都得先删了它。
47:34
就是先删除子表记录,子表记录就是它就这个这个子表记录,子表记就好,然后呢再删除。附表记录啊,这俩附表记录就是这两这两张表。这是我们。这是这个多对多对多,然后查询数据时,查询数据时,然后可能,嗯,这个这跟跟我们上面这个写一致吧,这个地方。
48:11
查询数据可能会进行关联查询。可能会进行关联数据,哎,这个地方可能对会进行关联查询上去,你比如说我们给大家举个例子,我想让你给我写个骚扰句,写个骚手机给我写什么呢,我想这。让你给我写一个,所有啊,所有姓张的学生,对。他们的ID内,以及所选课程的。名字啊,查询所有姓张啊,所有姓张的学生的ID name和所选课程的name这个字数句咋写?
49:08
对,先对查询吧,谁从哪个标准谁做主表。呃,谁就查询学生,最终落到学生上面,学生表是主表落到学这是这是Soo语,这这这一句话的主语是谁啊,学对学生,所以学生表示主愿知道吗?是对,这就用到咱们以前学的什么语文的课程了,是吧,就语文课你要学不好的话,做软件也做不好,因为读需求你读不懂,你知道吧,所以我说你从从小到大学的那些上学学的十几年,这个上十几年学都不是白上的是吗?那是白上了,那谁还上学呀,知道吧,所以都是有,这都是都是大家学过的,别忘了是吧,好,那学生表那学生表那查学生,查学生的ID,那就是直接查吧,学生的ID这些字段,学生的名字,然后呢,还有谁啊。
50:11
对所选课程的名字是不是得查,得查课程名称那个字段,课程名称这个字段,这个地方有吗?没有没有谁里边有这个表,这边有这个表里边有,那要去他去连,他能直接连这个表吗?不能,因为他俩压根就没有关系了嘛,那他。去,他不能连这个表,他就连谁要。谁跟他有关系,对,这个表和他有关系。所以说咱们这个表可以去连吗?那这个表给它有关系吗?有,所以先用这个表连它,然后再通过这个表连它。连上之后这个表是不是字段我就可以用了,所以那我就连吧,正好这个地方连,先用学生表起个别名去连关联关系表,连关联关系表内连接外连接,对,因为外键不可为空,内连接叫哪个,然后呢,连我们这个表连抛对这个地方起个边名,我叫SCR懂吗?取这几个英文单词的首字母知吗?连接条件啊,叫S点谁要。
51:24
对,ID等于谁呀?等于SCR点叫啥?对student ID,这样就连上这个表了,连上这个表,这个表里边字段我都可以用了。但我用它的字段,其实我不是查他的字段,我知道用它的字段,我要去说说去,连这个表去。是吧,所以用这个表去连它内连接和外连接,对外键,它这个外键也这个外键也不会空,所以也是内连接,就对连接来连接这个边,给它起个边名叫负连接条件哦,知道吧。对SCR点谁啊,对现在这个连接就它是主表了,它的哪一个字段,对cos ID等于谁啊,对c.ID这样就连上这个表格,连上这个表,这个表格字段我就可以用了。
52:14
那哪一字呢,内没对,所以现在我就可以弄叫C点内是吧,那这个地方又有问题了,对这两个字段是那么哎这个用这个地方给他加上S,因为起上别名了,知道吗?对这俩什么查询字段是什么重名了,那干嘛起别名起成什么对cos那个知道吗。这样我们就可以了,这样我需要的字段都查出来了,那下边查询条件我根据什么去查。根据谁去抄SS子抄对所有是吧,对姓张的,姓张的是不是学生内蒙那个字段对那就谁啊大家知道内蘑菇扎云like,然后呢,这个地方姓张呢,是对这样的话大看我这个字就行了,看吧。
53:08
这种搜索句,大家以后会天天在写这种搜索句就吧,现在咱们就三张表,以后还有可能多张表,可能是五张六张,有可能十几张表,知道吧,这些当然你必须是吧,你把这种理论掌握了,你三张表会。那你五张表也会,十张表也会知道吧,你只要把这种理论掌握了。知道,我讲就理论,理论它就是规则,你知道吗?规则掌握了,不管多少章都好写,知道吗?好,这样的话呢,我们这个多对多也是这这样也可以了,好,这是我们这个关于这个外键字段,一对多,一对一多对多,我们就给他说到这儿是吧,那你说我们这些表里边有没有有没有有没有这种这个关联关系。有,这张表有关系,这些表都有关系,那来看吧,首先来看看大康,我先来问你,这俩表有关系吗?对,有,有啥关系啊?对,一个下拉列表下边可以有多个值,一个值只能属于一个下拉列表,是不是吗?对,谁是一谁是多,对,它是一,它是多,所以在这个表里边有个外键,引用它的主键。
54:22
你说老师你怎么知道,你看一看啊,大康这个这个表你看康啊,这是数据资产类型表,这是他的主见值啊,那我说他怎么不是ID,我以后给大家讲,但他的主线值就是扣的知道吗?然后呢,大家这个表示个什么?就这个子表,子表有一个什么外键,哪一个外键对,就这个引用它的主键看吧,这是个一对多知。以后操作你要注意了,知道吧,除了这张表之外,他还有啊,还有市场活动表和市场活动备注表。也是一个一对多,为啥你看一个市场活动下边可以有什么对好多备注,一个备注只能属于一个市场活动一对多。
55:06
所以在它里边有个外键引用它的主件,那你看是不是啊,市场活动你看啊,这是市场活动这个表它的主件,它的别的字段我就不多说了,来你看啊,它里边有个谁啊。Activity ID引用市场活动的组件,看到吧。好,还有别的,大看这些线索表,线索备注表,对一样吗?客户表,客户备注表。对联系人表、联系人备注表、交易表、交易备注表以及交易的历史表。这是两个一对多,它是一,它是多,它是一,它是多,知道吧,在这两个多的里边都有外键,叫传30ID引用一的就是主键,到时候大家科下自己看知道吗?自己找一找这外键知吗?这都比较好办知吗?啊这个表咱们不做,咱们不多说了,这事我们说一对多的这种关系看。
56:01
这一额外,这我们以后操作的时候要注意了,好这事我们说到这样,大概我们说除了这个一对多之外,大家来看看一对一没有,咱们这表边没有,因为一对一呢,他的条件比较苛刻,一张表上一到就只能对应列人一到九,列人表一到就是只能对这张表上一到对,所以在实际开发的时候比较少,比较少,你做很多项目有可能都遇不到,都遇不到一对一,很少遇到一对一,我们这CF项目压根就没有,知道吗?所以我这个地话不多说了,知道吗?现实世界也比较少。所以我们做项目的比较少,下面我们来看多得多,多得多,多对多的啊,在我们这个CRM项目有多对多的关系,哪个多得多。市场活动这个表给线索这个表他俩是不是多得多,怎么多得多了,我们说市场活动这个表里边数据给市场,给市场部的人做市场营销活动来用。
57:02
他们会规划一些市场营销活动,举办一些营销活动,举办活动干什么,拿到一些公司或个人的联系方式,然后呢,录到这个线索表格。这个他俩就有关系了,有啥关系,你看看一场举办一场活动。能产生多个线索。那一个线索呢。对,可以参加多场制场活动,这是个多的多的关系,看到吗?这是多的多知吧,那多的多的话,这两张表就有,就有一个,那么设计到时候就有什么,就有外景,当然我们说那这些,那你说你怎么知道这些现实世界就是这样的,现实世界就这样,所以大会我们分析出来了,知道吗?所以说大概这俩表有关系,你看道吗?市场活动表和线索表有关系,他俩中间应该还有一个表,我没给大家,刚才没给大家列出来哪个表是这个对activity,然后呢,叫relation这个表,这个叫线索啊,线索和市场活动的关联关系表,知道吧,这表在这个表里边最重要的俩字段,一个是线索的ID,一个市场活动ID。
58:12
哪一个表,当然就这个表,你看找找啊。哪一个表呢?啊。这个看吧,就这个表,这是谁啊,这是线索这个表,然后呢,后边还有一个这个市场活动表,咱们看完了,大家只有这个线索和市场活动关联关系的,他有个可录,外地也是个外键,这一个active ID也是外界。但是它这个地方多了一个自己的主见,因为按照范式的设计原则,每个表必须有主键,其实这个主键咱们以后用不到,有有和没有一样,我们最主要是这俩,外界知道吗?这种多对多的关系知道吗?以后当然你操作的时候,你也要注意好,除了这个多对多,这个表联系人这个表和这个市场活动表也是个多对多。
59:03
为啥多的多,那你看啊,我们说了,不管客户表还是联系人这个表他俩的数据从哪来的,从线索转过来的,是不是这样的,对线索转过来,那这个时候就有问题了,有啥问题,一个市场活动可以产生多个线索,然后呢,一个线索可以参加多个市场活动,那这个联系人是从线索转过来的,一个线索转入成一个联系人。那我们说同样的道理,一个市场活动,那是不是也可以产生多个联系人?对,那一个联系人呢,也可以参加多场市场活动,所以这两张表也是个多对的关系。叫联系人和市场活动关联关系表,哪一个表,咱看就这个表,咱们这里边儿也有。联系人和这是联系人那个表看吗?对康泰斯知来一个这个看吗?联系人市场活动管理表,这是联系人的ID,这是市场活动的ID,当然他有自己的主见。这是我们说的这,这也是联系人和市场活动管理关系表来一个开部件来一个叫联系人叫唐太斯。
60:08
然后呢,市场活动艾关联关系表,教堂叫联系人和市场活动。关联关系病知道吧。这张表,这是我们这几张表了。之前十几张安装。对,又加了两张是吧,就这些表,就咱们就做这几个功能,还十几将近20张表呢,你看吧,以后你真正做项目的时候,可能上百张表,其实很正常啊,咱们就做这几个功能,就这么多表啊。好,这是我们说的这个,这里边儿这个多对多的这关系是吧。好,这是。这是我们这这个这些关系,好了,这些关系呢,我们就给大家分析到这儿啊,这是我们通过外键这个字段,这外键这个字段,当然一对多的关系,除了这些字段外键之外,还有别的外键,以后我们再说啊,以后我们再说,这是最基础的啊,这最基础的好这个外键这个字我们就说到这儿,下面我们来继续来看一看。
61:17
这是外键,然后呢,这个地方记住了,这是外键字段,下边还有第三个,第三个在数据库啊,在数据库设计数据库表的时候,还有一个字段比较比较特殊的,我也给大家说一下哪一个关于日期,关于日期和时间的字段。对,关于日期和时间组,它比较特殊,怎么特殊了?当然我们说不管在任何开发技术里边,日期和时间都比较特殊的,为什么特殊?因为日期和时间都有格式的。都有年月日、十分秒这些格式的,知道吧?所以大家任何开发语言里边都有定义相应的数据类型来表示日期和时间知吗?在Java里边定义定义日期和时间类型用什么用用什么类型的数据来定义了,对data知道吗?那在MYSQ这种数据库里边呢?
62:16
对叫什么对有data还有什么,有time还有什么,就他那个在数据库里边,它叫这个data,叫这个他他他没没有什么,数据库里边没有这个什么,这个拖峰命令,还有一个叫什么叫data time啊在数据库里边就是data塔表示什么,只有年月日的是吧?这个呢,对只有十分秒的,这个呢,对既有年月日又有十分秒的是吧?它定义这这三这三种类型是吗?在数据库里边就这样,但是这个时候呢,咱们对咱们程序员开发的时候就有问题了,有啥问题,我们Java里边处理好的日期时间是不是都放到这种类型的变量里边了。
63:00
对,都放到这种例子里边,那我如果把我处理好日期时间存到数据库里边咋办呢?那你得什么对,你得把你Java的日期类型转成什么对,MYSQ里边的这些类型的字段,字段性的这种数据。转成这种数据才能插入进来,这是添加数据的时候,查询数据的时候呢,得把他们这种MYQ这种数据库里边这些日期或时间类型的数据转换成Java类类型的这种这种什么data类型的变量,然后呢才能查出来。这个时候是你得来回的转,这怎么来回的转,那说因为什么Java里边日期和时间,日期类型和时间类型的数据和MYSQ中的日期和时间类型的数据他们是不兼容的。因为他们这也很好理解,因为不同的,这是开发商开发的嘛,他们日期时间底层怎么实现的,谁也不知道,谁也不知道谁,这都是他们的商业机密是吧,那这个时候把Java的日期或者时间插入到数据库里边,得转换成日期和时间。
64:04
怎么转?咱们以前学买巴的时候,会学过一系列一系列转的函数,能够把Java中的日记和实间转成数据库里边日记和时间,同样查询的时候能把数据库里边这一个实间转成Java里边这一个实间,知道吗?这是我们说的这样吧,那转的话大家会转吗?对,那你们以前往数据库里边添加data类型的数据的时候,咋添加了。加没没没添加过是吧?对,那你在开发的时候,你不能说没添加过是吧,那在开的时候,那你说怎么转吧,这我也忘了怎么转,就别说你们不会是吧,我其实我也忘了,他能转,你一查你就知道了是吧,那你说老师你咋也不会,因为我没我也没用过说靠人就说那为什么没用过,那你要是你以前开发的时日期和时家咋咋办咋办?对,写个字符串就以字符串的形式来处理,所以开发的成员没那么少,来回转,来回转,谁那么傻来都是什么,所有开发的时候日期和时间全部转成字符串,用字符串的形式来表示日期和时间,咱们不这种不定成date知道吗?所以你在数据你在Java里边处理好了日期时间,就是就一个字符串,直接存到什么数据库的相应的字符串字段里边就行了。
65:23
这样我们就可以了,所以我们这个地方是什么,就这样,日一和时间全部通统定义成字符串啊,啊都什么都定义成这样的,都按照什么,都按照什么字符串来处理处理,所以在Java里边全部都定义字符串,那在Java里边,假如说不是在数据库里边的,假如说设计一个表,表里边有日期和时间类型的,不要定义成data data time或者什么time这种类型的,直接定义成字符串,而且都是什么定成字符串,定长字符串。定常就知道多少位,那你看你的数据了,如果只有年月日,那就定义成多少位的,对一般来讲,我们这种日期,咱们统一都是这种格式了,对这种中国人就喜欢这种格式,喜欢这种格式,这种这是多少位啊,多少位啊,数一数十位,十位只有日期的这是。
66:20
那如果带十分秒的呢?带十分秒的就这种,对这种格式这种多少位啊对19位知道吧,是19位知道吧,对,所以大家你会看到咱们这个数据库里边所有的日一和时间带十分秒的定长19位,不带十分秒的定长十位都是这么来做啊,那这么来做的好处就是说以后Java和数据库之间进行数据是么?传输的时候不用考虑类型的转换了,知道吗?那你老师Java里边的字符串跟数据库里边的字符串是不是兼容的,兼容的知道吧,在什么在开va语言里边,不管什么开发技术,字符串都是统一的啊,都是互相兼容的,不管什么数据,不管什么开发技术,所以我们都以字符串来出,所以这是我们说的这个,关于这种数据库的设计,我们就给大家说这几个吧,就是这几个比较重要的字段。
67:23
啊,这三个比较注重别的字段,还有很多别的字段,你看吧,这是别的字,别的字段都是跟业务相关的字段,我就不多说了。啊,那你说这些字段有哪些,到时候我们有开发的时候,表单里边有哪些字段,这里边儿就有哪些。啊,表单里边有哪些数据输入,然后这里边就有哪些字段,都是从需求里边找出来吧,好,这是我们关于我们这个数据库的这个物,这个物理模型设计,我今天又给大家,因为我们这个阶段时间稍微多一点,所以我这个地方给大家多说一些,谢谢。数据库,关于数据库的操作,因为数据库对大家以后的开发太重要了,因为你以后天天写代码,其实说白了就是操作数据库就操作表了,如果没有表谁写写代码干嘛?知道吧,所以其实就是操作表对表的增长检查,那你每每次做一个功能,你必须了解这些表是这些表,如果不知道的话,写代码没法写了,虽然不让你设计。
68:22
但是项目经理事中你要操作。所以应该说比让你设计甚至要求还高呢,别人设计的,你得知道他为什么这么设计。然后这样的话,你以后操作你才好,你知道吗?你才能操作好它,否则你连表你都不知道,你没你没法操作好它知道吧。好,这是我们这个关于这个物理模型设计呢,我们就给大家说到这儿啊,这。
我来说两句