De WikiCampus
Tabela de conteúdo |
BD Model
people
personId: int, not null, default -1, autoincrement, primary key, // identificadorfirstname: varchar // nomeslastname: varchar // apelidosbirth: date // data de nascimentonationality: varchar // nacionalidadesex: varchar // M/Fcv: varchar // curriculum vitaephoto: varchar // fotografia
users
userId: int, not null, default -1, autoincrement, primary key, // identificadorlogin: varchar, not null, key // login em formato email *@*.*password: varchar, password, not null // password encriptadafirst: date // primeiro acesso ou data de registo ou data de validação (decidir)last: date // ultimo acesso válidopersonId: int, not null, default -1, foreign key (users) // identificador do utilizador
group
groupId: int, not null, default -1, autoincrement, primary key, // identificadorname: varchar, not null, key // nome do grupodescription: varchar // pequeno texto sobre o grupo
usersXgroup
userId: int, not null, default -1, foreign key (users), combined key // identificador do utilizadorgroupId: int, not null, default -1, foreign key (groups), combined key // identificador do grupo
privacy
privacyId: int, not null, autoincrement, default -1, primary key // identificadorObjectId: int, not null // id do objectoObjectClass: int, not null // tabelaattribute: varchar // colunaprivacy: varchar // publico ou privado
presences
presenceId: int, not null, default -1, autoincrement, primary key // identificadorpersonId: int, not null, default -1, foreign key (people) // identificador da pessoaidentifier: varchar, not null // identificador, dentro do serviço especificado, do utilizadorprivacy: varchar, not null // identificador de privacidade para esta presençadata: 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 // identificadorparentId: int, default -1 // opcional, aponta a um interesse painame: varchar, not null // descriçao do interessevisibility: bool, not null // visibilidadeuserId: int, not null // id utilizadoridx: 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 utilizadoruserId: 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 // identificadortime: date, not null // timestamp do registoaction: varchar, not null // acçãoinfo: varchar // informação variadaobjectId: 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¶m2=valor2")
posts
postId: int, not null, default -1, autoincrement, primary key, // identificadoruserId: int, not null, default -1, foreign key (users) // identificador do utilizador que criou o postgroupId: 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 postbody: varchar // titulo do postpermalink: varchar, not null // link
content
contentId: int, not null, default -1, autoincrement, primary key, // identificadorprivacy: varchar, not null // publico ou privado
metaXcontent
metaXcontentId: int, not null, autoincrement, primary key // identificadorname: varchar, not null // nomevalue: varchar // informação variadatype: varchar // informação variadacontentId: 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;