Ich würde vorschlagen:
CREATE TABLE country(
country_id serial PRIMARY KEY
, country text NOT NULL
);
CREATE TABLE region(
region_id serial PRIMARY KEY
, country_id int NOT NULL REFERENCES country
, region text NOT NULL
);
- Verwenden Sie keine CaMeL-Case-Namen. Lesen Sie das Handbuch über Bezeichner.
- Verwenden Sie Eigennamen. Nie
id
odername
, die nicht beschreibend sind. - Der zugrunde liegende Typ eines
serial
istinteger
. Machen Sie die referenzierende Spalteinteger
.
Aufgrund der Fremdschlüsselreferenzregion.country_id
kann nur Werte enthalten, die incountry.country_id
vorhanden sind (oderNULL
). Ihre Überlegungen zu Werten> 2^31 sind unangebracht. - Demonstration einer kürzeren Syntax für die PK- und FK-Definition (optional). Lesen Sie das Handbuch zu
CREATE TABLE
.
Codebeispiel mit weiteren Ratschlägen: