当前位置: 首页 > 面试题库 >

如何根据事件关联3个表

陈坚
2023-03-14
问题内容

我有一个表格,其中包含有关 民事和劳工* 两类人员可以完成的不同类型事件的信息 *

所以对于他们每个人,我都有各自的表格

civil{  civil_id, name, age,telephone...} the  primary key is civil_id

worker{ worker_id, name, duty, department...} the  primary key is worker_id

然后事件表会列出所有可能的事件

event {type_of_event} the  primary key is type_of_event

然后我打算将信息存储在其他表中

具有eventype的人,从事这项工作的人(工人或公民)

id  event_type       date      person
-----------------------------------
1   type1         12-12-12     x 
2   type1         05-12-10     y
3   type2         02-12-12     y

现在在这个设计中,如果我只有一种人(又称“平民”),我不知道如何与谁完成工作相关联,而我只会在最后一张表中将“
civil_id”存储在“人”字段中....但是如何知道是民用还是工人,是否需要其他中间表?


问题答案:

在这种情况下,您无法设置,foreign key因为您有多个父对象。为了进行快速搜索或避免在表的full table scanperson上定义索引event并使用联接表LEFT JOIN。例如,

SELECT  ....,
        COALESCE(b.name, c.name) AS personname
FROM    event a
        LEFT JOIN civil b
            ON a.person = b.civil_id
        LEFT JOIN worker c
            ON a.person = c.worker_ID

新增中 INDEX

ALTER TABLE event ADD INDEX (person)


 类似资料:
  • 我有一个包含click事件的div,在这里,一旦我单击“click here”,标签警报将基于2个条件出现,第一个条件是getListData为true,第二个条件是我仅在getListData为true的5秒后单击标签。我试过了,但效果不好。下面是代码

  • 我有两个(最终更多)字符向量,它们由几个(有序的)名称组成。这类向量的两个例子是: 和 (可通过以下方式获得): 和 现在我想根据元素的位置计算这两个字符向量之间的相关性。例如,在第一个向量中,元素“原始”的位置为1,但在第二个向量中,它的位置为14。 我该怎么办? 提前谢谢!

  • 问题内容: 如何使用Sequelize查找关系中的某个列满足条件的所有人? 一个示例是查找所有作者姓氏为“ Hitchcock”的图书。书籍架构包含与Author’s表的hasOne关系。 编辑:我了解如何使用原始SQL查询来完成,但是正在寻找另一种方法 问题答案: 这是一个有效的示例,说明如何让Sequelize 通过具有特定姓氏的来获取全部信息。它看起来比实际要复杂得多,因为我正在定义模型,将

  • 一个user有多个tel,是一对多的关系,现在我只需要查最新的一条即可,没必要把tel全查出来,应该怎么写?

  • 当创建新的实体关联时,是否有任何spring data rest事件处理程序可用?即。置入关联资源URL。 关联资源:http://docs.spring.io/spring-data/rest/docs/2.3.0.release/reference/html/#repository-resources.Association-resource

  • 我正在开发一个Grails应用程序。我创建了3个实体客户,产品和订单。客户可以有许多订单,但每个订单只能包含单一产品。因此,单个订单可以关联到一个客户和一个产品。以下是我的域名: 顾客: 订单: 产品: 我使用generate all生成了控制器、视图,运行应用程序时出现以下错误: 我也不能创造一个客户。域映射有什么问题吗? 我的数据源配置如下: