powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Категории для задачника, как лучше реализовать
4 сообщений из 4, страница 1 из 1
Категории для задачника, как лучше реализовать
    #39004004
Exoticness
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, форумчане. Для моего проекта необходимо реализовать категории для задач, но так как проектировщика базы нет, то очень хотелось бы спросить у вас совета, чтобы не оплошаться.
Итак, попробую описать, есть категория "Личное" и она доступна лишь Васе. Это могло бы выглядеть вот так:
автор::tasks
id | name | author | cat
1 | Задача | 3 | 1
автор::category
id | user_id | name
1 | 3 | Личное
А ещё есть Петя, в задачнике у него категория "Работа". Но здесь Петя решил создать категорию с точно таким же названием, как у Васи, т.е. "Личное". Получается, здесь возникает избыточность данных? Неужели для этого нужно ещё одну таблицу создавать?
И наконец хотелось бы дать возможность сделать публичные категории. Думал для этого поможет enum, но ошибся. Может мне лучше использовать связь "многие ко многим"?.
Очень надеюсь на поддержку, спасибо
...
Рейтинг: 0 / 0
Категории для задачника, как лучше реализовать
    #39004016
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с чего бы Личная категория Васи стала ещё и категорией Личное Пети? Одноимённости тут явно недостаточно...
Наличие одноимённых категорий в данном случае - нормально. Ведь категория идентифицируется не по наименованию, а по её уникальному индексу. Ну или, если не нравится синтетический ключ, то по комбинации полей (Наименование, Пользователь). И связь с пользователями типа один-много.
А вот таблица прав доступа - это много-много. Может же Вася дать к своей категории Личное тому же Пете...
...
Рейтинг: 0 / 0
Категории для задачника, как лучше реализовать
    #39004115
Exoticness
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю вы правы, но никто кроме самого юзера не имеет доступа к другим категориям. Я попробую сделать так как задумал изначально - буду вставлять в поле айдишник юзеров, но всё же по прежнему открыт для предложений.
Каким образом лучше именовать первичный ключ? Не будет ли ненормально, если везде будет Id?
...
Рейтинг: 0 / 0
Категории для задачника, как лучше реализовать
    #39004180
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ExoticnessДумаю вы правы, но никто кроме самого юзера не имеет доступа к другим категориям. Я попробую сделать так как задумал изначально - буду вставлять в поле айдишник юзеров, но всё же по прежнему открыт для предложений.
Каким образом лучше именовать первичный ключ? Не будет ли ненормально, если везде будет Id?


это нормально везде id - так по умолчанию работает куча фреймворков.... но твоя творческая душа верно вучствует - это тупо. (пить нынче тоже нормально, а не пить совсем не нормально :) )

если таблица для понятия cat - то её имя cats первичный ключ catId (idcat можно так, но люди говорят что мы читаем слева направо, поэтому надо левее болле общее, а правее более конкретное)
в другой таблице не как лохи называть ссылку на категорию parentId - особенно исходя из того что тут нету наследования, и следовательно нету родителей
а назвать таблице tasks полле ссылку catId - очень хорошо если у тебя получиться что где бы в базе не присутсвовало catId сразу можно зуб давать что это везде одно и тоже значение. - тоесть несмотря на код создания таблиц ты сразу знал, если в двух таблицах есть поля catId то это точно можно делать джойин по этому полю.

для него индекс создать назвав его FK_tasks_catId - внешний ключ таблицы tasks на значение catId.

другие индексы
AK_table_field - альтернативный ключ - поле тоже уникальное, и может быть использованно для идентификации записи на равне с первичным ключом
EK_table_field - дополнительный ключ - просто индекс по полю...
или
EK_table_field1_field2_field3 для составного индекса... чтобы читая это сразу понимать что там.

а для твоей задачи, и вообще, помагает мыслить первичными ключами....

название категории входит в первичный ключ? - нет,
являеться альтернативным ключом?(ты хочешь чтобы по названию категории можно было сразу сказать о чом речь? нет)
значит его не расматриваем... есть catId
есть userId
у тебя категория любая одного или нескольких юзеров? одного, значит рядом с catId должно быть userId(ссылка) на юзера

а все остальные поля это обвеска этих ключевых.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Категории для задачника, как лучше реализовать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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