, , , . , :
CREATE TABLE location (
id INT PRIMARY KEY,
table_name VARCHAR(45) NOT NULL CHECK (table_name in ('city', 'state')),
table_id INT NOT NULL
);
, , , location.table , location. , .
, :
SELECT l.id, COALESCE(s.name, c.name, 'Unknown Location') AS name
FROM location AS l
LEFT OUTER JOIN state AS s ON (l.id = s.location_id)
LEFT OUTER JOIN city AS c ON (l.id = c.location_id);
. , , location, city state.
CREATE TABLE location (
id INT PRIMARY KEY,
loc_type VARCHAR(45) NOT NULL CHECK (table_name in ('city', 'state')),
loc_name VARCHAR(45) NOT NULL,
parent_id INT,
FOREIGN KEY (parent_id) REFERENCES location(id)
);
SQL, , .