在转换为SQL之前,我无法将关系" X" 转换为关系模型。这是我面临的问题的一个例子,到目前为止我所拥有的是:
Relation: X(1,2)
Key:2
IND:X[1]⊆A[1]
X[2]⊆C[2]
X[2]⊆D[2]
X[2]⊆E[2]
C[2]⊆X[2]
D[2]⊆X[2]
E[2]⊆X[2]
我遇到的主要问题是如何通过IND(包含依赖关系)来表示完全不相交的子类,因为从我的完全不相交的子类/超类关系中,每个子类都可以有自己的关系,但是超级阶级没有得到自己的关系。感谢
答案 0 :(得分:0)
以下是如何在SQL中表示不相交的子类型的示例
CREATE TABLE Products
(SKU INT NOT NULL PRIMARY KEY,
ProductType CHAR(1) NOT NULL
CHECK (ProductType IN ('B','C','D')),
Title VARCHAR(50) NOT NULL,
UNIQUE (SKU,ProductType));
CREATE TABLE Books
(SKU INT NOT NULL PRIMARY KEY,
ProductType CHAR(1) DEFAULT 'B' NOT NULL, CHECK (ProductType ='B'),
Pages SMALLINT NOT NULL,
FOREIGN KEY (SKU,ProductType)
REFERENCES Products (SKU,ProductType));
CREATE TABLE CDs
(SKU INT NOT NULL PRIMARY KEY,
ProductType CHAR(1) DEFAULT 'C' NOT NULL, CHECK (ProductType ='C'),
Tracks SMALLINT NOT NULL,
FOREIGN KEY (SKU,ProductType)
REFERENCES Products (SKU,ProductType));
CREATE TABLE DVDs
(SKU INT NOT NULL PRIMARY KEY,
ProductType CHAR(1) DEFAULT 'D' NOT NULL, CHECK (ProductType ='D'),
Duration SMALLINT NOT NULL,
FOREIGN KEY (SKU,ProductType)
REFERENCES Products (SKU,ProductType));