关系模型表示与总不相交实体的关系

时间:2016-01-28 08:43:08

标签: database database-design schema relational-database entity-relationship

在转换为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(包含依赖关系)来表示完全不相交的子类,因为从我的完全不相交的子类/超类关系中,每个子类都可以有自己的关系,但是超级阶级没有得到自己的关系。感谢

Sample ER Diagram

1 个答案:

答案 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));