Despot:Schema2: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
| Line 3: | Line 3: | ||
`id` mediumint(8) unsigned NOT NULL auto_increment, | `id` mediumint(8) unsigned NOT NULL auto_increment, | ||
`name` varchar(255) NOT NULL, | `name` varchar(255) NOT NULL, | ||
`description` varchar(255) NULL, | |||
PRIMARY KEY (`id`) | PRIMARY KEY (`id`) | ||
| Line 21: | Line 21: | ||
UNIQUE KEY `user_id` (`user_id`,`partition_id`), | UNIQUE KEY `user_id` (`user_id`,`partition_id`), | ||
KEY `class` (`class`) | KEY `class` (`class`) | ||
`partitions` | `partitions` | ||
| Line 56: | Line 45: | ||
PRIMARY KEY (`id`), | PRIMARY KEY (`id`), | ||
UNIQUE KEY `name` (`name`,`type`) | UNIQUE KEY `name` (`name`,`type`) | ||
`logs` (incomplete) | `logs` (incomplete) | ||
| Line 97: | Line 75: | ||
<span style="color:red">`partition_id` mediumint(8) unsigned NOT NULL,</span> | <span style="color:red">`partition_id` mediumint(8) unsigned NOT NULL,</span> | ||
PRIMARY KEY `id` | PRIMARY KEY `id` | ||
`vouchers` | `vouchers` | ||
Revision as of 22:21, 30 March 2007
Proposed Schema
`branches`
`id` mediumint(8) unsigned NOT NULL auto_increment, `name` varchar(255) NOT NULL, `description` varchar(255) NULL, PRIMARY KEY (`id`)
`files`
`partition_id` mediumint(8) unsigned NOT NULL, `repository_id` mediumint(8) unsigned NOT NULL, `branch_id` mediumint(8) unsigned NOT NULL default '0', `pattern` varchar(255) NOT NULL, KEY `partition_id` (`partition_id`), KEY `repository_id` (`repository_id`), KEY `branch_id` (`branch_id`)
`members`
`user_id` mediumint(8) unsigned NOT NULL,
`partition_id` mediumint(8) unsigned NOT NULL,
`class` enum('owner','peer','member') NOT NULL default 'member',
UNIQUE KEY `user_id` (`user_id`,`partition_id`),
KEY `class` (`class`)
`partitions`
`id` mediumint(8) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`state` enum('open','restricted','closed') NOT NULL default 'open',
`description` text,
`doclinks` mediumtext,
`newsgroups` mediumtext,
`parent_id` mediumint(8) unsigned NOT NULL default '0',
`private` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `name` (`name`),
KEY `parent_id` (`parent_id`)
`repositories`
`id` mediumint(8) unsigned NOT NULL auto_increment, `name` varchar(255) NOT NULL, `type` tinyint(3) unsigned NOT NULL, `root` varchar(255) NOT NULL, `vouchers_req` tinyint(3) unsigned NOT NULL default '2', `sr_req` tinyint(3) unsigned NOT NULL default '1', `private` tinyint(1) NOT NULL default '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`,`type`)
`logs` (incomplete)
`id` int(11) unsigned NOT NULL auto_increment,
`user_id` mediumint(8) unsigned NOT NULL,
`action` varchar(50) NOT NULL,
`field` varchar(30) NULL,
`time` datetime NOT NULL DEFAULT NOW()
PRIMARY KEY (`id`)
`restrictions`
`user_id` mediumint(8) unsigned NOT NULL, `partition_id` mediumint(8) unsigned NOT NULL, UNIQUE KEY `user_id` (`user_id`,`partition_id`)
`sessions`
`id` varchar(255) NOT NULL default '', `data` text, `expires` int(11) default NULL, PRIMARY KEY (`id`)
`syncneeded`
`repository_id` mediumint(8) unsigned NOT NULL, `needed` tinyint(1) NOT NULL default '0'
`tags` (incomplete)
`id` mediumint(8) unsigned NOT NULL auto_increment, `name` varchar(255) NOT NULL, `partition_id` mediumint(8) unsigned NOT NULL, PRIMARY KEY `id`
`vouchers`
`user_id` mediumint(8) unsigned NOT NULL, `partition_id` mediumint(8) unsigned NOT NULL, `voucher_id` mediumint(8) unsigned NOT NULL, `sr` tinyint(1) NOT NULL default '0', KEY `user_id` (`user_id`,`partition_id`,`voucher_id`)
Notes
- Make tags object agnostic (i.e. allow tagging users, partitions, etc. together with a single tag).
- Consider using InnoDB for several tables where ACID compliance is important.
- Also allows simplification of table relationships with real foreign keys and constraints.
- Replace *_changes tables with a unified and more comprehensive generic log table.
- Decide which log items should expire over time.