MySQL:了解映射表
|
当为具有多对多关系的业务目录构建类别导航系统时,我知道创建映射表是一种好习惯。
类别表(CategoryId,CategoryName)
业务表(BusinessId,BusinessName)
类别映射表(BusinessId,CategoryId)
当我将类别表和业务表合并以创建映射表时,这是否会给我一个包含所有可能的业务和类别关系的表?
我有800个类别和1000个企业列表。那可以给我一张包含800,000种可能关系的表吗?如果是这样,我将如何只关注存在的关系?我是否必须遍历所有列表(800,000个),将其标记为是或否?
我对此一直感到非常困惑,因此我们将不胜感激。
没有找到相关结果
已邀请:
4 个回复
降女陷费券
学生表将有1000条记录 教师表将有20条记录 link_st表将具有与链接一样多的记录(不是20x1000,但仅用于实际链接)。 选拔 您选择例如每位老师使用的学生人数:
通常,您应该在此处始终使用
。 建立连结 当您将老师分配给学生时(反之亦然)。 您只需要做:
这有点误用了内部联接,但是只要名称是唯一的,它就可以工作。 如果您知道ID,当然可以直接插入这些ID。 如果名称不是唯一的,则将失败,不应使用。 如何避免重复链接 避免重复链接非常重要,如果有重复链接,则会发生各种不良情况。 如果要防止在链接表中插入重复的链接,可以在链接上声明一个“ 4”索引(推荐)
或者,您可以在insert语句中进行检查(不建议这样做,但是可以)。
如果该数据尚未在“ 7”表中,则将仅选择548、785;如果该数据已在link_st中,则不返回任何内容。因此它将拒绝插入重复的值。 如果您有一所台式学校,则取决于一个学生是否可以入读多所学校(不太可能,但假设),而老师是否可以入读多所学校。很有可能。
您可以像这样列出学校中的所有学生:
玖料萄
娠频摩
但是,如果您希望允许一个联系人拥有多个电子邮件地址,请使用映射表:
然后,您可以使用SQL检索联系人分配给的类别的列表: 从类别a,联系人b,联系人类别c中选择一个类别名称,其中a.categoryid = c.categoryid和b.contactid = c.contactid和b.contactid = 12345;
茬贺努充尽