Sql 连接表的正确方法

Sql 连接表的正确方法,sql,database-design,Sql,Database Design,我有一张桌子,比如说像这样的产品: 身份证 描述 类别识别码 位置标识 卖方 存储类别和位置id的正确方法是什么?一位程序员告诉我,我必须制作一张表格,比如说TBL选项: 身份证 代码 价值观 以及用作类别代码“类别”的值和位置代码“位置”的值。然后将描述存储在值字段中 这是正确的方法,还是最好使用一个表作为类别,使用另一个表作为位置?这两种方法如何影响检索数据的速度?一种方法当然有较少的表,但多次使用相同的表和联接来检索数据一般的方法是对类别和位置使用不同的表 为什么??您可以声明外键关系,这

我有一张桌子,比如说像这样的产品:

  • 身份证
  • 描述
  • 类别识别码
  • 位置标识
  • 卖方
  • 存储类别和位置id的正确方法是什么?一位程序员告诉我,我必须制作一张表格,比如说TBL选项:

  • 身份证
  • 代码
  • 价值观
  • 以及用作类别代码“类别”的值和位置代码“位置”的值。然后将描述存储在值字段中


    这是正确的方法,还是最好使用一个表作为类别,使用另一个表作为位置?这两种方法如何影响检索数据的速度?一种方法当然有较少的表,但多次使用相同的表和联接来检索数据

    一般的方法是对
    类别
    位置使用不同的表

    为什么??您可以声明外键关系,这反过来有助于维护数据完整性

    在某些情况下,您可能希望将所有引用表存储在一个表中——例如,将数据库转换为另一种语言可能更容易


    不过,一般来说,您需要单独的引用表。毕竟,您可能会有其他列,例如
    类别、长期
    位置、国家/地区
    通常的方法是对
    类别和
    位置使用不同的表

    为什么??您可以声明外键关系,这反过来有助于维护数据完整性

    在某些情况下,您可能希望将所有引用表存储在一个表中——例如,将数据库转换为另一种语言可能更容易


    不过,一般来说,您需要单独的引用表。毕竟,你可能会有一些额外的栏,比如
    类别。长期的
    位置。国家的

    看起来像是OTLT的一个例子,大多数人可能会称之为反模式。请参阅:它看起来也像是专门用于子类型/继承的EAV。这是一个常见问题。在考虑发帖之前,请始终用谷歌搜索你的错误消息或你的问题/问题/目标的许多清晰、简洁和准确的措辞,有/没有你的特定字符串/名称和网站:stackoverflow.com和标签,并阅读许多答案。如果你发布一个问题,用一句话作为标题。请参见文本上方的投票箭头鼠标。在工程中没有“更好”/“最好”这样的东西,除非您定义它。同样不幸的是,所有合理的实用定义都需要大量的经验,其中包含大量的因素,这些因素与对细节的敏感度混乱相互作用。做简单的设计。当你通过测量证明一个设计和你能想到的所有备选方案都有问题(无论当时是什么意思),然后问一个非常具体的问题。还应定义“更好”/“最佳”。可能的复制看起来像一个OTLT示例,大多数人可能会称之为反模式。请参阅:它看起来也像是专门用于子类型/继承的EAV。这是一个常见问题。在考虑发帖之前,请始终用谷歌搜索你的错误消息或你的问题/问题/目标的许多清晰、简洁和准确的措辞,有/没有你的特定字符串/名称和网站:stackoverflow.com和标签,并阅读许多答案。如果你发布一个问题,用一句话作为标题。请参见文本上方的投票箭头鼠标。在工程中没有“更好”/“最好”这样的东西,除非您定义它。同样不幸的是,所有合理的实用定义都需要大量的经验,其中包含大量的因素,这些因素与对细节的敏感度混乱相互作用。做简单的设计。当你通过测量证明一个设计和你能想到的所有备选方案都有问题(无论当时是什么意思),然后问一个非常具体的问题。还应定义“更好”/“最佳”。可能重复的