如何建立一个表
两列之间的关系,我想建立列之间(和程序代码的测试代码)在相同表一比一的关系。我希望具有相同测试代码的所有测试具有相同的程序代码。如何建立一个表
我的第一个想法是使用UDF来查找相同测试代码对应于两个不同程序的情况。我了解到,这是行不通的,因为T-SQL只
INSERTS
后检查在检查约束的UDF - 不经过UPDATES
why is t-sql allowing me to violate a check constraint that uses a UDP?-
我的下一个念头,就是逻辑从UDF移动到检查约束自己。但是t-sql是说在检查约束中不允许使用子查询。这也意味着我不能使用
EXISTS
语法(我认为它也使用子查询)。ALTER TABLE [dbo].[mytable] WITH CHECK ADD CONSTRAINT [oneProgramPerTest] CHECK
( (select COUNT(*) from mydb.dbo.mytable u1 inner join mydb.dbo.mytable u2 on u1.testcode=u2.testcode and u1.progcode <> u2.progcode )=0 )
除非有一些方法来执行不具有(1)一个UDF或该逻辑(2)的子查询然后好像我需要创建的程序代码的“虚设”表和然后在myTable的测试代码和虚拟表之间强制执行一对一的关系。这看起来好像是真的是丑陋,所以有一个更好的方法。对?
你有没有读过标准化(如果你不是为什么要设计一个数据库?)。您应该有一个结构与
tableA
id (PK)
programcode
other fields
tableB
programcode (PK)
testcode
在两个表之间添加一个正式的外键,并将程序代码定义为tableb中的PK。 然后获取数据你想要的:
select <Name specific fields, never use select *>
from tableA a
join tableB b on a.programcode = b.programcode
这是一个传统数据库!这听起来像我需要两个表来建立这种关系 – bernie2436 2013-03-27 20:29:01
为什么不使用select *?我仍然在学习 – bernie2436 2013-03-27 20:32:38
为什么不只是与程序代码相关联的测试代码FK表? – Paparazzi 2013-03-27 20:14:44