Skip to content
This repository was archived by the owner on Dec 27, 2024. It is now read-only.

Commit 1fc3b59

Browse files
doc/codeforces/test Добавил итоговую схему бд + код для ее построения (#8)
1 parent 2be27e2 commit 1fc3b59

File tree

3 files changed

+32
-46
lines changed

3 files changed

+32
-46
lines changed

docs/assets/FINAL_DB.png

65.7 KB
Loading

docs/diagram/diagram.md

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
11
# Итоговая база данных
2-
1. Решил разделить группы четко на 2 вида: группы команд и группа пользователей
3-
2. Жестко принимаю, что в команде может быть до 3 человек (потому что на командных олимпиадах можно участвовать максимум
4-
втроем).
5-
3. По хорошему стоило сделать дополнительные таблицы, может быть, объединить t_cf_users_groups и
6-
t_cf_users_team_groups в одну таблицу. Однако я не до конца придумал, как обработать все случаи в таком виде. При
7-
этом у меня небольшое приложение, и считаю что текущее разбиение вполне подходит. Большая нормализация усложнит проект.
8-
![db](../assets/db_new.png)
2+
![db](../assets/FINAL_DB.png)
3+

docs/diagram/sources.md

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,66 +2,57 @@
22
```PlantUML
33
@startuml
44
5-
' Указываем пакеты для схем
65
package "security" {
76
class t_users {
87
+id: BIGSERIAL
9-
+c_name: TEXT
10-
+c_login: TEXT [UNIQUE]
11-
+c_hashed_password: TEXT
12-
+c_role: TEXT
8+
+c_name: TEXT [NOT NULL]
9+
+c_login: TEXT [UNIQUE NOT NULL]
10+
+c_hashed_password: TEXT [NOT NULL]
11+
+c_role: TEXT [NOT NULL]
1312
}
1413
1514
class t_tokens {
1615
+id: BIGSERIAL
17-
+c_token: TEXT
18-
+c_revoked: BOOLEAN
19-
+c_user_id: BIGINT
16+
+c_token: TEXT [NOT NULL]
17+
+c_revoked: BOOLEAN [NOT NULL]
18+
+c_user_id: BIGINT [NOT NULL]
2019
}
2120
2221
t_users --> t_tokens: "1 -> N"
2322
}
2423
2524
package "codeforces" {
26-
class t_cf_users_teams_groups {
25+
class t_groups {
2726
+id: BIGSERIAL
28-
+c_name: TEXT
29-
+c_description: TEXT
30-
+c_user_id: BIGINT
27+
+c_name: TEXT [NOT NULL]
28+
+c_description: TEXT [NULL]
29+
+c_user_id: BIGINT [NOT NULL]
3130
}
3231
33-
class t_cf_teams {
34-
+id: BIGSERIAL
35-
+c_name: TEXT
36-
+c_description: TEXT
37-
+c_first_user_login: TEXT
38-
+c_second_user_login: TEXT
39-
+c_third_user_login: TEXT
40-
+c_group_id: BIGINT
32+
class t_teams {
33+
+id: BIGSERIAL
34+
+c_name: TEXT [NOT NULL]
35+
+c_description: TEXT [NULL]
36+
+c_group_id: BIGINT [NOT NULL]
4137
}
42-
43-
class t_cf_users_groups {
44-
+id: BIGSERIAL
45-
+c_name: TEXT
46-
+c_description: TEXT
47-
+c_user_id: BIGINT
38+
39+
class t_players {
40+
+id: BIGSERIAL
41+
+c_login: TEXT [UNIQUE NOT NULL]
4842
}
49-
50-
class cf_users {
51-
+id: BIGSERIAL
52-
+c_name: TEXT
53-
+c_description: TEXT
54-
+c_group_id: BIGINT
43+
44+
class t_team_player {
45+
+id: BIGSERIAL
46+
+c_team_id: BIGINT [NOT NULL]
47+
+c_player_id: BIGINT [NOT NULL]
5548
}
56-
57-
t_cf_users_teams_groups --> t_cf_teams: "1 -> N"
58-
t_cf_users_groups --> cf_users: "1 -> N"
5949
}
6050
61-
' Внешние ключи между схемами
62-
security.t_users --> codeforces.t_cf_users_teams_groups: "1 -> N"
63-
security.t_users --> codeforces.t_cf_users_groups: "1 -> N"
64-
51+
security.t_users --> codeforces.t_groups: "1 -> N"
52+
codeforces.t_groups --> codeforces.t_teams: "1 -> N"
53+
codeforces.t_teams --> codeforces.t_team_player: "1 -> N"
54+
codeforces.t_players --> codeforces.t_team_player: "1 -> N"
6555
@enduml
6656
57+
6758
```

0 commit comments

Comments
 (0)