【问题标题】:Appropriate relationship between tables表之间的适当关系
【发布时间】:2018-03-09 03:19:07
【问题描述】:

我需要一些关于适当的表结构和关系的输入 在我的桌子之间。 我有以下 3 个表:

表 1

SeqId Version Date
1     V1      03-09-2018

表 2

SeqId  TName Type
1      T1    local
1      T2    global

表 3

SeqId TName Value Input
1     T1    90    dev
1     T1    80    qa
1     T2    70    prod

这里 SeqId 将是表 1 中的主键标识 我不确定我应该在其他表中创建什么键。我应该在 table2、table3 中创建 SeqId 和 TName 作为外键。

欢迎提供意见

--更新

SeqId 是独一无二的,这就是为什么我想在 table1 中将其设为主键。 Tname 在一个序列中不是唯一的。

----更新----

这样合适吗:

表 1 SeqId 作为身份主键

表 2 SeqId 作为外键,Tname 作为主键(tname 是 varchar - 可以将其创建为主键)

表 3 SeqId作为外键,Tname作为外键,Value(这个必须是唯一的)作为主键

【问题讨论】:

  • (SeqId, TName) 是唯一的吗?
  • seqid 是唯一的,tname 不是

标签: sql sql-server


【解决方案1】:

在正常情况下,我会说关键如下: 对于表 1,它是 SeqId 对于表 2,它是 SeqId,TName 对于表 3,它是 SeqId,TName, Input 但是当您在数据库系统中为表定义主键或外键时,它是基于业务需求的。基本上,我们真正通过定义键得到的是基础数据库系统中内置的默认功能,以确保数据的唯一性和一致性。 前任。当您将 SeqId 定义为主键时,当您尝试插入具有相同 SeqId 的新记录时,系统通常会返回错误。 希望信息有所帮助。

【讨论】:

  • 表1 SeqId作为身份主键 表2 SeqId作为外键,Tname作为主键 表3 SeqId作为外键,Tname作为外键,Value作为主键
猜你喜欢
  • 2023-03-27
  • 2013-01-03
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多