微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL - 需要帮助将架构转换为表、外键、主键

如何解决SQL - 需要帮助将架构转换为表、外键、主键

我一直在努力查看模式并将其转换为关系数据库模型。如果这是我的模式,我的表、主键和外键应该如何显示,或者换言之,此特定模式的最佳数据库设计是什么?我正在寻找关于我所拥有的正确或错误的反馈,为什么会这样。我制作了 5 个表 TechCompany、图片、网址、标签和 FriendIds。我向 TechCompany 添加了 3 列:Url_Id、Tag_Id、Friend_Id。我将它们设为主键,并将它们映射到我的 Urls、Tags 和 FriendIds 表中的 Id。这些表中的 Id 是我的外键。

TechCos 图片
TechCos 网址
TechCos 标签
TechCos Friend_Ids


{
  "name": "string","profile": "string","summary": "string","headline": "string","contactinformation": "string","slug": "string","statusId": "NotSet","images": [
    {
      "imageTypeId": 0,"imageUrl": "string"
    }
  ],"urls": [
    "string"
  ],"tags": [
    "string"
  ],"friendIds": [
    0
  ]
}

ERD of the preceding code

解决方法

假设我们从 techcos 开始:

techcos (techcos_id PK)

如果 tags 指代 techcos,我们会执行以下操作:

tags (tag_id PK,techcos_id references techcos (techcos_id))

如果关系是One to One,我们可以在unique constraint上添加一个tags.techcos_id,这样没有两个tags可以引用同一个techcos行。

tags (tag_id PK,techcos_id references techcos (techcos_id),unique (techcos_id))

如果关系是 One to Many,我们可以省略那个 unique constraint,这样多个 tag 可以引用同一个 techcos_id

tags (tag_id PK,techcos_id references techcos (techcos_id))

如果关系是Many to Many,那么多个tag可以引用同一个techcos_id,多个techcos可以引用同一个{{1 }},我们需要一个单独的表来处理这些映射。

tag,我们从 techcos_tags ( techcos_id,tag_id ) 表中删除 techcos_id 引用。

我们现在有:

tags

techcos (techcos_id PK)

tags (tag_id PK),以及 techcos_tags ( techcos_id,tag_id ) 对上的 primary key constraint(或 unique constraint)以避免重复。

表格之间的所有其他关系都可能遵循类似的模式。

请随时澄清您的上述问题,如果需要,我会对此进行扩展。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。