如何在SQL中创建具有不相交关系的TABLE

时间:2014-12-10 18:34:13

标签: sql oracle relationships

我正在尝试使用disjoint subtype relationship创建一个表。

例如,如果Supertype是家具,我有3 Subtypes个家具:椅子,沙发和桌子。

然后:

CREATE TABLE Furniture
(order_num NUMBER(15), desc VARCHAR2(20), type VARCHAR2(10));

如何选择选择椅子,沙发或桌子?

2 个答案:

答案 0 :(得分:2)

您可以在CREATE TABLE中使用REFERENCES。

CREATE TABLE Furniture_SubTypes
(
    sub_type     VARCHAR(10) PRIMARY KEY
);

INSERT INTO Furniture_SubTypes VALUES ('Chair');
INSERT INTO Furniture_SubTypes VALUES ('Couch');
INSERT INTO Furniture_SubTypes VALUES ('Table');

CREATE TABLE Furniture
(
    order_num    NUMBER,
    description  VARCHAR(20),
    sub_type     REFERENCES Furniture_SubTypes(sub_type)
);

答案 1 :(得分:1)

使用check约束:

CREATE TABLE Furniture (
    order_num NUMBER(15),
    description VARCHAR2(20),
    type VARCHAR2(10),
    check (type in ('chair', 'couch', 'table'))
);

请注意,desc是列名称的不良选择,因为它是SQL中的关键字(用于order by)。