SAPO Campus Wiki UA

Tdi10g5:DBSchema

O conteúdo publicado na Wiki do SAPO Campus de Aveiro deve ser considerado como estando em desenvolvimento. O seu conteúdo não foi validado cientificamente pela Universidade de Aveiro.

De WikiCampus

Tabela de conteúdo

BD Model

BD Model

people

  • personId : int, not null, default -1, autoincrement, primary key, // identificador
  • firstname : varchar // nomes
  • lastname : varchar // apelidos
  • birth : date // data de nascimento
  • nationality : varchar // nacionalidade
  • sex : varchar // M/F
  • cv : varchar // curriculum vitae
  • photo : varchar // fotografia

users

  • userId : int, not null, default -1, autoincrement, primary key, // identificador
  • login : varchar, not null, key // login em formato email *@*.*
  • password : varchar, password, not null // password encriptada
  • first : date // primeiro acesso ou data de registo ou data de validação (decidir)
  • last : date // ultimo acesso válido
  • personId : int, not null, default -1, foreign key (users) // identificador do utilizador

group

  • groupId : int, not null, default -1, autoincrement, primary key, // identificador
  • name : varchar, not null, key // nome do grupo
  • description : varchar // pequeno texto sobre o grupo

usersXgroup

  • userId : int, not null, default -1, foreign key (users), combined key // identificador do utilizador
  • groupId : int, not null, default -1, foreign key (groups), combined key // identificador do grupo

privacy

  • privacyId : int, not null, autoincrement, default -1, primary key // identificador
  • ObjectId : int, not null // id do objecto
  • ObjectClass : int, not null // tabela
  • attribute : varchar // coluna
  • privacy : varchar // publico ou privado

presences

  • presenceId : int, not null, default -1, autoincrement, primary key // identificador
  • personId : int, not null, default -1, foreign key (people) // identificador da pessoa
  • identifier : varchar, not null // identificador, dentro do serviço especificado, do utilizador
  • privacy : varchar, not null // identificador de privacidade para esta presença
  • data : varchar // outros dados para aceder a esse serviço, texto livre, observações, etc...

exemplo de registos:

  • snail mail / morada da pessoa
  • mail / mail(s) alternativos do utilizador
  • blog / url do blog
  • twitter / nome de utilizador
  • facebook / nome no fb
  • myspace / nome de utilizador
  • msn / mail do msn
  • gtalk / mail do gtalk
  • hi5 / nome de utliziador

interests

  • interestId : int, not null, autoincrement, primary key // identificador
  • parentId : int, default -1 // opcional, aponta a um interesse pai
  • name : varchar, not null // descriçao do interesse
  • visibility : bool, not null // visibilidade
  • userId : int, not null // id utilizador
  • idx : int, not null // index ordenável

exemplo de registos

  • 3, -1, Música
  • 6, 3, Mão Morta
  • 9, 6, Primavera de Destroços
  • neste caso formar-se-ia o ramo Música > Mão Morta > Primavera de Destroços

interestsXuser

  • interestId : int, not null, default -1, foreign key (interests), combined key // identificador do utilizador
  • userId : int, not null, default -1, foreign key (users), combined key // identificador do utilizador
  • tabela que relaciona interesses com utilizadores (muitos para muitos) de tal forma a que varios utilizadores possam partilhar do mesmo interesse

activity

  • activityId : int, not null, autoincrement, primary key // identificador
  • time : date, not null // timestamp do registo
  • action : varchar, not null // acção
  • info : varchar // informação variada
  • objectId : int, default -1 // identificador do objecto que provocou a acção (se -1 é porque não terá sido um objecto a provocá-la, para as tarfas de sistema por exemplo)
  • objectClass : varchar, default null // nome da classe do objecto que provocou a acção (se null é porque não terá sido um objecto a provocá-la, para as tarfas de sistema por exemplo)
  • subjectId : int, default -1 // identificador do objecto que sofreu a acção (se -1 é porque não terá sido executada sobre um objecto em concreto, por exemplo, um user quando faz login, não é sobre nenhum objecto em concreto)
  • subjectClass : varchar, default null // nome da classe do objecto que sofreu a acção (se null é porque não terá sido executada sobre um objecto em concreto, por exemplo, um user quando faz login, não é sobre nenhum objecto em concreto)
  • bulk : varchar // variáveis de contexto em que foi executada a acção em formato de query string ("param1=valor1&param2=valor2")

posts

  • postId : int, not null, default -1, autoincrement, primary key, // identificador
  • userId : int, not null, default -1, foreign key (users) // identificador do utilizador que criou o post
  • groupId : int, default -1, foreign key (group) // identificador do grupo onde foi criado o post (pode ser -1 já que pode ser o post de um utilizador sem ser para um grupo. para o seu perfil por exemplo)
  • headline : varchar, not null // titulo do post
  • body : varchar // titulo do post
  • permalink : varchar, not null // link

content

  • contentId : int, not null, default -1, autoincrement, primary key, // identificador
  • privacy : varchar, not null // publico ou privado

metaXcontent

  • metaXcontentId : int, not null, autoincrement, primary key // identificador
  • name : varchar, not null // nome
  • value : varchar // informação variada
  • type : varchar // informação variada
  • contentId : int, not null //

dump

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `tdi2010g5db1` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ; USE `tdi2010g5db1`;

-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`activity` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`activity` ( `activityId` INT(11) NOT NULL AUTO_INCREMENT ,

 `time` DATETIME NULL DEFAULT NULL ,
 `action` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
 `info` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
 `objectId` INT(255) NOT NULL ,
 `objectClass` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
 `subjectId` INT(255) NOT NULL ,
 `subjectClass` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
 `bulk` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
 PRIMARY KEY (`activityId`) )

ENGINE = MyISAM AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`groups` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`groups` (

 `groupId` BIGINT(20) NOT NULL AUTO_INCREMENT ,
 `name` VARCHAR(255) NOT NULL ,
 `description` VARCHAR(255) NULL DEFAULT NULL ,
 PRIMARY KEY (`groupId`) )

ENGINE = MyISAM AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`people` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`people` (

 `personId` BIGINT(20) NOT NULL AUTO_INCREMENT ,
 `firstname` VARCHAR(255) NOT NULL DEFAULT  ,
 `lastname` VARCHAR(255) NULL DEFAULT  ,
 `birth` DATETIME NULL DEFAULT NULL ,
 `nationality` VARCHAR(255) NULL DEFAULT 'Unknown' ,
 `sex` VARCHAR(1) NULL DEFAULT '?' ,
 `cv` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
 `photo` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
 PRIMARY KEY (`personId`) )

ENGINE = MyISAM AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`users` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`users` (

 `userId` BIGINT(20) NOT NULL AUTO_INCREMENT ,
 `login` VARCHAR(255) NOT NULL ,
 `password` VARCHAR(255) NULL DEFAULT  ,
 `first` DATETIME NULL DEFAULT NULL ,
 `last` DATETIME NULL DEFAULT NULL ,
 `personId` INT NULL ,
 PRIMARY KEY (`userId`) ,
 CONSTRAINT `personId`
   FOREIGN KEY (`personId`)
   REFERENCES `tdi2010g5db1`.`people` (`personId`)

) ENGINE = MyISAM AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`interests` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`interests` (

 `interestId` BIGINT(20) NOT NULL AUTO_INCREMENT ,
 `name` VARCHAR(255) NOT NULL ,
 `parentId` BIGINT NULL ,
 `visibility` TINYINT(1) NULL ,
 `idx` INT NULL ,
 `userId` INT NULL ,
 PRIMARY KEY (`interestId`) ,
 CONSTRAINT `userId`
   FOREIGN KEY (`userId`)
   REFERENCES `tdi2010g5db1`.`users` (`userId`))

ENGINE = MyISAM AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`interestsXuser` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`interestsXuser` (

 `interestId` INT NOT NULL ,
 `userId` VARCHAR(45) NOT NULL ,
 PRIMARY KEY (`interestId`, `userId`) ,
 CONSTRAINT `interestId`
   FOREIGN KEY (`interestId`)
   REFERENCES `tdi2010g5db1`.`interests` (`interestId`),
 CONSTRAINT `userId`
   FOREIGN KEY (`userId`)
   REFERENCES `tdi2010g5db1`.`users` (`userId`))

ENGINE = MyISAM DEFAULT CHARACTER SET = utf8;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`posts` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`posts` (

 `postId` INT(11) NOT NULL AUTO_INCREMENT ,
 `headline` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
 `body` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
 `permalink` VARCHAR(45) NULL ,
 `userId` INT NULL ,
 `groupId` INT NULL ,
 PRIMARY KEY (`postId`) ,
 CONSTRAINT `userId`
   FOREIGN KEY (`userId`)
   REFERENCES `tdi2010g5db1`.`users` (`userId`),
 CONSTRAINT `groupId`
   FOREIGN KEY (`groupId`)
   REFERENCES `tdi2010g5db1`.`groups` (`groupId`))

ENGINE = MyISAM AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`presences` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`presences` (

 `presenceId` INT(11) NOT NULL AUTO_INCREMENT ,
 `identifier` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NULL ,
 `data` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NULL ,
 `personId` INT NULL ,
 PRIMARY KEY (`presenceId`) ,
 CONSTRAINT `personId`
   FOREIGN KEY (`personId`)
   REFERENCES `tdi2010g5db1`.`people` (`personId`))

ENGINE = MyISAM AUTO_INCREMENT = 1 DEFAULT CHARACTER SET = utf8;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`usersXgroup` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`usersXgroup` (

 `userId` INT NOT NULL ,
 `groupId` INT NOT NULL ,
 PRIMARY KEY (`userId`, `groupId`) ,
 CONSTRAINT `userId`
   FOREIGN KEY (`userId`)
   REFERENCES `tdi2010g5db1`.`users` (`userId`),
 CONSTRAINT `groupId`
   FOREIGN KEY (`groupId`)
   REFERENCES `tdi2010g5db1`.`groups` (`groupId`))

ENGINE = MyISAM DEFAULT CHARACTER SET = utf8;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`privacy` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`privacy` (

 `privacyId` INT NOT NULL ,
 `objectId` INT NULL ,
 `objectClass` INT NULL ,
 `attribute` VARCHAR(45) NULL ,
 `privacy` VARCHAR(45) NULL ,
 PRIMARY KEY (`privacyId`) )

ENGINE = InnoDB DEFAULT CHARACTER SET = utf8;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`content` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`content` (

 `contentId` INT NOT NULL ,
 `privacy` VARCHAR(45) NULL ,
 PRIMARY KEY (`contentId`) )

ENGINE = InnoDB;


-- ----------------------------------------------------- -- Table `tdi2010g5db1`.`metaXcontent` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tdi2010g5db1`.`metaXcontent` (

 `metaXcontentId` INT NOT NULL ,
 `name` VARCHAR(45) NULL ,
 `value` VARCHAR(45) NULL ,
 `type` VARCHAR(45) NULL ,
 `contentId` INT NULL ,
 PRIMARY KEY (`metaXcontentId`) ,
 CONSTRAINT `contentId`
   FOREIGN KEY (`contentId`)
   REFERENCES `tdi2010g5db1`.`content` (`contentId`))

ENGINE = InnoDB DEFAULT CHARACTER SET = utf8;


SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;