¿Es posible hacer herencia en SQL?

Eso depende del RDBMS. Supongo que por “SQL” te refieres a un sistema de base de datos relacional que admite el lenguaje de consulta SQL en lugar de MS SQL Server específicamente. El lenguaje SQL tiene extensiones que admiten algunas características de herencia, sí. Además, algunos sistemas RDBMS admiten herencia más o menos fuertemente.

Características de ejemplo de Informix que conozco mejor:

  • Tipos de FILA que encapsulan un conjunto de campos de diferentes tipos, similar a una definición de fila. Los tipos ROW con nombre y sin nombre se pueden usar para definir columnas en una tabla. Útil cuando se ordena una estructura similar para atributos relacionados en las tablas. Un ejemplo sería un tipo de DIRECCIÓN para que todas las tablas que contienen direcciones contengan los mismos atributos.
  • Tablas escritas en las que se usa un tipo ROW con nombre para definir una tabla completa.
  • Los tipos ROW con nombre pueden ser supertipos o subtipos en otros tipos ROW que crean una jerarquía de herencia de tipo completo.
  • Los supremos y las subtablas se pueden definir utilizando supertipos y subtipos.

Ejemplos:

CREAR TIPO DE FILA location_t (
location_id SERIAL NO NULL,
loc_type CHAR (2),
empresa VARCHAR (20,0),
street_addr LIST (varchar (25) no es nulo),
ciudad VARCHAR (25,0),
país VARCHAR (25,0)
);

CREAR TIPO DE FILA loc_us_t (
state_code CHAR (2),
zip “informix” .ROW (entero de código, sufijo smallint),
teléfono CHAR (18)
) BAJO location_t;

CREAR TABLA location OF TYPE location_t;

CREAR TABLA location_us OF TYPE loc_us_t
BAJO ubicación;

> seleccione * desde la ubicación donde location_id = 1;

location_id 1
loc_type W
empresa Todos los artículos deportivos
street_addr LIST {‘213 Erstwild Court’}
ciudad Sunnyvale
país USA

1 fila (s) recuperadas.

> seleccione * de location_us donde location_id = 1;

location_id 1
loc_type W
empresa Todos los artículos deportivos
street_addr LIST {‘213 Erstwild Court’}
ciudad Sunnyvale
país USA
state_code CA
zip ROW (94806, 1002)
teléfono 408-789-8027

1 fila (s) recuperadas.

En las bases de datos relacionales, la herencia está diseñada mediante tablas de Supertipo y Subtipo. La tabla Subtipo hereda columnas de la tabla Supertype.

Esto es conceptualmente muy parecido a la herencia en la programación orientada a objetos.

Sí, en PostgreSQL y probablemente en bases de datos orientadas a objetos. Creo que no hay nada como esto en dbms puramente relacionales.