基础表的链路可以从A推到B推到C推到D吗?

AivorAivor · 2022-03-08 13:51
我的数据如下: 1)     Table 1- 工程师(Staff Code,所在城市、专业) 2)     Table 2 – 派单安排表(Booking ID, Staff Code, Buyer Code,什么时候把工程师派去哪个销售单) 3)     Table 3 – 销售单(Booking ID, Staff Code, Buyer Code客户要求在何时何地做哪些专业审核) 4)     Table 4 – 审核数据(Booking ID, Report ID,工程师完成某销售单审核后填写的报告,含审核结果,不合格项) 5)     Table 5 – 发票(Report ID, Invoice ID,销售单开出的发票数据) 6)     Table 6– 服务类型(例如防恐、碳排放、环保等专业) 7)     Table 7 – 城市(按国家行政区划分)   问题 每个表格的列都不与其他表的重复,只保存关键字列和独有数据列。拉个Matrix,以table 1的工程师作为列,关联不到table 3,table 4的数据。 在manage relationship的时候,Table 1,Table 3不可以同时对Table 6, 7保持active。只能有一方inactive。为何?
1 个回答
never
never

表1和表2、表3的关联是 Staff Code,表1和表4没直接关联,那就得通过中间量。比如表1使用Staff Code通过表2查询出Staff Code从而再查到表4.

我这里说下,在国内,学数据库的人只学会怎么用sql处理数据库,他们并不知道数据库到底是怎么工作的。

所谓查表其实就是寻址。数据库是一个文件,数据库里面的表格就是按照大小规则存储在数据库这个文件中的一个模块或者说段落。所谓的关联其实就是通过hash值缓冲以及树(B树,黑白树,平衡二叉树等)来查找数据所在的地址,然后根据大小来读出数据。你说表1表3和表6表7的关系。数据库程序里,在选址过程,需要根据特征查找出表1的数据,如果一次查找能把所需要的数据,比如查找表1时,把表6表7的数据也快速查找出来,那就需要某种特征值,比如共同hash值。你说Table 1,Table 3不可以同时对Table 6, 7保持active。这明显是错误的,数据库使用内存缓冲来加快寻址速度,在没有共同hash值的情况下,由于临时缓冲有限,比如会出现覆盖的情况。这时候只需要增加缓冲数量就可以了。

赞同
反对
评论
收藏
2022-09-20 10:32