一般所言的数据库中的主键是物理主键,他可能在系统中由数据库自动生成,比如一个32位长的随机字符串.
而逻辑主键一般是用来表示一个包含确切意义的并唯一的键值,使用者可以根据逻辑主键的值清晰的了解到一些信息,但这些信息从物理主键是无法了解的.
你上面的表里是打算用逻辑主键当物理主键用.这样做可以,但不推荐.
一般的做法,尤其在大型项目中.建议使用物理主键,该主键交由数据库自动生成.并使用自己的逻辑主键,需要在程序中判断自己逻辑主键的唯一性,当然如果要求不高的系统可以不做判断.
优点,在数据库迁移等过程中,可最大可能的保护你数据的完整性,比如你从一个ORACLE数据库移动到SEQ SERVER数据库时,可能物理主键会存在这样或那样的问题,这时你可以选择放弃原有的物理主键,只移动数据内容并生成新的物理主键.
还有点建议,在程序中使用的时候,建议使用物理主键来关联你的数据内容~
答题完毕,希望对你有所帮助.
数据库中,关系模型中的主键是对每条数据记录的唯一标识,不可重复。主键可以是属性集,比如一张表R(A,B,C,D),主键为A+B是可以的。
主键,即主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。
一个表的主键可以由多个关键字共同组成,并且主关键字的列不能包含空值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。
扩展资料:
建立主键应该遵循的原则:
1、主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。
2、 永远也不要更新主键。因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。
3、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
4、主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生人为修改主键的动机。
参考资料来源:百度百科-主关键字
1、主键:若某一个属性组(注意是组)能唯一标识一条记录,该属性组就是一个主键。主键不能重复,且只能有有一个,也不允许为空。定义主键主要是为了维护关系数据库的完整性。
2、外键: 外键用于与另一张表的关联,是能确定另一张表记录的字段。外键是另一个表的主键,可以重复,可以有多个,也可以是空值。定义外键主要是为了保持数据的一致性。
3、简单来说就是把两个表关联起来。同样的一个名字在两个表中:如stu(name,sex)和表grade(name,cou),如果name是表stu中的主键,并且name也是表grade中的主键,那么表stu中的name就是表grade的外键了。
4、外键取值规则:空值或参照的主键值。插入非空值时,如果主键表中没有这个值,则不能插入。更新时,不能改为主键表中没有的值。删除主键表记录时,可以在建外键时选定外键记录一起级联删除还是拒绝删除。更新主键记录时,同样有级联更新和拒绝执行的选择。SQL的主键和外键就是起约束作用。
5、索引的主要作用为了提高查询速度。主键就是唯一索引。外键是两张表之间做连接关系时用的。一般是某一张表的一个外键字段引用另一张表的主键。
在关系型数据库中,数据结构有逻辑结构和物理结构。物理结构指存储在物理介质上的数据文件的结构。逻辑结构即关系,也就是一张张的二维表。表中的一列即为一个字段(属性),代表的是实体的一个属性。表中的一行即为一条记录。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)