Chiavi e superchiavi

Introduzione ai database relazionali in SQL

Timo Grossenbacher

Data Journalist

Il modello di database attuale

Introduzione ai database relazionali in SQL

Il modello con chiavi primarie

Introduzione ai database relazionali in SQL

Cos'è una chiave?

  • Attributi che identificano un record in modo univoco
  • Se si possono ancora rimuovere attributi: superchiave
  • Se non si può rimuovere altro: superchiave minimale o chiave
Introduzione ai database relazionali in SQL
     license_no     | serial_no |    make    |  model  | year
 -------------------+-----------+------------+---------+------
 Texas ABC-739      | A69352    | Ford       | Mustang |    2
 Florida TVP-347    | B43696    | Oldsmobile | Cutlass |    5
 New York MPO-22    | X83554    | Oldsmobile | Delta   |    1
 California 432-TFY | C43742    | Mercedes   | 190-D   |   99
 California RSK-629 | Y82935    | Toyota     | Camry   |    4
 Texas RSK-629      | U028365   | Jaguar     | XJS     |    4

SK1 = {license_no, serial_no, make, model, year}

SK2 = {license_no, serial_no, make, model}

SK3 = {make, model, year}, SK4 = {license_no, serial_no}, SKi, ..., SKn

Adattato da Elmasri, Navathe (2011): Fundamentals of Database Systems, 6ª ed., Pearson

Introduzione ai database relazionali in SQL
     license_no     | serial_no |    make    |  model  | year
 -------------------+-----------+------------+---------+------
 Texas ABC-739      | A69352    | Ford       | Mustang |    2
 Florida TVP-347    | B43696    | Oldsmobile | Cutlass |    5
 New York MPO-22    | X83554    | Oldsmobile | Delta   |    1
 California 432-TFY | C43742    | Mercedes   | 190-D   |   99
 California RSK-629 | Y82935    | Toyota     | Camry   |    4
 Texas RSK-629      | U028365   | Jaguar     | XJS     |    4

K1 = {license_no}; K2 = {serial_no}; K3 = {model}; K4 = {make, year}

  • K1–K3 hanno un solo attributo
  • Togliere "make" o "year" da K4 crea duplicati
  • Solo una chiave candidata può essere la chiave scelta
Introduzione ai database relazionali in SQL

Scopriamo alcune chiavi!

Introduzione ai database relazionali in SQL

Preparing Video For Download...