Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Выделение одной записи / 25 сообщений из 52, страница 1 из 3
23.07.2012, 11:47
    #37888900
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Добрый день.
Банальная задача. В таблице нужно выделить какую либо одну запись. (сделать главной)
Для примера - сделать одну картинку из альбома - главной картинкой профиля/альбома.

Таблица пользователя:
--------------------------
UserId
UserName

Альбом:
--------------------------
PictureId
UserId
PictureName


Вижу два варианта:
1: (добавить поле картинке)
-------------------------------
PictureId
UserId
PictureName
IsDefault = True (главная)

2: (добавить поле пользователю)
-----------------------
UserId
UserName
PictureId (главная)

Какой предпочесть? Альтернативы?
...
Рейтинг: 0 / 0
23.07.2012, 12:01
    #37888924
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Автор100500,

Для начала определиться что делать - картинку профиля или альбома? Дальше соответственно в нужной таблице поле с признаком, по которому дальше достаточно будет Order By ...
...
Рейтинг: 0 / 0
23.07.2012, 12:10
    #37888940
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Злой БобрДля начала определиться что делать - картинку профиля или альбома?

Нет принципиальной разницы, пример был наглядный. Может быть и картинка товара )

Злой БобрДальше соответственно в нужной таблице поле с признаком, по которому дальше достаточно будет Order By ...
Это первый?
А лишние телодвижения для проверок что выбранна только одна запись? И при замене на другую.
...
Рейтинг: 0 / 0
23.07.2012, 12:47
    #37889019
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
On 07/23/2012 12:47 PM, Автор100500 wrote:

> Какой предпочесть? Альтернативы?
2-ой, этот.>

> 2: (добавить поле пользователю)
> -----------------------
> UserId
> UserName
> PictureId (главная)
>

Причина -- это быстрее будет работать и не нужен доп. индекс на таблицу картинок.
...
Рейтинг: 0 / 0
23.07.2012, 13:20
    #37889086
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
MasterZiv,

Мне он тоже больше нравится, но смущает рост дополнительных зависимостей в таблице пользователя.
Думал над вариантом - 3 (возможно картинку не выбрали)

Таблица ГлавныеКартинки:
---------------------------------
UserId
PictureId

Но тут рост количества таблиц, да и связь один к одному.
...
Рейтинг: 0 / 0
23.07.2012, 13:46
    #37889133
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Автор100500возможно картинку не выбрали

Тогда в поле связи будет NULL. И что?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2012, 14:20
    #37889184
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Dimitry SibiryakovАвтор100500возможно картинку не выбрали

Тогда в поле связи будет NULL. И что?


Это я для оправдания дополнительной таблицы )

Но мне кажется такая табличка выглядит мрачно.
---------------------------
UserId
UserName
PictureId - NULL
ShirtId - NULL
ShoesId - NULL
WeaponId - NULL
...
..
.
etc ....
...
Рейтинг: 0 / 0
23.07.2012, 14:30
    #37889202
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Автор100500Но мне кажется такая табличка выглядит мрачно.

Когда кажется - плюй через левое плечо. Что-нибудь весомее эстетической
неудовлетворённости есть?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2012, 14:39
    #37889212
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Dimitry SibiryakovЧто-нибудь весомее эстетической неудовлетворённости есть?


Много зависимостей, к примеру, нет возможности отсоединить\добавить модуль "Альбом", без правки таблицы пользователя.
...
Рейтинг: 0 / 0
23.07.2012, 14:42
    #37889218
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Автор100500нет возможности отсоединить\добавить модуль "Альбом", без правки таблицы пользователя.

А зачем для введения альбомов править пользователя?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2012, 14:51
    #37889232
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
В лоб:

user (...)
album (user_id, is_default, ...)
picture (album_id, is_default, ...)

Задолбали светы из Иваново. Где вас находят и кто вас учит проектированию?
...
Рейтинг: 0 / 0
23.07.2012, 15:08
    #37889262
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Dimitry SibiryakovА зачем для введения альбомов править пользователя?

А PictureId добавить?
Нельзя ведь угадать заранее, все модули которые добавят пользователю.
...
Рейтинг: 0 / 0
23.07.2012, 15:21
    #37889284
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Автор100500Нельзя ведь угадать заранее, все модули которые добавят пользователю.

Но можно в скрипт добавления модуля внести соответствующие команды.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2012, 15:38
    #37889317
Выделение одной записи
Автор100500Dimitry SibiryakovА зачем для введения альбомов править пользователя?

А PictureId добавить?
Нельзя ведь угадать заранее, все модули которые добавят пользователю.
вариант со ссылкой еще лучше тем что удалить предпочитаемую запись просто так не получится (если есть fk),

править пользователя не нужно, потому что это не "пользователь", а "предпочтения пользователя".
структура этих предпочтений может меняться предположительно заметно чаще структуры пользователя, в одну таблицу имхо не стоит сваливать.
...
Рейтинг: 0 / 0
23.07.2012, 17:03
    #37889487
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
А PictureId добавитьправить пользователя не нужно, потому что это не "пользователь", а "предпочтения пользователя".
структура этих предпочтений может меняться предположительно заметно чаще структуры пользователя, в одну таблицу имхо не стоит сваливать.

Это в принципе третий вариант. (таблица "предпочтения пользователя" 1 : 1)

В общем вижу что - вариант 2 хорош в случае, когда предпочтений относительно не много.
Вариант 3 - если предположительно структура будет менятся и предпочтений много.
В пользу первого - аргументов мало, хотя часто встречаем в примерах и в коде.
...
Рейтинг: 0 / 0
23.07.2012, 22:20
    #37889789
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Автор100500Добрый день.
Банальная задача. В таблице нужно выделить какую либо одну запись. (сделать главной)
Для примера - сделать одну картинку из альбома - главной картинкой профиля/альбома.

Таблица пользователя:
--------------------------
UserId
UserName

Альбом:
--------------------------
PictureId
UserId
PictureName


Вижу два варианта:
1: (добавить поле картинке)
-------------------------------
PictureId
UserId
PictureName
IsDefault = True (главная)

2: (добавить поле пользователю)
-----------------------
UserId
UserName
PictureId (главная)

Какой предпочесть? Альтернативы?
40 лет назад эта задача называлась "главная строка накладной", и имела два совсем других решения:)
1) связь с другой семантикой (поскольку Ваша система связи наверняка не поддерживает, значит еще один fk в картинках);
2) может потребоваться иметь и вторую по значимости картинку и третью; поэтому поле называется "приоритет" и имеет соответствующий тип...
...
Рейтинг: 0 / 0
23.07.2012, 23:52
    #37889844
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Бредятинаможет потребоваться иметь и вторую по значимости картинку и третью; поэтому поле называется "приоритет" и имеет соответствующий тип...
Данное решение становится самым логичным, как только появляется разграничение доступа для отдельных записей. Используется в качестве главной наиболее приоритетная доступная запись. Я б изначально так и делал.
...
Рейтинг: 0 / 0
24.07.2012, 02:13
    #37889905
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Автор100500Злой БобрДля начала определиться что делать - картинку профиля или альбома?

Нет принципиальной разницы, пример был наглядный. Может быть и картинка товара )
Да вся разница только в том в какой таблице ставить признак. Если и так и так, то ставить в двух таблицах. Ну а отбор делать в зависимости от того что загружается на выходе.
Автор100500Злой БобрДальше соответственно в нужной таблице поле с признаком, по которому дальше достаточно будет Order By ...
Это первый?
А лишние телодвижения для проверок что выбранна только одна запись? И при замене на другую.
По идее удобней делать что б первым шла именно заглавная картинка. Но можно и задом наперед. Просто если потом после вас кто-то будет пользоваться то непреминут вспомнить вас незлым тихим словом. Поэтому лучше сразу сделать так как делает большинство.
А триггеры зачем по вашему придумали? Вот и я о том же. Повесьте триггер и забудьте о проверках в приложении. Реально экономит время.
...
Рейтинг: 0 / 0
24.07.2012, 10:36
    #37890105
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Бредятина2) может потребоваться иметь и вторую по значимости картинку и третью; поэтому поле называется "приоритет" и имеет соответствующий тип...

Первый вариант я плохо понял. На счет второго - условия могут быть разные, например - первая картинка, последняя, рандом etc.
Меня больше интересует вариант, когда это, тупо назначается пользователем, без какой либо логики.
Имхо если нет особых условий то это излишне усложняет.
...
Рейтинг: 0 / 0
24.07.2012, 10:37
    #37890108
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
On 07/23/2012 02:20 PM, Автор100500 wrote:

> Мне он тоже больше нравится, но смущает рост дополнительных зависимостей в
> таблице пользователя.

Ерунда. Зависимости ничего не стоят.

> Думал над вариантом - 3 (возможно картинку не выбрали)

> Но тут рост количества таблиц, да и связь один к одному.

Это не один к одному.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.07.2012, 10:40
    #37890112
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Злой БобрПовесьте триггер и забудьте о проверках в приложении. Реально экономит время.
Не вижу в написании триггеров, по каждому пустяку - реальной экономии времени.
...
Рейтинг: 0 / 0
24.07.2012, 11:04
    #37890169
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
MasterZivЭто не один к одному.


почему?

Пользователи
----------------------------
UserId
UserName

Предпочтения пользователя
----------------------------
UserId
DefaultPictureId
...
Рейтинг: 0 / 0
24.07.2012, 11:31
    #37890215
Автор100500
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
MasterZivЕрунда. Зависимости ничего не стоят.

К примеру - удаление картинки будет затрагивать таблицу пользователей.
Про модули уже писал.
...
Рейтинг: 0 / 0
24.07.2012, 11:38
    #37890223
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Автор100500удаление картинки будет затрагивать таблицу пользователей.

И?.. Чем тебя это волнует?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.07.2012, 12:11
    #37890283
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение одной записи
Dimitry SibiryakovАвтор100500удаление картинки будет затрагивать таблицу пользователей.

И?.. Чем тебя это волнует?

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


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