问题描述
我一直在努力查看模式并将其转换为关系数据库模型。如果这是我的模式,我的表、主键和外键应该如何显示,或者换言之,此特定模式的最佳数据库设计是什么?我正在寻找关于我所拥有的正确或错误的反馈,为什么会这样。我制作了 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
]
}
解决方法
假设我们从 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
)以避免重复。
表格之间的所有其他关系都可能遵循类似的模式。
请随时澄清您的上述问题,如果需要,我会对此进行扩展。