lvergergsk / BibGallery-FrontEnd

0 stars 0 forks source link

Deliverable 03 #16

Closed kenkangxgwe closed 6 years ago

kenkangxgwe commented 6 years ago

Model Transformation

Our original ER Diagram (See Deliverable 2)

Our original Entity-Relationship Diagram is shown as above. To transfrom the ER Model, we simplify it in several by combine similar entities and relationships.

The result ER Diagram is shown below:

Transformed ER Diagram

Relation Schema

We write our relation schema according to the transformed ER Diagram. (See the UML diagram below):

Notes

The UML Diagram of relation schema

Commands & Screenshots

Publication

CREATE TABLE publication (
  publication_id NUMBER,
  in_collection  NUMBER,

  title          VARCHAR2(200),
  year           INTEGER,
  pages          INTEGER,
  ee             VARCHAR2(200),
  url            VARCHAR2(200),
  type           VARCHAR2(32),

  CONSTRAINT ck_type_publication
  CHECK (type = 'inproceeding' OR type = 'incollection' OR type = 'article' OR
         type = 'book' OR type = 'proceeding' OR type = 'journal'),

  CONSTRAINT pk_publication
  PRIMARY KEY (publication_id),

CONSTRAINT fk_collection_publlication
FOREIGN KEY (in_collection)
REFERENCES publication(publication_id)
);

Publication SQL

Publication Table

Person

CREATE TABLE person (
  person_id   NUMBER,

  affiliation VARCHAR2(200),
  homepage    VARCHAR(200),

  CONSTRAINT pk_person
  PRIMARY KEY (person_id)
);

**Person** SQL

**Person** Table

Collection

CREATE TABLE collection (
  publication_id NUMBER,

  booktitle      VARCHAR2(200),
  publisher      VARCHAR2(200),
  volume         INTEGER,

  CONSTRAINT pk_collection
  PRIMARY KEY (publication_id),

  CONSTRAINT fk_publication_collection
  FOREIGN KEY (publication_id)
  REFERENCES publication (publication_id)
);

**Collection** SQL

**Collection** Table

Name

CREATE TABLE name (
  name      VARCHAR2(200),
  person_id NUMBER,

  CONSTRAINT pk_name
  PRIMARY KEY (name),

  CONSTRAINT fk_person_name
  FOREIGN KEY (person_id)
  REFERENCES person (person_id)
);

**Name** SQL

**Name** Table

Publish

CREATE TABLE publish (
  person_id      NUMBER,
  publication_id NUMBER,
  type           VARCHAR2(32),

  CONSTRAINT ck_type_publish
  CHECK (type = 'write' OR type = 'edit'),

  CONSTRAINT pk_edit
  PRIMARY KEY (person_id, publication_id),

  CONSTRAINT fk_editor_edit
  FOREIGN KEY (person_id)
  REFERENCES person (person_id),

  CONSTRAINT fk_publication_edit
  FOREIGN KEY (publication_id)
  REFERENCES publication (publication_id)
);

*publish* SQL

*publish* Table

Coauthor

CREATE TABLE coauthor (
  predecessor NUMBER,
  successor   NUMBER,

  CONSTRAINT pk_coauthor
  PRIMARY KEY (predecessor, successor),

  CONSTRAINT fk_author_coauthor_from
  FOREIGN KEY (predecessor)
  REFERENCES person (person_id),

  CONSTRAINT fk_author_coauthor_to
  FOREIGN KEY (successor)
  REFERENCES person (person_id)
);

*coauthor* SQL

*coauthor* Table

Cite

CREATE TABLE cite (
  predecessor NUMBER,
  successor   NUMBER,

  CONSTRAINT pk_cite
  PRIMARY KEY (predecessor, successor),

  CONSTRAINT fk_publication_cite_from
  FOREIGN KEY (predecessor)
  REFERENCES publication (publication_id),

  CONSTRAINT fk_publication_cite_to
  FOREIGN KEY (successor)
  REFERENCES publication (publication_id)
);

*cite* SQL

*cite* Table

deliverable3.pdf

kenkangxgwe commented 6 years ago

Finish. Closed