"join table" 是 SQL JOIN 的结果,还是多对多之间的 table

Is a "join table" the result of a SQL JOIN, or the table between a many-to-many

这是一道关于正确 "naming things" 的问题。具体如何区分:

  1. 多对多关系中的"between"table(例如usersusers_questionsquestions
  2. 在SQL JOIN期间创建的(临时)table(例如'SELECT * FROM users INNER JOIN users_questions.user_id ON users.id 哪里 users_question.question_id=37016694;`)

许多数据库设计者在您的第一感觉中使用术语 join table:实现实体之间的多对多关系。它也被称为 junction tableassociation table 等。更多信息:https://en.wikipedia.org/wiki/Associative_entity

我从来没有听说过第二种感觉。 (但是,嘿,我出门不多。:-) 如果您正在编写文档或教学,我建议您保留 table 这个词来表示实际的,物理的,table。避免对结果集使用 table 一词,除非您通过说 virtual table 或类似的短语来限定它。这样,您的读者和学生就不会浪费时间在您的架构中寻找这些非 table 的定义。

从关系的角度来看,JOIN table(table 解决了 多对多 关系)真实物理table。否则它不会在请求之间存活。在我看来,术语 "join table" 是由 MVC "Code First" 开发人员创造的,他们忽略了数据库领域中的物理实体,尤其是当它们未显示在 DbContext 中时。

我认为,再次强调,我们应该尊重关系现实。

所以帮我科德