【问题标题】:SQL Database Recursive RelationshipSQL 数据库递归关系
【发布时间】:2017-11-10 07:18:50
【问题描述】:

因此,我正在尝试自学数据库和 SQL,并尝试在 Management Studio 中制作数据库,并且我有一个关于表中递归关系的问题。假设我有一个名为“Customers”的表,在该表中我有一个名为 Customer_ID 的 int 作为主键,它也是一个递增 1 的标识,一个名为“Customer_Name”的 nchar(125),以及另一个名为 Customer_Parent_ID 的 int(我不'不知道我是否应该将此作为身份)。我如何建立有客户的关系,我想跟踪其中一些客户可能是其他客户的父母(想想公司,例如说微软和 LinkedIn 都是客户,但微软也是 LinkedIn 的父母公司和我想展示这种关系)。我附上了一张我认为它应该是什么样子的图片……但同样,这里的新手和任何建议都将不胜感激。

非常感谢!

编辑:添加了 SQL 代码并删除了意外的 mysql 标记。

【问题讨论】:

  • 图表未显示关系定义。最好能提供创建表和创建索引的SQL代码。也就是说,看起来您已正确设置它。您不希望外键(父)是身份。我建议你研究一元关系,标准模型是员工/经理。您还可以研究递归 CTE(如果这些在 MySql 中可用)
  • MySQL 和 SSMS,不是很常见的组合。
  • 一个客户可以只有一个父母吗?
  • 我添加了 SQL 代码,现在我会查找它!谢谢!不小心点击了 mysql 的推荐标签,我只在 Management Studio 中工作。我实际上并没有考虑过,我想是的,如果一家公司被另一家公司收购并且现在有了新的父母!有趣!

标签: sql sql-server database-design entity-relationship


【解决方案1】:

我认为您的问题在某种程度上类似于this one,简单的答案是您在 Customer_Parent_ID 列上设置外键并引用 Customer_ID 列,因此出现在 Customer_Parent_ID 中的任何 ID 号也必须出现在 Customer_ID列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多