请教数据库达人(Sql Server 2005)
请教数据库达人(Sql Server 2005)
数据关系如下:
有类别Category1,Category2(简称c1,c2),每个c1下都有n个c2。
c1无重复数据,c2无重复数据。
请问下面几种建表方式,您一般用哪种,为什么?
方式一:
数据表tCategory1(包含列 c1Id int,c1 nchar(10)) 。主键:c1Id自增长(1,1)。
数据表tCategory2(包含列 c2Id int,c2 nchar(10)) 。主键:c2Id自增长(1,1)。
关系表rCategory(包含列 cId int,c1Id int,c2Id int)) 。主键:cId自增长(1,1)。外键:c1Id,c2Id。
说明:如果这样建表,以后程序中就要验证rCategory表中c1Id,c2Id是否有重复。
方式二:
数据表tCategory1(包含列 c1 nchar(10)) 。主键:c1。
数据表tCategory2(包含列 c2 nchar(10)) 。主键:c2。
关系表rCategory(包含列 cId int,c1 nchar(10),c1 nchar(10))) 。主键:cId自增长(1,1)。外键:c1,c2。
说明:如果这样建表,以后程序中就要验证rCategory表中c1Id,c2Id是否有重复。
方式三:
数据表tCategory1(包含列 c1 nchar(10)) 。主键:c1。
数据表tCategory2(包含列 c2 nchar(10)) 。主键:c2。
关系表rCategory(包含列 c1 nchar(10),c1 nchar(10))) 。主键、外键:c1,c2。