联合主键有什么用?

联合主键就是用2个或2个以上的字段组成主键。用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。可以这么理解,比如,你的订单表里有很多字段,一般情况只要有个订单号bill_no做主键就可以了,但是,现在要求可能会有补充订单,使用相同的订单号,那么这时单独使用订单号就不可以了,因为会有重复。那么你可以再使用个订单序列号bill_seq来作为区别。把bill_no和bill_seq设成联合主键。即使bill_no相同,bill_seq不同也是可以的。

alter table 表 add constraint pk_name primary key (列1,列2,...)联合主键的好处是不需要因为需要主键而增加一个无用的主键列 例如如果不用联合主键你必须增加个列ID设置主键 但这个ID列无任何作用  至于在什么情况下使用,就像刚才举例的,当你这个表的主键ID无任何用处,那么就用联合主键好了,你可以节约一个列的空间,但如果这表的ID列要做为别的表的外键的话,就不能用联合主键了。
联合主键就是确定一条记录的唯一性啊

比如这种时候商品品牌 商品型号诺基亚        920三星         NOTE2诺基亚        8088

比如这样商品品牌可能有重复,都是诺基亚,但是诺基亚厂商生产的商品型号是不会重复的也比如,可能好多品牌都有920这个型号,但是一个品牌只有一个920的型号

所以就靠这样的联合主键来确定这条记录的唯一性

建立方法如下create table product(pro_name varchar(20),pro_type varchar(20),primary key (pro_name,pro_type)); 

百度搜索的答案
时间: 2024-10-24 21:43:21

联合主键有什么用?的相关文章

hibernate里联合主键composite-id映射,查询单个主键的问题(转)

今天项目中遇到这个问题,搞了大半天,我郁闷...hibernate里联合主键配置(多个字段一起作为主键) <class name="com.cskj.hibernate.map.BbWjjc" table="bb_wjjc" schema="dbo" catalog="wjgl">        <composite-id name="id" class="com.cskj.hi

hibernate学习:联合主键2

一:运行上一篇文章的程序会发现,后台输出两个warn 17:22:14,232  WARN RootClass:233 - composite-id class does not override equals(): com.hibernate.model.TeacherPK 17:22:14,234  WARN RootClass:238 - composite-id class does not override hashCode(): com.hibernate.model.Teacher

SQL Server中的联合主键、聚集索引、非聚集索引

我们都知道在一个表中当需要2列以上才能确定记录的唯一性的时候,就需要用到联合主键,当建立联合主键以后,在查询数据的时候性能就会有很大的提升,不过并不是对联合主键的任何列单独查询的时候性能都会提升,但我们依然可以通过对联合主键中的首列除外的其他列建立非聚集索引来提高性能.本文将对联合主键.聚集索引.非聚集索引对查询性能的影响举例说明.步骤一,建立一个测试表,并且插入350万条以上的数据. /*创建测试数据表*/create table MyTestTable(id varchar(10)not n

JPA学习---第十二节:JPA中的联合主键

1.定义实体类,代码如下: (1).将联合主键放到一个类中,代码如下: package learn.jpa.entity; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Embeddable; /** * * 1.必须要有无擦得构造函数 * 2.必须要实现序列接口 * 3.必须重写 equals() 和 hashCode() 方法 * @Embeddable 告诉 jp

hibernate里联合主键composite-id映射,查询单个主键的问题

今天项目中遇到这个问题,搞了大半天,现在记录下来hibernate里联合主键配置(多个字段一起作为主键) <class name="com.cskj.hibernate.map.BbWjjc" table="bb_wjjc" schema="dbo" catalog="wjgl"> <composite-id name="id" class="com.cskj.hibernate

Hibernate 查询排序与联合主键映射

1.查询排序 (1)数据库排序(推荐) <map order-by="name ase" > <!--name的升序,降序desc--> session.createQuery(" ").uniqueResult() //返回唯一的对象,前台对象只有一个 <set order-by="name asc"> (2)内存排序 <set sort="natural" > sort属性值

Hibernate xml配置方法之联合主键

1.StudentPK类,存放Student的联合主键,必须实现java.io.Serializable接口(为了序列化扩充移植),必须重写equals跟hashCode方法(为了确保唯一性) public class StudentPK implements java.io.Serializable{ private int id; private String name; public int getId() { return id; } public void setId(int id)

Hibernate 中 联合主键映射 组合关系映射 大对象映射(或者说文本大对象,二进制数据大对象)

Clob:文本大对象,最长4G Blob:二进制数据大对象,最长4G util: public class HibUtil { private static SessionFactory sessionFactory; static{ //获取配置信息 hibernate.cfg.xml Configuration configuration = new Configuration().configure(); //创建一个 ServiceRegistry的实例 //首先获得其标准建造器,此处用

HIBERNATE一对一双向外键联合主键关联

HIBERNATE一对一双向外键联合主键关联: 一. 创建主键类:这个主键必须实现serializedable接口和重写其中的hashCode方法和equals方法:为主键类添加一个叫做@Embeddable的注解和为实体类添加一个叫做@EmbeddabledId的注解