powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь в создании/корректировке БД по простой задаче
4 сообщений из 4, страница 1 из 1
Нужна помощь в создании/корректировке БД по простой задаче
    #39821228
SP236
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!
Недавно начал разбираться в языке SQL, выбрал СУБД MySQL.
Имеется задача, связанная с игрой. Нужно создать базу данных со следующими данными: SteamID, имя_сервера, текущая_дата_со_временем, количество_заходов_на_сервер. Смысл в том, чтобы в запросе по SteamID вывести список серверов с датами пребывания на них. 1 SteamID может иметь много серверов, 1 сервер может иметь много дат.

Схема:
Код: plaintext
1.
2.
3.
4.
5.
6.
SteamID1
	сервер1
		дата1
		дата2
	сервер2
		дата3
		дата4

За месяц может набраться до 10000-15000 SteamID (это чтобы представить объём БД). SteamID - уникальный, имена серверов - уникальны.
Т.к. опыта нет, то не особо представляю, в каких таблицах и каких столбцах эти данные лучше хранить. Составил следующий запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE DATABASE ark;
CREATE TABLE steamid_t (
	id MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
	steamid BIGINT(20) UNSIGNED NOT NULL,
	PRIMARY KEY (id)
);
CREATE TABLE server_t (
	id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
	server_name VARCHAR(64) NOT NULL,
	PRIMARY KEY (id)
);
CREATE TABLE main (
	id_steamid MEDIUMINT(8) UNSIGNED NOT NULL,
	id_server_name SMALLINT(5) UNSIGNED NOT NULL,
	time INT(10) UNSIGNED NOT NULL,
	num_of_visits SMALLINT(5) UNSIGNED NOT NULL DEFAULT 0,
	FOREIGN KEY (id_steamid) REFERENCES steamid_t (id),
	FOREIGN KEY (id_server_name) REFERENCES server_t (id)
);


Некоторые комментарии по нему:
* Дата (столбец time) выбрана как INT, т.к. в дальнейшем предполагаю записывать дату в Unix-формате через C++-программу (а там именно в таком виде будет получена дата и время).
* MEDIUMINT(8) - числа в скобках указаны рандомно, т.к. пока не разобрался, зачем они нужны.
* FOREIGN KEY - не уверен, что надо, а если надо, то не уверен, что правильно сделал.
* NOT NULL DEFAULT 0 - что означает данная запись (в каких случаях значение будет равно 0)?

Вопросы:
1. Насколько верно построена БД? Что нужно в ней изменить, чтобы стало лучше?
2. Как должен выглядеть запрос на добавление одной записи на языке SQL? Ведь добавить нужно во все таблицы, а я пока не очень понимаю, как добавлять связанные записи. Запросы в дальнейшем будут производиться через программу на C++.
...
Рейтинг: 0 / 0
Нужна помощь в создании/корректировке БД по простой задаче
    #39821454
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SP236Вопросы:
1. Насколько верно построена БД?Достаточно того, что Вы не провели анализ, не выделили сущности и атрибуты, связи и процессы, и построили свою БД по наитию, разглядев всё для этого необходимое на потолке.

Посему 99% за то, что БД спроектирована неверно.
...
Рейтинг: 0 / 0
Нужна помощь в создании/корректировке БД по простой задаче
    #39821485
angro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SP236,

а в mysql нет типа датавремя, чтобы не инт был?

если есть то то выбрать все различные даты с отбором по серверу
...
Рейтинг: 0 / 0
Нужна помощь в создании/корректировке БД по простой задаче
    #39821519
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angroа в mysql нет типа датавремя, чтобы не инт был?
Есть как не быть...
The DATE, DATETIME, and TIMESTAMP Types
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь в создании/корректировке БД по простой задаче
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]