对错:好的设计要求每个表都有一个主键,如果没有别的话,就是一个运行的整数

Cha*_*adD 8 database-design data-warehouse

考虑一个杂货店场景(我正在制作)你有FACT记录代表销售交易,其中Fact表的列包括

SaleItemFact Table
------------------
CustomerID  
ProductID  
Price  
DistributorID  
DateOfSale  
Etc  
Etc  
Etc  
Run Code Online (Sandbox Code Playgroud)

即使在考虑所有密钥时表中存在重复,我也会认为应该编写一个运行数字密钥(即标识列)的代理,例如Integer类型的TransactionNumber.

我可以看到有人在争论Fact表可能没有唯一的密钥(虽然我发明了一个并浪费了4个字节,但维度表怎么样?

Ran*_*der 11

第一个普通表单需要每个表上的主键.所以这是良好的数据库设计所需的最低要求.你选择什么样的主键是有争议的.但是,数据库设计的第一个正常形式不是.

  • 第一个正常形式是sissies.:)尽管这是一个非常好的答案,但我还是会投票给你 (3认同)