数据表主键

1.主键分为:逻辑主键和业务主键

逻辑主键:没有任何的含义,只是为了标识当前列在当前数据库表里的唯一标识;

业务主键:业务主键就是具有真实意义的,就比如身份证,银行卡号,员工编号,一旦变化,难以维护。

推荐使用逻辑主键.另外标识列只能是int类型的

主键列:就是不能插入重复数据(默认带索引),每一张数据表,都推荐有主键,设置标识。

主键标识列:就算数据行被删除了,增长的数字也是按照原来的增长。比如,一张表里面有两行数据,删除编号为1,2的行数据据,之后,再插入新数据行,编号不会从1开始,而是从3开始的。

2.主外键的作用,就是为了减少重复的数据。

体现:把一个表中重复的数据提取出来,单独的放在另外一个表中,这样在原来的表中,只要存储一个指向提取出来的表的行即可。

3.主键表和外键表的区分:

*看哪个表的修改,影响了另外一个表。修改的表就是主键表,受影响的表就是外键表。

时间: 2024-10-07 23:33:31

数据表主键的相关文章

使用GUID作为数据表主键的好处(转)

http://blog.itpub.net/3875/viewspace-789520/ 分类: 数据库开发技术 使用GUID作为数据表主键的好处 [@[email protected]] 使用GUID作为数据表主键的好处 数据表主健通常采用以下三种方式: 1.         自动递增值. 2.         唯一名称.这个是使用自己定义的算法来生成一个唯一序列号. 3.         GUID(全局唯一标识符). GUID与自动递增值及唯一名称比较 GUID 在客户端生成,由GUID的特

SQLITE数据表主键设置Id自增方法

SQLITE数据表主键设置Id自增方法 标签: sqliteintegerinsertnulltableapi 2010-01-12 08:39 35135人阅读 评论(8) 收藏 举报  分类: SQL(11)  版权声明:本文为博主原创文章,未经博主允许不得转载. 搞定了一个困扰许久的问题,原来sqlite中的主键也是可以设置为自增的:)方法就是声明为 INTEGER PRIMARY KEY 的字段可以自动增加.    网上查到资料说,从 SQLite 的 2.3.4 版本开始,如果将一个表

PHP数据连接主键与外键!

设置MySQL数据表主键: 使用"primary key"关键字创建主键数据列.被设置为主键列不允许出现重复的值,很多情况下与"auto_increment"递增数字相结合.如下SQL语句所示: Mysql>create table books(bookid int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,bookname varchar(50)); Mysql>insert into books(bookname

MyBatis框架——mybatis插入数据返回主键(mysql、oracle)

向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键. 比如添加一个用户,同时返回插入用户后得到的用户id: /** * 添加用户信息 * @param user * @throws Exception */ public int insertUser(User user) thro

解决getJdbcTemplate往oracle数据库中插入数据返回主键出错问题

我们使用Spring中的JdbcDaoSupport往Mysql中插入数据并返回主键代码,我们使用的mysql数据库,主键在数据库中设置为自增长:该类继承自JdbcDaoSupport,所以能直接使用getJdbcTemplate() public int saveUser(String userName,int age,String password){ getJdbcTemplate().update(new PreparedStatementCreator() { public Prepa

如何准确高效的获取数据库新插入数据的主键id

例如我们新建了一张表UserInformation,字段如下Id,为主键,自增,其它字段Name,Pwd,Email 然后我们来执行一个新增插入操作: insert into UserInformation (Name,Pwd,Email) values('小明','123','111') 我们想在新增插入数据的时候获取到插入这条数据的主键的值是多少, 解决的方法有两种: 1.一种是直接输入某个字段,然后查询,代码如下: insert into UserInformation (Name,Pwd

主表和子表主键设计

将主表主键设置为ID,另外将子表主键设置为AID,子表的外键ID和主表一样.那么当发生对主表记录进行删除操作,可以方便的对关联的子表数据一并删除! declare @selectStr nvarchar(1000) set @selectStr='delete from Bdrdrecord11 ' + @searchString+' delete from Bdrdrecords11 '+@searchString exec (@selectStr)

百万数据修改索引,百万数据修改主键

原文:百万数据修改索引,百万数据修改主键 当百万数据时,如果修改主键,那么会自动重建索引,所以操作会非常慢,经常会超时,错误提示类似: 超时时间已到.在操作完成之前超时时间已过或服务器未响应 解决方案:不要采用手动添加主键或者索引,而采用sql语句修改主键或者索引,当然很多人这个sql不会写,也不要紧,sql自带了,两步走,第一:点开表设计,添加一个索引或者主键,如图 第二:关闭后,右键,有一个生成更改脚本,如图: 点击生成,复制里面的脚本,关闭当前页面,记住,不要保存哦....然后运行这个sq

注冊表主键的含义

我们都知道,我们在使用电脑时.在"開始"→"执行"中输入"regedit"并单击"确定"button后,能够打开"注冊表编辑器"对话框,此时能够看见在左边的窗体中显示了注冊表的全部主键.对于Windows 2003/2000/XP 来说仅仅有五个主键.新手要想看的懂注冊表就必须了解这五个主键的指向是什么.以下我们就来一起学习下注冊表主键的详细含义. 1.HKEY_CLASSES_ROOT 该主键用于管理文件