Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 проектирование БД  [new]
yozzi
Member

Откуда:
Сообщений: 24
Доброго времени суток!
Столкнулся с такой задачей: есть сущности Пользователи, Игроки, Команды. Игрок может быть заявлен в нескольких Командах, при этом и Игрок и Команда являются пользователем. Помогите спроектировать схему такой БД, я накидал, но не уверен, что верно.

К сообщению приложен файл. Размер - 112Kb
1 май 21, 10:36    [22317159]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31852
yozzi
Помогите спроектировать схему такой БД, я накидал, но не уверен, что верно.
На первый взгляд всё правильно.
Попросите модератора перекинуть топик в Проектирование БД, тут это не совсем по теме.

Модератор: Тема перенесена из форума "Microsoft SQL Server".


Сообщение было отредактировано: 1 май 21, 12:45
1 май 21, 11:23    [22317172]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 120
зачем _id в TeamPlayers ?
почему к Users стрелки в обе стороны?

Сообщение было отредактировано: 1 май 21, 15:24
1 май 21, 15:31    [22317232]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
fkthat
Member [заблокирован]

Откуда:
Сообщений: 4873
Нарисуй в нормальной нотации - ERD или UML. А то у тебя черти что и ничего не понятно. Может это просто такая нотация, что я вообще не знаю.
1 май 21, 15:47    [22317240]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
yozzi
Member

Откуда:
Сообщений: 24
fkthat,

да это был быстрый набросок... Переделал, убрал id из сущности TeamPlayers

К сообщению приложен файл. Размер - 38Kb
1 май 21, 16:20    [22317252]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
ИВП
Member

Откуда:
Сообщений: 434
ТС путает понятие Сущности и Отношения (таблицы).
Сам написал
yozzi
есть сущности Пользователи, Игроки, Команды.

А кружочки (обязательность) и перпендикуляры (необязательность) на концах связей вроде используются в ER-диаграммах при задании связей между сущностями.
Если это ER-диаграмма, то никакой сущности TeamPlayers быть не может - должна быть связь "Многие ко Многим" между сущностями Игроки и Команды (таблица появится позже).
Если это схема данных (прямоугольники - таблицы (отношения)), то зачем обязательность и необязательность на концах связей?

бабушкин зайчик
зачем _id в TeamPlayers ?

А кому от него хуже? В соседнем топике много про это писали.

Ну и название топика очень оригинальное.
1 май 21, 17:11    [22317262]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
yozzi
Member

Откуда:
Сообщений: 24
ИВП,

Кхм.. я думал, что сущность и есть таблица... выходит, что это схема данных, хотя опять же, я думал, что ER диаграмма и должна отображать модель данных :)
1 май 21, 17:27    [22317266]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53066

yozzi
я думал, что сущность и есть таблица...

"Сущность" - понятие логической модели.
"Таблица" - понятие физической модели.
Они не всегда соотносятся как 1:1 поэтому теоретики их разделяют.

Posted via ActualForum NNTP Server 1.5

1 май 21, 17:39    [22317268]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 120
сущности в приложении
таблицы в БД
ИВП
А кому от него хуже? В соседнем топике много про это писали.

это ~5 лишних байт на каждую строку

Сообщение было отредактировано: 1 май 21, 18:43
1 май 21, 18:51    [22317276]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
vmag
Member

Откуда: MP
Сообщений: 3991
yozzi
Столкнулся с такой задачей:

Начало правильное, но постановки самой задачи нет...
yozzi
есть сущности Пользователи, Игроки, Команды. Игрок может быть заявлен в нескольких Командах, при этом и Игрок и Команда являются пользователем.

Это не постановка задачи - это ваше личное видение решения проблемы, которое вы предлагаете обсудить без самой постановки задачи.
Вопрос:
yozzi
при этом и Игрок и Команда являются пользователем

Пользователем чего ?

Я лично вообще ничего не понял... вы можете по русски сказать, например хочу сделать учет коней и жокеев на скачках... нужно считать забеги, места и т.д.
1 май 21, 20:51    [22317301]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
fkthat
Member [заблокирован]

Откуда:
Сообщений: 4873
yozzi
да это был быстрый набросок... Переделал, убрал id из сущности TeamPlayers

Идея в целом верна, но с cardinality беда везде. У тебя для одного UserType может быть 0-∞ Users. Для Player и Team всегда есть один User (тут все верно), но для одного User может быть только 0-1 Player или 0-1 Team. Остальное все, вроде бы, ОК.
1 май 21, 21:43    [22317308]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
vmag
Member

Откуда: MP
Сообщений: 3991
yozzi
при этом и Игрок и Команда являются пользователем


А это из серии:
Смешались в кучу кони, люди... (из Бородино)
Пользователи БД - это люди (грубо говоря) допущенные к информации БД и это не обязательно игроки (это могут быть администраторы, менеджеры, операционисты, которые имеют разные права и обязанности по ведению и сопровождению БД)... ну и естественно сами игроки по решению администратора могут быть допущены к информации как пользователи (с правами только просмотр - иначе это будет полный бардак)...
Ну, чтобы было понятнее - если в кадровой учетной системе предприятия зарегистрирована уборщица, то это не означает, что ей нужно автоматически выдать логин и пароль для доступа к самой учетной системе...

Сообщение было отредактировано: 1 май 21, 21:42
1 май 21, 21:47    [22317309]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
fkthat
Member [заблокирован]

Откуда:
Сообщений: 4873
vmag
Это не постановка задачи - это ваше личное видение решения проблемы, которое вы предлагаете обсудить без самой постановки задачи.
vmag
Пользователи БД - это люди (грубо говоря) допущенные к информации БД и это не обязательно игроки (это могут быть администраторы, менеджеры, операционисты, которые имеют разные права и обязанности по ведению и сопровождению БД)... ну и естественно сами игроки по решению администратора могут быть допущены к информации как пользователи

Ты не находишь, что ты сейчас и сам предлагаешь свое
vmag
личное видение решения проблемы
просто выдуманное из головы :)
2 май 21, 10:28    [22317386]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
vmag
Member

Откуда: MP
Сообщений: 3991
fkthat,

Не нахожу, то что 2+2=4 придумал не я, если кто то не видит 2+2 это его проблема
2 май 21, 22:09    [22317639]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
vmag
Member

Откуда: MP
Сообщений: 3991
fkthat,

А что касается тупого решения в лоб по псевдопостановке задачи, то достаточно трёх таблиц со второй картинки справа: игроки + команды + связующая, нужно только в игроки добавить поля логин и пароль...
Таким образом любой игрок автоматически становится пользователем, а так как любая команда состоит из множества игроков - пользователей, то и команда по факту пользователь. Это азы абстрактной алгебры.... И да симметрия в этом случае не работает. Наличие логина и пароля на команду не обеспечивает отдельных игроков привилегиями пользователя если они не входят ни в одну команду
2 май 21, 22:25    [22317643]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
fkthat
Member [заблокирован]

Откуда:
Сообщений: 4873
vmag
А что касается тупого решения в лоб по псевдопостановке задачи, то достаточно трёх таблиц со второй картинки справа: игроки + команды + связующая, нужно только в игроки добавить поля логин и пароль... Таким образом любой игрок автоматически становится пользователем, а так как любая команда состоит из множества игроков - пользователей, то и команда по факту пользователь. Это азы абстрактной алгебры.... И да симметрия в этом случае не работает. Наличие логина и пароля на команду не обеспечивает отдельных игроков привилегиями пользователя если они не входят ни в одну команду

Я не понял вообще ничего (видать, для меня твоя абстракная алгебра слишком абстракная), но ОК, будь по твоему.
2 май 21, 23:00    [22317652]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 120
vmag
а так как любая команда состоит из множества игроков - пользователей, то и команда по факту пользователь

крутая логика...
но нет, спасибо
пусть лучше мыши отдельно, а зёрна отдельно
2 май 21, 23:07    [22317656]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
vmag
Member

Откуда: MP
Сообщений: 3991
бабушкин зайчик
пусть лучше мыши отдельно, а зёрна отдельно


ага, а если команда поедет на поезде, то нужно выдать логин и пароль еще и поезду...
3 май 21, 13:24    [22317770]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
fkthat
Member [заблокирован]

Откуда:
Сообщений: 4873
vmag
ага, а если команда поедет на поезде, то нужно выдать логин и пароль еще и поезду...

Поезда уже давно поддерживают вход по логину и паролю.
3 май 21, 13:56    [22317789]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 120
vmag, откуда вообще у команды взялся логин и пароль?
команда - это набор юзеров (включая владельца) и вот у них есть л/п, а команде то он зачем
3 май 21, 18:05    [22317908]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
yozzi
Member

Откуда:
Сообщений: 24
бабушкин зайчик,

Давайте попробую объяснить, почему я так решил сделать, ну и вобщем задачу. Я разрабатываю информационную систему для команд и игроков, и хотел бы, чтобы можно было регистрировать и новые команды и новых игроков, ну и соответственно входить под ними в систему, у команды свой логин для входа, у игрока - свой. Можно конечно добавить на форме входа выпадающий список «войти как...» и в зависимости от этого решать кто это, игрок или команда, но мне это решение не нравится.

Возможно, я намешал сильно... может тогда подскажите, как можно продумать? Может, конечно, стоит использовать такую роль как «администратор команды» у пользователя, но если этот администратор тоже будет игроком? В таком случае нужно, чтобы у пользователя были роли и «игрок» и «администратор команды», так будет правильнее?
3 май 21, 23:10    [22318011]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
vmag
Member

Откуда: MP
Сообщений: 3991
бабушкин зайчик
команда - это набор юзеров (включая владельца) и вот у них есть л/п, а команде то он зачем


алилуя... не прошло и недели как дошло... раз 5-10 перечитал топик ?
3 май 21, 23:42    [22318035]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
fkthat
Member [заблокирован]

Откуда:
Сообщений: 4873
yozzi
Может, конечно, стоит использовать такую роль как «администратор команды»

Ничего в этом сложного. Всего лишь добавить в отношение "TeamPlayers" атрибут "роль". Логин для команды и вправду как-то криво - это будет как та бригада Стаханова, которая вся спускалась в шахту под его логином

И еще. Правильней отделить логин/пароль в отдельное отношение "Credentials" и для него тоже сразу предусмотреть субклассирование. Вход потенциально может быть не только по логину и паролю, да и вообще credentials это сама по себе отдельная сущность.
3 май 21, 23:47    [22318038]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
vmag
Member

Откуда: MP
Сообщений: 3991
yozzi
Возможно, я намешал сильно... может тогда подскажите, как можно продумать? Может, конечно, стоит использовать такую роль как «администратор команды» у пользователя, но если этот администратор тоже будет игроком? В таком случае нужно, чтобы у пользователя были роли и «игрок» и «администратор команды», так будет правильнее?


по уму админы БД независимы и продвинуты (и лучше когда их 1-2, тогда можно понять с кого спросить за косяки) и если даже дать всем капитанам команд права админов, большая вероятность, что половина из них скажет мне это и нафик не уперлось... читать инструкции, что-то заводить, корректировать, я даже не знаю с какой стороны подойти к компу, которого у меня кстати и нет, кому нужно - пусть и ковыряет эту БД, ну а просто зайти и посмотреть раз в месяц что и как я наверно смогу ...

Сообщение было отредактировано: 4 май 21, 00:01
4 май 21, 00:01    [22318044]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 120
yozzi
бабушкин зайчик,

Давайте попробую объяснить, почему я так решил сделать, ну и вобщем задачу. Я разрабатываю информационную систему для команд и игроков, и хотел бы, чтобы можно было регистрировать и новые команды и новых игроков, ну и соответственно входить под ними в систему, у команды свой логин для входа, у игрока - свой. Можно конечно добавить на форме входа выпадающий список «войти как...» и в зависимости от этого решать кто это, игрок или команда, но мне это решение не нравится.

Возможно, я намешал сильно... может тогда подскажите, как можно продумать? Может, конечно, стоит использовать такую роль как «администратор команды» у пользователя, но если этот администратор тоже будет игроком? В таком случае нужно, чтобы у пользователя были роли и «игрок» и «администратор команды», так будет правильнее?

нет у команд никаких логинов/паролей, есть владелец команды и он юзер
также как и все члены команды (он также может быть членом и играть в ней)
а роли - это система авторизации, там роли юзеров и группы правил, вот через неё все доступы и реализуются

Сообщение было отредактировано: 4 май 21, 00:38
4 май 21, 00:44    [22318068]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 120
vmag
бабушкин зайчик
команда - это набор юзеров (включая владельца) и вот у них есть л/п, а команде то он зачем


алилуя... не прошло и недели как дошло... раз 5-10 перечитал топик ?

а что дошло то? очевидно было всегда
4 май 21, 00:45    [22318070]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
yozzi
Member

Откуда:
Сообщений: 24
fkthat,

я верно все понял? роль правильно будет в этой же таблице PlayerTeams хранить? А token также в Credentials может быть или для него отдельную таблицу лучше, типа Sessions?

К сообщению приложен файл. Размер - 30Kb
4 май 21, 12:30    [22318209]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
yozzi
Member

Откуда:
Сообщений: 24
vmag,

а причем админы бд? под админами команды я подразумевал персонал команды, у которых только возможность подтверждать игрока в команду, ну и еще какие либо подобные действия
4 май 21, 12:36    [22318213]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
yozzi
Member

Откуда:
Сообщений: 24
yozzi
fkthat,

я верно все понял? роль правильно будет в этой же таблице PlayerTeams хранить? А token также в Credentials может быть или для него отдельную таблицу лучше, типа Sessions?


К сообщению приложен файл. Размер - 30Kb
4 май 21, 12:41    [22318217]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
vmag
Member

Откуда: MP
Сообщений: 3991
yozzi
а причем админы бд? под админами команды я подразумевал персонал команды, у которых только возможность подтверждать игрока в команду, ну и еще какие либо подобные действия


Хорошо...
- база пустая, кто первоначально внесет капитанов-админов (и будет это делать потом) при наличии интерфейса с правами доступа ?
- кто будет вносить игроков: фио, год рождения, и прочую лабуду... если половина из них откажется это делать?
- кто будет подтверждать игроков в команду и подобные действия, если капитан скажет идите вы все в .ОПУ, у меня тренировки с 6 утра до ночи...

Хотя споры тут похоже бесполезны, делайте, практика покажет...
и я бы вернул _id в TeamPlayers как было у вас изначально:
Это не тот случай чтоб экономить 5 байт на строку, похоже вы частенько будете ковырять эту таблицу,
по этому стоя на суррогатном ключе будет проще идентифицировать запись перед DELETE и UPDATE
4 май 21, 13:16    [22318243]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
yozzi
Member

Откуда:
Сообщений: 24
vmag
- база пустая, кто первоначально внесет капитанов-админов (и будет это делать потом) при наличии интерфейса с правами доступа ?


Я предполагал, что пользователи сами будут регистрироваться. Зарегистрировался как "администратор команды" - зарегистрировал свою команду, назначил капитана и т.д. Зарегистрировался как "игрок" - добавляешься в команду.

vmag
- кто будет вносить игроков: фио, год рождения, и прочую лабуду... если половина из них откажется это делать?


Ну отказался регистрироваться - значит ты не в системе) Либо регистрирует "администратор команды", он же менеджер

vmag
- кто будет подтверждать игроков в команду и подобные действия, если капитан скажет идите вы все в .ОПУ, у меня тренировки с 6 утра до ночи...


Подтверждать будет юзер с правами "администратор команды", обычный менеджер, как писал выше, у которого это часть его обязанностей заниматься подобными делами

vmag
и я бы вернул _id в TeamPlayers как было у вас изначально:
Это не тот случай чтоб экономить 5 байт на строку, похоже вы частенько будете ковырять эту таблицу,
по этому стоя на суррогатном ключе будет проще идентифицировать запись перед DELETE и UPDATE


Понял, верну тогда
4 май 21, 13:42    [22318264]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
yozzi
Member

Откуда:
Сообщений: 24
yozzi
yozzi
fkthat,

я верно все понял? роль правильно будет в этой же таблице PlayerTeams хранить? А token также в Credentials может быть или для него отдельную таблицу лучше, типа Sessions?


Да, точно, vmag натолкнул на мысль, должен быть наверно, и какой то общий пользователь - админ системы, и который к командам вообще отношения не имеет, соответственно, он ведь не будет в таблице TeamUsers, как тогда быть? Или не должен...)
4 май 21, 13:55    [22318272]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 120
vmag
по этому стоя на суррогатном ключе будет проще идентифицировать запись перед DELETE и UPDATE

там идентификация по uid + team_id, она не подводит
4 май 21, 14:02    [22318278]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
vmag
Member

Откуда: MP
Сообщений: 3991
yozzi
Да, точно, vmag натолкнул на мысль, должен быть наверно, и какой то общий пользователь - админ системы, и который к командам вообще отношения не имеет, соответственно, он ведь не будет в таблице TeamUsers, как тогда быть? Или не должен...)


Вы просто стоите на пороге всего этого, так сказать - открыли дверь...
С опытом вы поймете некоторые моменты:
- все хотят чтобы в БД было как можно больше информации, но никто не хочет её туда вбивать, это можно сделать только выкрутив кому-то руки в прямом и переносном смысле этого слова и это может сделать только Заказчик (если он есть) иначе придется самому закатывать рукава и доказывать нужность и гениальность...
- если кроме вас эта бд никому не нужна (никто не лоббирует, не финансирует и нет перспектив на это), то относитесь к процессу по проще, - как к учебному для самого себя, ну или настраивайтесь, что вы сами будете платить за хостинг (как минимум), если захотите покинуть пределы localhost и найти спонсоров...
4 май 21, 15:23    [22318328]     Ответить | Цитировать Сообщить модератору
 Re: проектирование БД  [new]
yozzi
Member

Откуда:
Сообщений: 24
vmag
yozzi
Да, точно, vmag натолкнул на мысль, должен быть наверно, и какой то общий пользователь - админ системы, и который к командам вообще отношения не имеет, соответственно, он ведь не будет в таблице TeamUsers, как тогда быть? Или не должен...)


Вы просто стоите на пороге всего этого, так сказать - открыли дверь...
С опытом вы поймете некоторые моменты:
- все хотят чтобы в БД было как можно больше информации, но никто не хочет её туда вбивать, это можно сделать только выкрутив кому-то руки в прямом и переносном смысле этого слова и это может сделать только Заказчик (если он есть) иначе придется самому закатывать рукава и доказывать нужность и гениальность...
- если кроме вас эта бд никому не нужна (никто не лоббирует, не финансирует и нет перспектив на это), то относитесь к процессу по проще, - как к учебному для самого себя, ну или настраивайтесь, что вы сами будете платить за хостинг (как минимум), если захотите покинуть пределы localhost и найти спонсоров...


Да это и так "для личного развития", так сказать, но просто хочется, чтобы было все по уму, ну или приближенно к этому)
4 май 21, 16:00    [22318347]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Проектирование БД Ответить