Objective
Create a comprehensive product documentation management system with versioning, multi-language support, user feedback, and analytics to support technical writing teams.
Step 1: Create Products Table
Define product catalog.
CREATE TABLE doc_products (
id INTEGER PRIMARY KEY,
product_code VARCHAR(50) NOT NULL UNIQUE,
product_name VARCHAR(200) NOT NULL,
product_line VARCHAR(100),
current_version VARCHAR(20),
description TEXT,
logo IMAGE(PNG),
documentation_url VARCHAR(500),
support_email VARCHAR(200),
status VARCHAR(50) DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Step 2: Create Documentation Categories Table
Organize documentation types.
CREATE TABLE doc_categories (
id INTEGER PRIMARY KEY,
category_code VARCHAR(50) NOT NULL UNIQUE,
category_name VARCHAR(100),
parent_category_id INTEGER,
description TEXT,
icon_class VARCHAR(50),
display_order INTEGER,
FOREIGN KEY (parent_category_id) REFERENCES doc_categories(id)
);
Step 3: Create Documents Table
Store documentation metadata.
CREATE TABLE documents (
id INTEGER PRIMARY KEY,
doc_code VARCHAR(50) NOT NULL UNIQUE,
product_id INTEGER NOT NULL,
category_id INTEGER NOT NULL,
title VARCHAR(300) NOT NULL,
description TEXT,
doc_type VARCHAR(50),
product_version VARCHAR(20),
author_id VARCHAR(50),
author_name VARCHAR(200),
content_text TEXT,
thumbnail IMAGE(JPEG),
reading_time_minutes INTEGER,
difficulty_level VARCHAR(20),
prerequisites TEXT,
status VARCHAR(50) DEFAULT 'draft',
published_at TIMESTAMP,
last_reviewed TIMESTAMP,
review_due DATE,
view_count INTEGER DEFAULT 0,
helpful_count INTEGER DEFAULT 0,
not_helpful_count INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP,
FOREIGN KEY (product_id) REFERENCES doc_products(id),
FOREIGN KEY (category_id) REFERENCES doc_categories(id)
);
Step 4: Create Document Versions Table
Track version history.
CREATE TABLE doc_versions (
id INTEGER PRIMARY KEY,
document_id INTEGER NOT NULL,
version_number VARCHAR(20),
change_summary TEXT,
content_text TEXT,
pdf_file PDF,
changed_by VARCHAR(100),
is_current BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (document_id) REFERENCES documents(id)
);
Step 5: Create Document Media Table
Store embedded media.
CREATE TABLE doc_media (
id INTEGER PRIMARY KEY,
document_id INTEGER NOT NULL,
media_type VARCHAR(50),
media_title VARCHAR(200),
description TEXT,
image_file IMAGE(PNG),
video_file VIDEO(MP4),
screenshot IMAGE(PNG),
diagram IMAGE(PNG),
file_size_mb DECIMAL(10, 2),
duration_seconds INTEGER,
display_order INTEGER,
alt_text TEXT,
caption TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (document_id) REFERENCES documents(id)
);
Step 6: Create Translations Table
Support localization.
CREATE TABLE doc_translations (
id INTEGER PRIMARY KEY,
document_id INTEGER NOT NULL,
language_code VARCHAR(10) NOT NULL,
language_name VARCHAR(50),
title VARCHAR(300),
description TEXT,
content_text TEXT,
pdf_file PDF,
translator_id VARCHAR(50),
translator_name VARCHAR(200),
translation_status VARCHAR(50) DEFAULT 'pending',
translated_at TIMESTAMP,
reviewed_at TIMESTAMP,
FOREIGN KEY (document_id) REFERENCES documents(id)
);
Step 7: Create User Feedback Table
Collect documentation feedback.
CREATE TABLE doc_feedback (
id INTEGER PRIMARY KEY,
document_id INTEGER NOT NULL,
user_id VARCHAR(50),
feedback_type VARCHAR(50),
is_helpful BOOLEAN,
rating INTEGER,
comment TEXT,
improvement_suggestion TEXT,
page_section VARCHAR(200),
submitted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status VARCHAR(50) DEFAULT 'new',
response_text TEXT,
responded_by VARCHAR(100),
responded_at TIMESTAMP,
FOREIGN KEY (document_id) REFERENCES documents(id)
);
Step 8: Insert Sample Products
Add product catalog.
INSERT INTO doc_products (id, product_code, product_name, product_line, current_version, description, status) VALUES
(1, 'PROD-X', 'Product X', 'Enterprise Suite', '3.2.1', 'Enterprise data management platform', 'active'),
(2, 'PROD-Y', 'Product Y', 'Enterprise Suite', '2.5.0', 'Analytics and reporting tool', 'active'),
(3, 'PROD-Z', 'Product Z', 'Developer Tools', '1.8.3', 'API development framework', 'active'),
(4, 'SDK-MOBILE', 'Mobile SDK', 'Developer Tools', '4.0.0', 'Mobile application development kit', 'active'),
(5, 'CLOUD-SVC', 'Cloud Services', 'Cloud Platform', '2024.1', 'Cloud infrastructure services', 'active');
Step 9: Insert Documentation Categories
Add category structure.
INSERT INTO doc_categories (id, category_code, category_name, parent_category_id, description, display_order) VALUES
(1, 'GET-START', 'Getting Started', NULL, 'Quick start guides and tutorials', 1),
(2, 'USER-GUIDE', 'User Guide', NULL, 'Comprehensive user documentation', 2),
(3, 'API-REF', 'API Reference', NULL, 'API documentation and specifications', 3),
(4, 'TUTORIALS', 'Tutorials', NULL, 'Step-by-step tutorials', 4),
(5, 'TROUBLESHOOT', 'Troubleshooting', NULL, 'Problem resolution guides', 5),
(6, 'INSTALL', 'Installation', 1, 'Installation guides', 1),
(7, 'CONFIG', 'Configuration', 1, 'Configuration guides', 2),
(8, 'FEATURES', 'Features', 2, 'Feature documentation', 1),
(9, 'ADMIN', 'Administration', 2, 'Admin guides', 2),
(10, 'REST-API', 'REST API', 3, 'REST API documentation', 1);
Step 10: Insert Documents
Add documentation content.
INSERT INTO documents (id, doc_code, product_id, category_id, title, description, doc_type, product_version, author_name, reading_time_minutes, difficulty_level, status, published_at, view_count, helpful_count) VALUES
(1, 'DOC-PX-QS-001', 1, 6, 'Quick Start Installation Guide', 'Get Product X running in 15 minutes', 'quick_start', '3.2.1', 'Technical Writer Team', 15, 'beginner', 'published', '2023-12-01 10:00:00', 12450, 892),
(2, 'DOC-PX-UG-001', 1, 8, 'Dashboard Overview', 'Understanding the main dashboard', 'user_guide', '3.2.1', 'Technical Writer Team', 20, 'beginner', 'published', '2023-12-05 10:00:00', 8920, 654),
(3, 'DOC-PX-API-001', 1, 10, 'REST API Getting Started', 'Introduction to the Product X API', 'api_guide', '3.2.1', 'API Documentation Team', 30, 'intermediate', 'published', '2023-12-10 10:00:00', 6540, 521),
(4, 'DOC-PX-TUT-001', 1, 4, 'Building Your First Report', 'Step-by-step report creation tutorial', 'tutorial', '3.2.1', 'Technical Writer Team', 45, 'beginner', 'published', '2023-12-15 10:00:00', 5280, 428),
(5, 'DOC-PY-QS-001', 2, 6, 'Product Y Installation', 'Installing Product Y on various platforms', 'quick_start', '2.5.0', 'Technical Writer Team', 20, 'beginner', 'published', '2024-01-05 10:00:00', 4120, 312),
(6, 'DOC-PZ-API-001', 3, 10, 'Product Z API Reference', 'Complete API reference documentation', 'api_reference', '1.8.3', 'API Documentation Team', 60, 'advanced', 'published', '2024-01-10 10:00:00', 3850, 298),
(7, 'DOC-PX-TS-001', 1, 5, 'Common Error Messages', 'Troubleshooting common errors', 'troubleshooting', '3.2.1', 'Support Team', 25, 'intermediate', 'published', '2024-01-12 10:00:00', 7820, 612),
(8, 'DOC-SDK-QS-001', 4, 6, 'Mobile SDK Quick Start', 'Getting started with mobile development', 'quick_start', '4.0.0', 'Mobile Team', 30, 'intermediate', 'published', '2024-01-15 10:00:00', 2980, 245);