使用外键约束来确保有效的数据输入

时间:2017-10-24 10:04:16

标签: sql sql-server foreign-keys

我一直在清理一个有点噩梦的数据库表。

我想确保正在输入的数据是正确的。所以我读到了外键约束。

以下是输入数据的表格。

tblSales

  Country      Seller       Value
  52           01           100
  86           01           100
  102          32           100
  32           52           100
  52           01           100

我想确保将输入的值输入Country&卖方字段是一组特定值。还有一个名为tblMap的表,它用于报告,为数字提供易于阅读的名称。

tblMap

Factor      Code      Name      
Country     52        US
Country     86        Germany
Country     102       Spain
Country     32        Italy
Seller      01        Bob
Seller      32        Sarah
Seller      52        Jim

就像我说我打算使用外键约束但是我不能在tblMap的Code字段上创建主键,因为52用于国家和卖家。我也无法更改代码编号。

我仍然可以使用外键约束来确保在tblMap中存在输入到tblSales的任何值吗?

1 个答案:

答案 0 :(得分:1)

您可以将tblMap替换为2个表tblMapCountrytblMapSeller

<强> tblMapCountry

Code      Name      
52        US
86        Germany
102       Spain
32        Italy

<强> tblMapSeller

Code      Name      
01        Bob
32        Sarah
52        Jim

你可以基础

  • tblSales.country和tblMapCountry之间的FK
  • tblSales.seller和tblMapSeller之间的FK

最后,您可以通过联合2 tblMaptblMapCountry

来构建视图tblMapSeller
create view `tblMap`
as
select 'Country' as Factor,Code,Name from tblMapCountry
union all
select 'Seller' as Factor,Code,Name from tblMapSeller