如何在一列数据库设计中创建多个类型id
本文关键字:创建 id 类型 数据库 一列 | 更新日期: 2023-09-27 18:14:57
我正在设计SQL Server数据库,我必须在一列中创建多个FK
我有了这些表格并在其中一个表格中创建了一个菜单
Table 1 Table 2 Table 3
| Pages | Jobs | News
|------------ |--------- |-----------
| Pageid | Jobid | NewsId
| PageName | JobName | NewsTitle
| MenuName | MenuName | MenuName
我的目标是在一列中引用这些表
我有一个来自这个场景的表
| MenuGroup
|------------
| menuGroupId
| MenuName
| RecordeId
那么如何实现规范化的数据库设计呢?
Sol 1 (Fixed no of Columns):
这是最标准和规范化的解。您可以按照@Tim
nullable columns
创建一个新表。| JoiningTable
|------------
| Id
| PageId
| JobId
| NewsId
Sol2:(Dynamic no of Columns):
虽然我不认为这是一个好方法,因为referential integrity
在这里丢失了,但是在动态列数的情况下,除了这个,我没有任何其他解决方案。
Type:
|------------
| TypeId
| Name
JoiningTable
|------------
| Id
| JoiningId
| TypeId (news,job,pages etc etc)
您可以将JoiningTable
中的TypeId
字段替换为type
字段,将这些two
表压缩为one
。
NoSQl
也可能是一个解决方案,但我没有NOSQL的工作经验,所以我不能推荐任何关于它的东西。
我建议您创建另一个表,将3个表的id作为外键,然后在MenuGroup表中使用这个新表的主键,您可以使用LEFT JOIN通过新表获取单个表。
在单个表中拥有多个FK并不坏,尝试使用MenuName列作为FK,这样您就不必在数据库中创建额外的字段。