X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2Ftables.sql;h=b881d7e0f1ac9eb28f2d26c3c2c6ed86b098a09f;hb=e3a869de07016defcf87ed014b6a6ddf986c6732;hp=1813f6cdf068e82d157dfd1dbfaa2caaab927156;hpb=f0bef2cf6994c49031d89425b3b3c56fd0e89a65;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/tables.sql b/maintenance/tables.sql index 1813f6cdf0..b881d7e0f1 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -611,6 +611,74 @@ CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timesta -- rows, such as change_tag. CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id); +-- +-- Slots represent an n:m relation between revisions and content objects. +-- A content object can have a specific "role" in one or more revisions. +-- Each revision can have multiple content objects, each having a different role. +-- +CREATE TABLE /*_*/slots ( + + -- reference to rev_id + slot_revision_id bigint unsigned NOT NULL, + + -- reference to role_id + slot_role_id smallint unsigned NOT NULL, + + -- reference to content_id + slot_content_id bigint unsigned NOT NULL, + + -- whether the content is inherited (1) or new in this revision (0) + slot_inherited tinyint unsigned NOT NULL DEFAULT 0, + + PRIMARY KEY ( slot_revision_id, slot_role_id ) +) /*$wgDBTableOptions*/; + +-- Index for finding revisions that modified a specific slot +CREATE INDEX /*i*/slot_role_inherited ON /*_*/slots (slot_revision_id, slot_role_id, slot_inherited); + +-- +-- The content table represents content objects. It's primary purpose is to provide the necessary +-- meta-data for loading and interpreting a serialized data blob to create a content object. +-- +CREATE TABLE /*_*/content ( + + -- ID of the content object + content_id bigint unsigned PRIMARY KEY AUTO_INCREMENT, + + -- Nominal size of the content object (not necessarily of the serialized blob) + content_size int unsigned NOT NULL, + + -- Nominal hash of the content object (not necessarily of the serialized blob) + content_sha1 varbinary(32) NOT NULL, + + -- reference to model_id + content_model smallint unsigned NOT NULL, + + -- URL-like address of the content blob + content_address varbinary(255) NOT NULL +) /*$wgDBTableOptions*/; + +-- +-- Normalization table for role names +-- +CREATE TABLE /*_*/slot_roles ( + role_id smallint PRIMARY KEY AUTO_INCREMENT, + role_name varbinary(64) NOT NULL +) /*$wgDBTableOptions*/; + +-- Index for looking of the internal ID of for a name +CREATE UNIQUE INDEX /*i*/role_name ON /*_*/slot_roles (role_name); + +-- +-- Normalization table for content model names +-- +CREATE TABLE /*_*/content_models ( + model_id smallint PRIMARY KEY AUTO_INCREMENT, + model_name varbinary(64) NOT NULL +) /*$wgDBTableOptions*/; + +-- Index for looking of the internal ID of for a name +CREATE UNIQUE INDEX /*i*/model_name ON /*_*/content_models (model_name); -- -- Track page-to-page hyperlinks within the wiki.