0

背景:

我正在开发一种搜索功能,使用户能够一次搜索三个实体:班级、学生组织和事件名称。

MySQL 5.6 和 Innodb 将在相对较小的服务器上使用。

表格:

搜索

entity_id  (tiny_int)
entity_type  (tiny_int)
full_name   (varchar(255))

Index (Primary) -> entity_id, entity_type
Index (FULL TEXT INDEX) -> full_name

类(实体类型 = 1)

class_id
ALL OTHER COLUMNS...

事件(实体类型 = 2)

event_id
ALL OTHER COLUMNS

组织(实体类型 = 3)

org_id
ALL OTHER COLUMNS

问题:

通过使用主键将3个看似相似但不同的数据集(类、事件、组织)的名称索引到一个搜索表中是否合适entity_id, entity_type

我将如何使用这些表在搜索表上进行连接Class, Events, Orgs?有条件我可以使用entity_type吗?

非常感谢任何帮助或指导。

4

1 回答 1

1

这似乎是链接这三种表类型的合理方法。它与您经常看到的 ppl 对“account_type: user, admin, other”所做的类似,并链接到每个单独的设置。

在主表和所有三个子表之间进行连接将取决于列的相似程度。如果它们相似,您可以在同一个查询中进行三个连接,并将其entity_type作为 on 子句的一部分。如果它们不同,那么将查询拆分为 3 个不同的连接可能会更好。您可以将这些结合在一起,但它可能值得也可能不值得。

于 2012-12-28T15:16:21.283 回答