Найти в Дзене

как создать базу данных для (ит комп)333

1. Онлайн-инструмент для ER-диаграмм
Рекомендуем использовать dbdiagram.io – бесплатный веб-сервис для рисования ER-диаграмм через простой DSL (DBML). Поддерживает экспорт в PDF, PNG, MySQL/ PostgreSQL DDL и встраивание через <iframe>dbdiagram.ioholistics.io. 2. Код для создания диаграммы (DBML)
Скопируйте этот код в новое окно на dbdiagram.io. dbmlКопироватьРедактировать Table Department {
dep_id int [pk, increment]
dep_name varchar
}
Table Project_Category {
cat_id int [pk, increment]
cat_name varchar
}
Table Employee {
emp_id int [pk, increment]
first_name varchar
last_name varchar
working_hours_per_week int
dep_id int [ref: > Department.dep_id]
}
Table Project {
project_id int [pk, increment]
project_name varchar
start_date date
end_date date
cat_id int [ref: > Project_Category.cat_id]
}
Table Timesheet {
ts_id int [pk, increment]
emp_id int [ref: > Employee.emp_id]
project_id int [ref: > Project.project_id]
work_date date
hours_worked int

1. Онлайн-инструмент для ER-диаграмм
Рекомендуем использовать
dbdiagram.io – бесплатный веб-сервис для рисования ER-диаграмм через простой DSL (DBML). Поддерживает экспорт в PDF, PNG, MySQL/ PostgreSQL DDL и встраивание через <iframe>dbdiagram.ioholistics.io.

2. Код для создания диаграммы (DBML)
Скопируйте этот код в новое окно на dbdiagram.io.

dbmlКопироватьРедактировать

Table Department {
dep_id int [pk, increment]
dep_name varchar
}

Table Project_Category {
cat_id int [pk, increment]
cat_name varchar
}

Table Employee {
emp_id int [pk, increment]
first_name varchar
last_name varchar
working_hours_per_week int
dep_id int [ref: > Department.dep_id]
}

Table Project {
project_id int [pk, increment]
project_name varchar
start_date date
end_date date
cat_id int [ref: > Project_Category.cat_id]
}

Table Timesheet {
ts_id int [pk, increment]
emp_id int [ref: > Employee.emp_id]
project_id int [ref: > Project.project_id]
work_date date
hours_worked int
}

Table Users {
user_id int [pk, increment]
login varchar [unique]
password_hash varchar
role enum('Administrator','User')
is_blocked boolean
failed_attempts int
last_login_date date
must_change_password boolean
created_at datetime
}

3. Код встраивания диаграммы на сайте
После того как сохраните диаграмму, зайдите в «Share → Embed» и скопируйте <iframe>. Пример:

htmlКопироватьРедактировать

<iframe
width="800"
height="600"
src="https://dbdiagram.io/embed/ВАШ_DIAGRAM_ID"
frameborder="0"
allowfullscreen>
</iframe>

docs.dbdiagram.io

4. DDL-скрипт для MySQL

sqlКопироватьРедактировать

-- 1. Справочники
CREATE TABLE Department (
dep_id INT AUTO_INCREMENT PRIMARY KEY,
dep_name VARCHAR(100) NOT NULL
) ENGINE=InnoDB;

CREATE TABLE Project_Category (
cat_id INT AUTO_INCREMENT PRIMARY KEY,
cat_name VARCHAR(100) NOT NULL
) ENGINE=InnoDB;

-- 2. Основные таблицы
CREATE TABLE Employee (
emp_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
working_hours_per_week INT NOT NULL,
dep_id INT NOT NULL,
FOREIGN KEY (dep_id) REFERENCES Department(dep_id)
ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE=InnoDB;

CREATE TABLE Project (
project_id INT AUTO_INCREMENT PRIMARY KEY,
project_name VARCHAR(100) NOT NULL,
start_date DATE,
end_date DATE,
cat_id INT NOT NULL,
FOREIGN KEY (cat_id) REFERENCES Project_Category(cat_id)
ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE=InnoDB;

CREATE TABLE Timesheet (
ts_id INT AUTO_INCREMENT PRIMARY KEY,
emp_id INT NOT NULL,
project_id INT NOT NULL,
work_date DATE NOT NULL,
hours_worked INT NOT NULL,
FOREIGN KEY (emp_id) REFERENCES Employee(emp_id)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (project_id) REFERENCES Project(project_id)
ON UPDATE CASCADE ON DELETE CASCADE,
UNIQUE KEY ux_emp_proj_date (emp_id, project_id, work_date)
) ENGINE=InnoDB;

-- 3. Таблица пользователей
CREATE TABLE Users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
login VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
role ENUM('Administrator','User') NOT NULL DEFAULT 'User',
is_blocked BOOLEAN NOT NULL DEFAULT FALSE,
failed_attempts INT NOT NULL DEFAULT 0,
last_login_date DATE NULL,
must_change_password BOOLEAN NOT NULL DEFAULT FALSE,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

5. Пример заполнения данными

sqlКопироватьРедактировать

-- Справочники
INSERT INTO Department (dep_name) VALUES
('IT'), ('HR'), ('Finance');

INSERT INTO Project_Category (cat_name) VALUES
('Web Development'), ('Mobile App'), ('Data Analysis');

-- Сотрудники
INSERT INTO Employee (first_name, last_name, working_hours_per_week, dep_id) VALUES
('Ivan', 'Ivanov', 40, 1),
('Petr', 'Petrov', 40, 2);

-- Проекты
INSERT INTO Project (project_name, start_date, end_date, cat_id) VALUES
('Website Redesign', '2025-01-15', '2025-06-30', 1),
('Analytics Dashboard', '2025-03-01', '2025-12-31', 3);

-- Учёт времени
INSERT INTO Timesheet (emp_id, project_id, work_date, hours_worked) VALUES
(1, 1, '2025-06-01', 8),
(1, 1, '2025-06-02', 6),
(2, 2, '2025-06-01', 7);

-- Пользователи
INSERT INTO Users (login, password_hash, role, is_blocked, failed_attempts, last_login_date, must_change_password) VALUES
('admin', 'hashed_password', 'Administrator', FALSE, 0, '2025-06-07', TRUE),
('user1', 'hashed_password', 'User', FALSE, 0, '2025-06-06', FALSE);

Теперь у вас есть всё: онлайн-диаграмма, код для вставки на сайт, MySQL DDL и пример загрузки данных в базу.