1. 程式人生 > >聯合主鍵有什麼用?

聯合主鍵有什麼用?

聯合主鍵就是用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)
); 

相關推薦

hybris items.xml 中表的聯合實現

實現 have option 字段 reat direct combined 指定 org 在 items.xsd中是這麽定義 unique的 <xs:attribute name="unique" type="xs:boolean" use="optional"&g

Oracle創建聯合

bsp font acl con pan span tex size 主鍵 先創建個表: 1)create table test ( sno char(12), name char(4), CONSTRAINT PK_TAB PRIMARY KEY (sno,

hibernate 聯合

blog package site http Coding logs override ide pac xml配置 需要一個主鍵類: package com.bxw.entity; import java.io.Serializable; public class

hibernate MTM 聯合

hash ret hbm.xml utf oct import override 映射 ping //適用於表裏沒有其他列,只有主鍵 //Course.java實體類 package com.tao.pojo; import java.util.HashSet; imp

SQL Server(MySql)中的聯合聯合索引) 索引分析

判斷 reat 系統 lap creat insert 結果 問題 select 最近有人問到這個問題,之前也一直沒有深究聯合索引具體使用邏輯,查閱多篇文章,並經過測試,得出一些結論 測試環境:SQL Server 2008 R2 測試結果與MySql聯合索引查詢機制類似,

函式儲存過程和聯合

建立批量插入資料 第一個命令是DELIMITER //,它與儲存過程語法無關。 DELIMITER語句將標準分隔符 - 分號(;)更改為://。 在這種情況下,分隔符從分號(;)更改為雙斜槓//。為什麼我們必須更改分隔符? 因為我們想將儲存過程作為整體傳遞給伺服器,而不是讓mysql工具一次解釋每個語句。

Oracle聯合

轉https://www.cnblogs.com/king-xg/p/6721272.html alter table tablename add constraint unionkeyname primary key (column1,column2); 上面語句中: tablename為要新增聯合

MySQL聯合自增分別產生遞增id

比如員工表,要在部門內遞增生成編號 ,例如    t_user表        dept          user_no_name --------

hibernate 聯合出現MySQLIntegrityConstraintViolationException錯誤

問題 今天在使用SSH框架做一個專案中的級聯插入時,報一個錯誤(root error,其他錯誤很多,不過都是因為這個引起)“com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationExce

Chloe聯合查每個ID最新的資料

聯合主鍵如圖,對於一個HouseHoldID,可能對應不同的GetTime。所以一個HouseHoldID,可能有多條資料存在。 現在要查詢所有所有HouseHoldID最新時間的資料, 使用SQL語句查詢: select HouseHoldID ,max(GetTim

SQL 聯合跨表刪除最小時間那條重複資料,跨表 for UPdate

一、過濾出需要刪除的重複資料的ID select  aac001  from ei_app_recheck_citi_id inner join std_app on std_app.app_id=ei_app_recheck_citi_id.app_id where s

phoenix 聯合的探索

連線上phoenix,建一個測試表: create table test12(email varchar not null,id integer not null,name varchar not null,age integer,aihao varchar CONSTRA

python django model聯合

        今天,在家試試django的model的設定,如何設定的聯合主鍵,我經過查資料和實踐,把結果記錄如下:       例如: class user(Model):   id=AutoField(primary_key=True)   name = CharFi

、候選、外來聯合、複合

首先看看各種鍵的定義: 超鍵(super key):在關係中能唯一標識元組的屬性集稱為關係模式的超鍵(只要有一個鍵唯一,再隨便組其他的鍵,合起來叫主鍵) 候選鍵(candidatekey):不含有多餘屬性的超鍵稱為候選鍵(最小的超鍵,ID,身份證號) 主鍵(primary key):

Android sqlite聯合的使用

一、問題分析 在操作sqlite資料庫的時候,在測試的時候出現了資料的一個不正常的增加,造成的資料的異常,後來發現是sql語句出現的問題。 分析:每次在上傳資料的時候,可能用的是同一個包名,造成資料插不進去,就會把所有的資料都上傳到伺服器,這

從一個審批需求看資料庫設計——聯合的使用

最近工作挺忙,已經接近996了,所以部落格更新也少了。今天忙裡偷閒,分享一個最近遇到的一個數據庫設計問題。業務需求是: 針對一條人員資訊的資料進行審批操作 在進行審批時要看到審批前後資料的修改 同一人員的審批資料只能存在一條 審批通過後

hibernate3.3.2學習筆記---聯合

聯合主鍵主要思想就是把主鍵換成一個類,在類裡進行主鍵對應屬性的集合。 在主鍵類裡,要重寫equals方法,hashCode方法,implements Serializable。 重寫equals是為了在類中確保主鍵的唯一性,與資料庫保持一致。 重寫hashCode是為了:當

[轉]邏輯聯合,一定要討論清楚!

今天在做專案的資料庫設計時,突然發現自己在表的主鍵設定方面太過片面,對於邏輯主鍵和聯合主鍵的理解也很少。索性上網百度了一下,看到了一些論壇中的兄弟們的討論,其中很多的分析讓我頓時清醒了很多。下面開始貼上一些人的觀點和分析,如果原作者看到本文,發現有不妥之處,請郵件告之。   網友goldrain說: 我倒不反

Hibernate學習筆記(三)----ID生成策略、聯合

一、ID生成策略(參考hibernate_0400_ID) 1)xml生成id使用generator屬性          <idname="id" >          <generatorclass="native"></generator

聯合建立的語法

create table cartitem(uid int not null , bid int not null,count int,bookname varchar(200),price decimal(12,0),image varchar(200),primary