ozeigermann    2003/11/26 02:07:09

  Modified:    proposals/stores/org/apache/slide/store/impl/rdbms
                        MySqlSchema.sql
  Log:
  Added improvements thanks to Alexander Wendt:
  - tinyint for Booleans,
  - dropped indexes (because primary and unique are indexes)
  - Single or first unique became primary
  
  Submitted by: Alexander Wendt
  
  Revision  Changes    Path
  1.2       +152 -147  
jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/MySqlSchema.sql
  
  Index: MySqlSchema.sql
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/MySqlSchema.sql,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MySqlSchema.sql   25 Nov 2003 09:19:17 -0000      1.1
  +++ MySqlSchema.sql   26 Nov 2003 10:07:09 -0000      1.2
  @@ -1,3 +1,5 @@
  +# --------------------------------------------------------
  +
   drop table if exists OBJECT;
   drop table if exists CHILDREN;
   drop table if exists LINKS;
  @@ -13,192 +15,195 @@
   drop table if exists LABEL;
   drop table if exists URI;
   
  +# --------------------------------------------------------
   
   CREATE TABLE URI (
  -    URI_ID          INTEGER              NOT NULL AUTO_INCREMENT,
  -    URI_STRING      VARCHAR(255)     NOT NULL,
  -    PRIMARY KEY(URI_ID)
  -) TYPE=INNODB;
  -
  -
  -CREATE INDEX URI_IX1 ON URI (URI_ID);
  -CREATE INDEX URI_IX2 ON URI (URI_STRING);
  +  URI_ID       int(11)       NOT NULL auto_increment,
  +  URI_STRING   varchar(255)  NOT NULL,
  +  PRIMARY KEY  (URI_ID),
  +  KEY URI_IX2  (URI_STRING)
  +) TYPE=InnoDB;
   
  +# --------------------------------------------------------
   
   CREATE TABLE OBJECT (
  -    URI_ID          INTEGER              NOT NULL,
  -    CLASS_NAME      VARCHAR(255)     NOT NULL,
  -    PRIMARY KEY (URI_ID)
  -
  -) TYPE=INNODB;
  +  URI_ID      int(11)       NOT NULL,
  +  CLASS_NAME  varchar(255)  NOT NULL,
  +  PRIMARY KEY (URI_ID)
  +) TYPE=InnoDB;
   
  -CREATE INDEX OBJECT_IX1 ON OBJECT (URI_ID);
  -ALTER TABLE OBJECT ADD CONSTRAINT OBJECT_FK1 FOREIGN KEY OBJECT_FK1(URI_ID) 
REFERENCES URI (URI_ID);
  +ALTER TABLE OBJECT ADD CONSTRAINT OBJECT_FK1 FOREIGN KEY OBJECT_FK1(URI_ID)
  +REFERENCES URI (URI_ID);
   
  +# --------------------------------------------------------
   
   CREATE TABLE CHILDREN (
  -    URI_ID          INTEGER              NOT NULL,
  -    CHILD_URI_ID    INTEGER              NOT NULL,
  -    PRIMARY KEY (URI_ID, CHILD_URI_ID)
  -) TYPE=INNODB;
  -
  -
  -CREATE INDEX CHILDREN_IX1 ON CHILDREN (URI_ID);
  -ALTER TABLE CHILDREN ADD CONSTRAINT CHILDREN_FK1 FOREIGN KEY CHILDREN_FK1(URI_ID) 
REFERENCES URI (URI_ID);
  -
  -CREATE INDEX CHILD_IX2 ON CHILDREN (CHILD_URI_ID);
  -ALTER TABLE CHILDREN ADD CONSTRAINT CHILDREN_FK2 FOREIGN KEY 
CHILDREN_FK2(CHILD_URI_ID) REFERENCES URI (URI_ID);
  -
  -
  -CREATE TABLE LINKS (                 
  -    URI_ID          INTEGER              NOT NULL,
  -    LINK_TO_ID   INTEGER              NOT NULL,
  -    PRIMARY KEY (URI_ID, LINK_TO_ID)
  -) TYPE=INNODB;
  -
  -CREATE INDEX LINK_IX1 ON LINKS (URI_ID);
  -ALTER TABLE LINKS ADD CONSTRAINT LINK_FK1 FOREIGN KEY LINK_FK1(URI_ID) REFERENCES 
URI (URI_ID);
  -
  -CREATE INDEX LINK_IX2 ON LINKS (LINK_TO_ID);
  -ALTER TABLE LINKS ADD CONSTRAINT LINK_FK2 FOREIGN KEY LINK_FK2(LINK_TO_ID) 
REFERENCES URI (URI_ID);
  +  URI_ID         int(11)  NOT NULL,
  +  CHILD_URI_ID   int(11)  NOT NULL,
  +  PRIMARY KEY    (URI_ID,CHILD_URI_ID),
  +  key CHILD_IX2  (CHILD_URI_ID)
  +) TYPE=InnoDB;
  +
  +ALTER TABLE CHILDREN ADD CONSTRAINT CHILDREN_FK1 FOREIGN KEY
  +CHILDREN_FK1(URI_ID) REFERENCES URI (URI_ID);
  +ALTER TABLE CHILDREN ADD CONSTRAINT CHILDREN_FK2 FOREIGN KEY
  +CHILDREN_FK2(CHILD_URI_ID) REFERENCES URI (URI_ID);
  +
  +# --------------------------------------------------------
  +
  +CREATE TABLE LINKS (
  +  URI_ID        int(11)  NOT NULL,
  +  LINK_TO_ID    int(11)  NOT NULL,
  +  PRIMARY KEY   (URI_ID,LINK_TO_ID),
  +  key LINK_IX2  (LINK_TO_ID)
  +) TYPE=InnoDB;
  +
  +ALTER TABLE LINKS ADD CONSTRAINT LINK_FK1 FOREIGN KEY LINK_FK1(URI_ID)
  +REFERENCES URI (URI_ID);
  +ALTER TABLE LINKS ADD CONSTRAINT LINK_FK2 FOREIGN KEY LINK_FK2(LINK_TO_ID)
  +REFERENCES URI (URI_ID);
   
  +# --------------------------------------------------------
   
   CREATE TABLE LOCKS (
  -    LOCK_ID       INTEGER              NOT NULL,
  -    OBJECT_ID       INTEGER              NOT NULL,
  -    SUBJECT_ID     INTEGER             NOT NULL,
  -    TYPE_ID      INTEGER             NOT NULL,
  -    EXPIRATION_DATE      DATE             NOT NULL,
  -    IS_INHERITABLE     INTEGER              NOT NULL,
  -    IS_EXCLUSIVE        INTEGER              NOT NULL,
  -    UNIQUE (LOCK_ID)
  -)TYPE=INNODB;
  -
  -CREATE INDEX LOCK_IX1 ON LOCKS (LOCK_ID);
  -ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK1 FOREIGN KEY LOCK_FK1(LOCK_ID) REFERENCES 
URI (URI_ID);
  -
  -CREATE INDEX LOCK_IX2 ON LOCKS (OBJECT_ID);
  -ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK2 FOREIGN KEY LOCK_FK2(OBJECT_ID) 
REFERENCES URI (URI_ID);
  -
  -CREATE INDEX LOCK_IX3 ON LOCKS (SUBJECT_ID);
  -ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK3 FOREIGN KEY LOCK_FK3(SUBJECT_ID) 
REFERENCES URI (URI_ID);
  -
  -CREATE INDEX LOCK_IX4 ON LOCKS (TYPE_ID);
  -ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK4 FOREIGN KEY LOCK_FK4(TYPE_ID) REFERENCES 
URI (URI_ID);
  +  LOCK_ID          int(11)     NOT NULL,
  +  OBJECT_ID        int(11)     NOT NULL,
  +  SUBJECT_ID       int(11)     NOT NULL,
  +  TYPE_ID          int(11)     NOT NULL,
  +  EXPIRATION_DATE  date        NOT NULL,
  +  IS_INHERITABLE   tinyint(1)  NOT NULL,
  +  IS_EXCLUSIVE     tinyint(1)  NOT NULL,
  +  PRIMARY KEY      (LOCK_ID),
  +  KEY LOCK_IX2     (OBJECT_ID),
  +  KEY LOCK_IX3     (SUBJECT_ID),
  +  KEY LOCK_IX4     (TYPE_ID)
  +) TYPE=InnoDB;
  +
  +ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK1 FOREIGN KEY LOCK_FK1(LOCK_ID)
  +REFERENCES URI (URI_ID);
  +ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK2 FOREIGN KEY LOCK_FK2(OBJECT_ID)
  +REFERENCES URI (URI_ID);
  +ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK3 FOREIGN KEY LOCK_FK3(SUBJECT_ID)
  +REFERENCES URI (URI_ID);
  +ALTER TABLE LOCKS ADD CONSTRAINT LOCK_FK4 FOREIGN KEY LOCK_FK4(TYPE_ID)
  +REFERENCES URI (URI_ID);
   
  +# --------------------------------------------------------
   
   CREATE TABLE BRANCH (
  -    BRANCH_ID       INTEGER              NOT NULL AUTO_INCREMENT,
  -    BRANCH_STRING     VARCHAR(255)     NOT NULL,
  -    PRIMARY KEY (BRANCH_ID)
  -)TYPE=INNODB;
  +  BRANCH_ID      int(11)       NOT NULL auto_increment,
  +  BRANCH_STRING  varchar(255)  NOT NULL,
  +  PRIMARY KEY    (BRANCH_ID)
  +) TYPE=InnoDB;
   
  +# --------------------------------------------------------
   
   CREATE TABLE LABEL (
  -    LABEL_ID        INTEGER              NOT NULL AUTO_INCREMENT,
  -    LABEL_STRING      VARCHAR(255)     NOT NULL,
  -    PRIMARY KEY (LABEL_ID)
  -)TYPE=INNODB;
  +  LABEL_ID      int(11)       NOT NULL auto_increment,
  +  LABEL_STRING  varchar(255)  NOT NULL,
  +  PRIMARY KEY   (LABEL_ID)
  +) TYPE=InnoDB;
   
  +# --------------------------------------------------------
   
   CREATE TABLE VERSION (
  -    URI_ID          INTEGER              NOT NULL,
  -    IS_VERSIONED       INTEGER              NOT NULL,
  -    PRIMARY KEY(URI_ID)
  +  URI_ID        int(11)     NOT NULL,
  +  IS_VERSIONED  tinyint(1)  NOT NULL,
  +  PRIMARY KEY   (URI_ID)
  +) TYPE=InnoDB;
   
  -)TYPE=INNODB;
  -
  -
  -CREATE INDEX VERSION_IX1 ON VERSION (URI_ID);
  -ALTER TABLE VERSION ADD CONSTRAINT REVISON_FK1 FOREIGN KEY VERSION_FK1(URI_ID) 
REFERENCES URI (URI_ID);
  +ALTER TABLE VERSION ADD CONSTRAINT REVISON_FK1 FOREIGN KEY
  +VERSION_FK1(URI_ID) REFERENCES URI (URI_ID);
   
  +# --------------------------------------------------------
   
   CREATE TABLE VERSION_HISTORY (
  -    VERSION_ID     INTEGER              NOT NULL AUTO_INCREMENT,
  -    URI_ID          INTEGER              NOT NULL,
  -    BRANCH_ID       INTEGER              NOT NULL,
  -    REVISION_NO VARCHAR(20)      NOT NULL,
  -    PRIMARY KEY (VERSION_ID),
  -    UNIQUE(URI_ID, BRANCH_ID, REVISION_NO)
  -
  -)TYPE=INNODB;
  -
  -CREATE INDEX VERSION_HISTORY_IX1 ON VERSION_HISTORY (URI_ID);
  -ALTER TABLE VERSION_HISTORY ADD CONSTRAINT VERSION_HISTORY_FK1 FOREIGN KEY 
VERSION_HISTORY_FK1(URI_ID) REFERENCES URI (URI_ID);
  -
  -CREATE INDEX VERSION_HISTORY_IX2 ON VERSION_HISTORY(BRANCH_ID);
  -ALTER TABLE VERSION_HISTORY ADD CONSTRAINT VERSION_HISTORY_FK2 FOREIGN KEY 
VERSION_HISTORY_FK2(BRANCH_ID) REFERENCES BRANCH (BRANCH_ID);
  +  VERSION_ID   int(11)      NOT NULL auto_increment,
  +  URI_ID       int(11)      NOT NULL,
  +  BRANCH_ID    int(11)      NOT NULL,
  +  REVISION_NO  varchar(20)  NOT NULL,
  +  PRIMARY KEY  (VERSION_ID),
  +  UNIQUE KEY URI_ID (BRANCH_ID,URI_ID,REVISION_NO),
  +  KEY URI_ID_IX3 (URI_ID)
  +) TYPE=InnoDB;
  +
  +ALTER TABLE VERSION_HISTORY ADD CONSTRAINT VERSION_HISTORY_FK1 FOREIGN KEY
  +VERSION_HISTORY_FK1(URI_ID) REFERENCES URI (URI_ID);
  +ALTER TABLE VERSION_HISTORY ADD CONSTRAINT VERSION_HISTORY_FK2 FOREIGN KEY
  +VERSION_HISTORY_FK2(BRANCH_ID) REFERENCES BRANCH (BRANCH_ID);
   
  +# --------------------------------------------------------
   
   CREATE TABLE VERSION_PREDS (
  -    VERSION_ID        INTEGER           NOT NULL,
  -    PREDECESSOR_ID     INTEGER           NOT NULL,
  -    UNIQUE (VERSION_ID, PREDECESSOR_ID)
  -)TYPE=INNODB;
  -
  -CREATE INDEX VERSION_PREDS_IX1 ON VERSION_PREDS (VERSION_ID);
  -ALTER TABLE VERSION_PREDS ADD CONSTRAINT REVISON_PREDS_FK1 FOREIGN KEY 
VERSION_PREDS_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  -
  -CREATE INDEX VERSION_PREDS_IX2 ON VERSION_PREDS (PREDECESSOR_ID);
  -ALTER TABLE VERSION_PREDS ADD CONSTRAINT REVISON_PREDS_FK2 FOREIGN KEY 
VERSION_PREDS_FK2(PREDECESSOR_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  +  VERSION_ID      int(11)  NOT NULL,
  +  PREDECESSOR_ID  int(11)  NOT NULL,
  +  PRIMARY KEY     (VERSION_ID,PREDECESSOR_ID),
  +  KEY PREDECESSOR_ID_IX2 (PREDECESSOR_ID)
  +) TYPE=InnoDB;
  +
  +ALTER TABLE VERSION_PREDS ADD CONSTRAINT REVISON_PREDS_FK1 FOREIGN KEY
  +VERSION_PREDS_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  +ALTER TABLE VERSION_PREDS ADD CONSTRAINT REVISON_PREDS_FK2 FOREIGN KEY
  +VERSION_PREDS_FK2(PREDECESSOR_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
   
  +# --------------------------------------------------------
   
   CREATE TABLE VERSION_LABELS (
  -    VERSION_ID        INTEGER           NOT NULL,
  -    LABEL_ID           INTEGER           NOT NULL,
  -    UNIQUE (VERSION_ID, LABEL_ID)
  -)TYPE=INNODB;
  +  VERSION_ID   int(11)  NOT NULL,
  +  LABEL_ID     int(11)  NOT NULL,
  +  PRIMARY KEY  (VERSION_ID,LABEL_ID),
  +  KEY LABEL_ID_IX2 (LABEL_ID)
  +) TYPE=InnoDB;
  +
  +ALTER TABLE VERSION_LABELS ADD CONSTRAINT REVISON_LABELS_FK1 FOREIGN KEY
  +VERSION_LABELS_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  +ALTER TABLE VERSION_LABELS ADD CONSTRAINT REVISON_LABELS_FK2 FOREIGN KEY
  +VERSION_LABELS_FK2(LABEL_ID) REFERENCES LABEL (LABEL_ID);
   
  -
  -CREATE INDEX VERSION_LABELS_IX1 ON VERSION_LABELS (VERSION_ID);
  -ALTER TABLE VERSION_LABELS ADD CONSTRAINT REVISON_LABELS_FK1 FOREIGN KEY 
VERSION_LABELS_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  -
  -CREATE INDEX VERSION_LABELS_IX2 ON VERSION_LABELS (LABEL_ID);
  -ALTER TABLE VERSION_LABELS ADD CONSTRAINT REVISON_LABELS_FK2 FOREIGN KEY 
VERSION_LABELS_FK2(LABEL_ID) REFERENCES LABEL (LABEL_ID);
  +# --------------------------------------------------------
   
   CREATE TABLE VERSION_CONTENT (
  -    VERSION_ID        INTEGER           NOT NULL,
  -    CONTENT            BLOB NOT NULL,
  -    UNIQUE(VERSION_ID)
  -)TYPE=INNODB;
  +  VERSION_ID   int(11)  NOT NULL,
  +  CONTENT      blob     NOT NULL,
  +  PRIMARY KEY  (VERSION_ID)
  +) TYPE=InnoDB;
   
  -CREATE INDEX VERSION_CONTENT_IX1 ON VERSION_CONTENT (VERSION_ID);
  -ALTER TABLE VERSION_CONTENT ADD CONSTRAINT REVISON_CONTENT_FK1 FOREIGN KEY 
VERSION_CONTENT_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  +ALTER TABLE VERSION_CONTENT ADD CONSTRAINT REVISON_CONTENT_FK1 FOREIGN KEY
  +VERSION_CONTENT_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
   
  +# --------------------------------------------------------
   
   CREATE TABLE PROPERTIES (
  -    VERSION_ID        INTEGER           NOT NULL,
  -    PROPERTY_NAMESPACE VARCHAR(50)        NOT NULL,
  -    PROPERTY_NAME      VARCHAR(50)        NOT NULL,
  -    PROPERTY_VALUE     VARCHAR(255)       NOT NULL,
  -    PROPERTY_TYPE      VARCHAR(50)        NOT NULL,   
  -    IS_PROTECTED          INTEGER           NOT NULL,
  -    UNIQUE (VERSION_ID, PROPERTY_NAMESPACE, PROPERTY_NAME)
  -)TYPE=INNODB;
  +  VERSION_ID          int(11)       NOT NULL,
  +  PROPERTY_NAMESPACE  varchar(50)   NOT NULL,
  +  PROPERTY_NAME       varchar(50)   NOT NULL,
  +  PROPERTY_VALUE      varchar(255)  NOT NULL,
  +  PROPERTY_TYPE       varchar(50)   NOT NULL,
  +  IS_PROTECTED        tinyint(1)    NOT NULL,
  +  PRIMARY KEY         (VERSION_ID,PROPERTY_NAMESPACE,PROPERTY_NAME)
  +) TYPE=InnoDB;
   
  -CREATE INDEX PROPERTIES_IX1 ON PROPERTIES (VERSION_ID);
  -ALTER TABLE PROPERTIES ADD CONSTRAINT PROPERTIES_FK1 FOREIGN KEY 
PROPERTIES_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
  +ALTER TABLE PROPERTIES ADD CONSTRAINT PROPERTIES_FK1 FOREIGN KEY
  +PROPERTIES_FK1(VERSION_ID) REFERENCES VERSION_HISTORY (VERSION_ID);
   
  +# --------------------------------------------------------
   
   CREATE TABLE PERMISSIONS (
  -    OBJECT_ID       INTEGER              NOT NULL,
  -    SUBJECT_ID     INTEGER             NOT NULL,
  -    ACTION_ID      INTEGER             NOT NULL,
  -    VERSION_NO VARCHAR(20),
  -    IS_INHERITABLE     INTEGER              NOT NULL,
  -    IS_NEGATIVE        INTEGER              NOT NULL,
  -    SUCCESSION INTEGER NOT NULL,
  -    UNIQUE (OBJECT_ID, SUBJECT_ID, ACTION_ID),
  -    UNIQUE (OBJECT_ID, SUCCESSION)
  -)TYPE=INNODB;
  -
  -CREATE INDEX PERMISSIONS_IX1 ON PERMISSIONS (OBJECT_ID);
  -ALTER TABLE PERMISSIONS ADD CONSTRAINT PERMISSIONS_FK1 FOREIGN KEY 
PERMISSIONS_FK1(OBJECT_ID) REFERENCES URI (URI_ID);
  -
  -CREATE INDEX PERMISSIONS_IX2 ON PERMISSIONS (SUBJECT_ID);
  -ALTER TABLE PERMISSIONS ADD CONSTRAINT PERMISSIONS_FK2 FOREIGN KEY 
PERMISSIONS_FK2(SUBJECT_ID) REFERENCES URI (URI_ID);
  -
  -CREATE INDEX PERMISSIONS_IX3 ON PERMISSIONS (ACTION_ID);
  -ALTER TABLE PERMISSIONS ADD CONSTRAINT PERMISSIONS_FK3 FOREIGN KEY 
PERMISSIONS_FK3(ACTION_ID) REFERENCES URI (URI_ID);
  -
  -
  +  OBJECT_ID       int(11)      NOT NULL,
  +  SUBJECT_ID      int(11)      NOT NULL,
  +  ACTION_ID       int(11)      NOT NULL,
  +  VERSION_NO      varchar(20),
  +  IS_INHERITABLE  tinyint(1)   NOT NULL,
  +  IS_NEGATIVE     tinyint(1)   NOT NULL,
  +  SUCCESSION      int(11)      NOT NULL,
  +  PRIMARY KEY     (SUBJECT_ID,OBJECT_ID,ACTION_ID),
  +  UNIQUE KEY OBJECT_ID_2 (OBJECT_ID,SUCCESSION),
  +  KEY ACTION_ID_IX3 (ACTION_ID)
  +) TYPE=InnoDB;
  +
  +ALTER TABLE PERMISSIONS ADD CONSTRAINT PERMISSIONS_FK1 FOREIGN KEY
  +PERMISSIONS_FK1(OBJECT_ID) REFERENCES URI (URI_ID);
  +ALTER TABLE PERMISSIONS ADD CONSTRAINT PERMISSIONS_FK2 FOREIGN KEY
  +PERMISSIONS_FK2(SUBJECT_ID) REFERENCES URI (URI_ID);
  +ALTER TABLE PERMISSIONS ADD CONSTRAINT PERMISSIONS_FK3 FOREIGN KEY
  +PERMISSIONS_FK3(ACTION_ID) REFERENCES URI (URI_ID); 
  \ No newline at end of file
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to