powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Пожалуйста, помогите додумать схему БД
3 сообщений из 3, страница 1 из 1
Пожалуйста, помогите додумать схему БД
    #37269184
The_Immortal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, испытываю большие трудности в проектировании структуры БД, т.к. никогда их не любил и не особо понимал зачем это нужно, когда все возможно реализовать на программном уровне, не ломая мозг с этими схемами =)
Тем не менее необходимо это сделать. Сегодня днем предзащита, так что надеюсь вы мне сможете помочь... Буду очень признателен!

Итак, моя прога представляет пользователю тренировочную программу в зависимости от его телосложения, и если он пожелает, то может изменить предложенную программу на свою..

Упрощенная структура:


Таблица user содержит логин-пароль ("fear","121212"), а также тип (tip) телосложения (один из трех - заранее определенных разумеется - например выбрали "эктоморф").
Далее в таблицу programname передается значение типа телосложения. Оттуда поступает инфа в таблицу programs, которая содержит собственно заранее заданную программу упражнений по заданному типу телосложения:

Пример записей в этой таблице:
1 эктоморф жим_лежа
2 эктоморф становая
и т.д.

Теперь предположим, что пользователь меняет что-то в этой программе, скажем, удаляет ненужную упражнение (ненужную строчку). Как только он изменил что-то в программе "эктоморф", создается новая программа, в которой уже поле programs (таблицы programs)содержит значение с логином пользователя (fear).

Пример:
Пользователь fear, выбрал тип "эктоморф", получил программу "эктоморф", состоящую из следующих упражнений:
1 эктоморф жим_лежа
2 эктоморф становая
3 эктоморф приседания
Он решил, что в принципе программа норм, но вот приседать ему нельзя, и он решил убрать "3 эктоморф приседания". Тогда уже в таблицу programs следующее значение:

4 fear жим_лежа
5 fear становая

Вопросы:

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

Не знаю, понятно ли объяснил... Все это сделать программно - как два пальца для меня, а вот описать верную структуру не могу, хотя пытался - честно пытался и довольно долго [img=]:(

Помогите, пожалуйста...
Заранее благодарю![img=]
...
Рейтинг: 0 / 0
Пожалуйста, помогите додумать схему БД
    #37273060
davim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Immortal, что то у вас все слишком сложно.
1) Непонятно зачем нужна таблица programname, хранящая одно поле info и имеющая связь 1 к 1 с programs, не проще это поле перенести в programs? Программы связаны с пользователями через id_program, а вы пишите что начальные программы определяются по типам, а потом уже (после их изменения) определяются по имени пользователя, как это так? После изменения программы должна создаваться новая запись в таблице programs, а в таблице user в поле id_program пробиваться ее идентификатор.
2) Не вижу проблемы, возьмите и создайте ключ на поле login
...
Рейтинг: 0 / 0
Пожалуйста, помогите додумать схему БД
    #37273078
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
-- справочник типов
create table tips (tip_id int primary key, tip_desc char( 20 ))
-- user как и логин очень нехорошее слово может быть зарезервированным
-- password нахрен не нужен. При наличии готовых схем аутентикации изобретать самодельный велосипед глупо
create table persons
(
person_id int primary key,
person_login char( 20 ),
person_name char( 50 ), -- нет в задании, но нормальные люди любят обращение по именам
tip_id int references tips
)

create table exercises
(
exercise_id int primary key,
exercise_desc char( 50 )
-- exercise_photo video etc
)

-- программы по умолчанию
create table program_template
(
tip_id int references tips,
exercise_id int references exercises
)
-- программы реально выбранные для пользователя
create table persons_programs
(
person_id int references persons,
exercise_id int references exercises
)

The_Immortal Все это сделать программно - как два пальца для меняОчень сомневаюсь, что вы можете сделать то что не только не в силах описать, но и никогда их не любил и не особо понимал зачем это нужно
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Пожалуйста, помогите додумать схему БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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