k80*_*0sg 5 sql database database-design
我对数据库设计相当新,对于多对多的关系,创建复合键的差异和含义是什么,以及对于例如
Country 表
CountryID
CountryName
Run Code Online (Sandbox Code Playgroud)
Language 表
LanguageID
LangugageName
Run Code Online (Sandbox Code Playgroud)
多对多表 - 使用复合:
CountryID Pkey
LanguageID Pkey
Run Code Online (Sandbox Code Playgroud)
要么
使用唯一ID:
AutoID Pkey
CountryID
LanguageID
Run Code Online (Sandbox Code Playgroud)
复合键:
复合键是多个列的组合,用于标识表中的唯一行。组合键可以是主键。
首要的关键
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
所以这完全取决于你的要求
在第一个设计中
Many to Many Table:
Using composite:
CountryID Pkey
LanguageID Pkey
Run Code Online (Sandbox Code Playgroud)
如果您使用此设计,则 CountryID 和 LanguageID 是复合主键。ie 在这里
表的数据将是
CountryId LaguageID
1 1 //valid
1 2 //valid
1 3 //valid
1 1//not valid data as its form composite primary key
Run Code Online (Sandbox Code Playgroud)
在第二个设计中
Using Unique Id:
AutoID Pkey
CountryID
LanguageID
Run Code Online (Sandbox Code Playgroud)
AutoID 成为主键,因此这将允许数据类似
AutoId CountryId LaguageID
1 1 1 //valid
2 1 2 //valid
3 1 3 //valid
4 1 1 //valid as AutoID is primary key
1 2 3 // invalid as AutoID is prinary key
Run Code Online (Sandbox Code Playgroud)
希望这个演示能帮助您理解差异