La diferència clau entre la clau estrangera i la clau primària és que la clau estrangera és una columna o un conjunt de columnes que fan referència a una clau primària o una clau candidata d'una altra taula, mentre que la clau primària és una columna o un conjunt de columnes que es pot utilitzar per identificar de manera única una fila en una taula.
Una columna o un conjunt de columnes que es poden utilitzar per identificar o accedir a una fila o un conjunt de files d'una base de dades s'anomena clau. Una clau primària en una base de dades relacional és una combinació de columnes d'una taula que identifiquen de manera única una fila de la taula. La clau estrangera en una base de dades relacional és un camp d'una taula que coincideix amb la clau primària d'una altra taula. La clau estrangera s'utilitza per creuar taules de referència.
Què és la clau estrangera?
La clau estrangera és una restricció de referència entre dues taules. Identifica una columna o un conjunt de columnes en una taula, anomenada taula de referència que fa referència a un conjunt de columnes d'una altra taula, anomenada taula de referència. La clau estrangera o les columnes de la taula de referència han de ser la clau primària o una clau candidata (una clau que es pot utilitzar com a clau primària) a la taula de referència. A més, les claus externes permeten enllaçar dades a través de diverses taules. Per tant, la clau estrangera no pot contenir valors que no apareguin a la taula a la qual fa referència. Aleshores, la referència proporcionada per la clau estrangera ajuda a enllaçar informació en diverses taules i això esdevindria essencial amb bases de dades normalitzades. Diverses files de la taula de referència poden fer referència a una sola fila de la taula de referència.
Figura 01: Assignació de clau estrangera
A l'estàndard ANSI SQL, la restricció FOREIGN KEY defineix les claus forasteres. A més, és possible definir les claus forasteres en crear la pròpia taula. Una taula pot tenir diverses claus externes i poden fer referència a taules diferents.
Què és la clau primària?
La clau primària és una columna o una combinació de columnes que defineix de manera única una fila en una taula d'una base de dades relacional. Una taula pot tenir com a màxim una clau primària. La clau primària fa complir la restricció implícita NOT NULL. Per tant, una columna amb clau primària no pot tenir valors NULL. La clau primària pot ser un atribut normal de la taula que es garanteix que és únic, com ara un número de seguretat social, o pot ser un valor únic generat pel sistema de gestió de bases de dades, com ara un identificador únic global (GUID) a Microsoft SQL Server.
Figura 02: clau primària
A més, la restricció PRIMARY KEY a ANSI SQL Standard defineix les claus primàries. També és possible definir una clau primària en crear la taula. A més d'això, SQL permet que la clau primària estigui formada per una o més columnes, i cada columna que s'inclou a la clau primària es defineix implícitament com NO NULL. Però alguns sistemes de gestió de bases de dades requereixen que les columnes de la clau primària de manera explícita NO NULL.
Quina diferència hi ha entre la clau estrangera i la clau primària?
Clau estrangera versus clau primària |
|
La clau estrangera és una columna o un grup de columnes en una taula de base de dades relacional que proporciona una associació entre les dades de dues taules. | La clau primària és una columna de taula de base de dades relacional especial o una combinació de diverses columnes que permet identificar de manera única tots els registres de la taula. |
NULL | |
La clau estrangera accepta el valor NULL. | El valor de la clau principal no pot ser NULL. |
Nombre de claus | |
La taula pot tenir diverses claus externes. | La taula només pot tenir una clau primària. |
Duplicació | |
Tuples poden tenir un valor duplicat per a un atribut de clau estrangera. | Dues tuples en una relació no poden tenir valors duplicats per a un atribut de clau primària. |
Resum: clau estrangera vs clau primària
La diferència entre la clau estrangera i la clau primària és que la clau estrangera és una columna o un conjunt de columnes que fan referència a una clau primària o una clau candidata d'una altra taula, mentre que la clau primària és una columna o un conjunt de columnes que es pot utilitzar per identificar de manera única una fila d'una taula.