資料庫中復合主鍵的應用場景

2021-09-24 19:47:02 字數 1212 閱讀 7485

在資料表操作中,使用主鍵來保證資料記錄的唯一性是非常常見的應用,比如以自增長的整型id,或者以身份證號,或者會員號之類的字串型,都是可以的。但是在實際應用中,不可能這麼理想,請下面的例項。

現有兩個資料表:材料表 material 和 零件表,結構如下:

material 表

m_id |  name |  property

----------------------------------

1 | 原鐵 | 屬性引數

2 | 合金 | 屬性引數

part 表

p_id  |  name |  model

----------------------------------

1 | 螺栓 | b232c1

2 | 螺母 | t322l0

現在在生產的時候,需要有一張產品型別說明表 producttype,此表中會表明什麼型別的產品使用何種材料製作何種零件,結構如下所示:

producttype表

m_id | p_id | description

----------------------------------

1 | 1 | 描述1

1 | 2 | 描述2

2 | 1 | 描述3

在producttype表中,有乙個要求就是使用同一原料生成的某一零件屬於哪一型別的產品要有唯一對應關係,即m_id和p_id的組合不能重複,比如 (1,1)的組合只能出現一次。這個問題我們不能直接使用加主鍵的方式來解決,同時如果通過每次資料插入時檢測又太麻煩,而且效率也會降低。

這時候,復合主鍵就派上用場了。我們可以將m_id和p_id組合成乙個主鍵,從而避免兩者重複。具體作法如下:

create

table test

( m_id int

, p_id int

, description varchar

(1000),

primary

key(m_id, p_id)

-- 關鍵操作

)

add

constraint pk_id primary

key(m_id, p_id)

資料庫中復合主鍵與聯合主鍵的區別?

復合主鍵 復合主鍵 資料庫表的主鍵由兩個及以上的字段組成。例如 create table asm device config info asmmodel varchar 32 not null comment 自助機型號 devicetype varchar 32 not null comment ...

資料庫中主鍵和索引的區別以及使用場景

主鍵與索引的區別如下 主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。唯一性索引列允許空值,而主鍵列不允許為空值。主鍵列在建立時,已經預設不為空值 唯一索引了。主鍵可以被其他表引用為外來鍵,而唯一索引不能。乙個表最多只能建立乙個...

資料庫中主鍵和索引的區別以及使用場景

主鍵與索引的區別如下 主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。唯一性索引列允許空值,而主鍵列不允許為空值。主鍵列在建立時,已經預設不為空值 唯一索引了。主鍵可以被其他表引用為外來鍵,而唯一索引不能。乙個表最多只能建立乙個...