powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проста БД
25 сообщений из 25, страница 1 из 1
Проста БД
    #38921734
sce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите по проектированию простой БД

1. Есть список устройств, у каждого устройства есть свои атрибуты (размер, вес, цена).
2. Есть список клиентов который использует одно из устройств.

Список устройств может пополняться.
Также для каждого клиента надо будет получать его устройство с атрибутами.

Как правильно сделать такую простую архитектуру?


Я пока вижу 2 таблицы:

Таблица 1
device id | attr1 | attr2 | attr3

Таблица 2
user id | device id


Важно что атрибуты могут добавляться в будущем.
Подкажите правильный подход или нужно что то изменить или добавить?
...
Рейтинг: 0 / 0
Проста БД
    #38921812
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sceЯ пока вижу 2 таблицы:

Таблица 1
device id | attr1 | attr2 | attr3

Таблица 2
user id | device id


Важно что атрибуты могут добавляться в будущем.
Подкажите правильный подход или нужно что то изменить или добавить?

Нормализуй это!
Т.е. где-то так
device: device_id, <bla-bla-bla>
attribute: attribute_id, <bla-bla-bla>
users: user_id, <bla-bla-bla>
device_atribute: [device_id,attribute_id] PK
users_device: [user_id,device_id] PK
...
Рейтинг: 0 / 0
Проста БД
    #38921816
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulsceЯ пока вижу 2 таблицы:

Таблица 1
device id | attr1 | attr2 | attr3

Таблица 2
user id | device id


Важно что атрибуты могут добавляться в будущем.
Подкажите правильный подход или нужно что то изменить или добавить?

Нормализуй это!
Т.е. где-то так
device: device_id, <bla-bla-bla>
attribute: attribute_id, <bla-bla-bla>
users: user_id, <bla-bla-bla>
device_atribute: [device_id,attribute_id] PK
users_device: [user_id,device_id] PK

не туда запилил, здесь уже все нормализовано.
...
Рейтинг: 0 / 0
Проста БД
    #38921819
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sceПодскажите по проектированию простой БД

1. Есть список устройств, у каждого устройства есть свои атрибуты (размер, вес, цена).
2. Есть список клиентов который использует одно из устройств.

Список устройств может пополняться.
Также для каждого клиента надо будет получать его устройство с атрибутами.

Как правильно сделать такую простую архитектуру?


Я пока вижу 2 таблицы:

Таблица 1
device id | attr1 | attr2 | attr3

Таблица 2
user id | device id


Важно что атрибуты могут добавляться в будущем.
Подкажите правильный подход или нужно что то изменить или добавить?

пока ничего неправильного не вижу.
...
Рейтинг: 0 / 0
Проста БД
    #38922351
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivsceВажно что атрибуты могут добавляться в будущем .
Подкажите правильный подход или нужно что то изменить или добавить?

пока ничего неправильного не вижу.

Выделил главное.
При той структуре, которую предложил ТС, таблица будет расти "вширь", т.е. добавляться новые колонки :-)
...
Рейтинг: 0 / 0
Проста БД
    #38922363
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulПри той структуре, которую предложил ТС, таблица будет расти "вширь",
т.е. добавляться новые колонки :-)
Она перестанет расти задолго до того, как достигнет предела в 65535 колонок. Просто
фантазия на новые атрибуты кончится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проста БД
    #38922426
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulMasterZivпропущено...


пока ничего неправильного не вижу.

Выделил главное.
При той структуре, которую предложил ТС, таблица будет расти "вширь", т.е. добавляться новые колонки :-)

А, сори, это я пропустил.

Ну всё равно вопрос, как часто будут добавляться и кто должен добавлять (программист/ пользователь).
...
Рейтинг: 0 / 0
Проста БД
    #38922680
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivА, сори, это я пропустил.

Ну всё равно вопрос, как часто будут добавляться и кто должен добавлять (программист/ пользователь).

По идее да.
Смотря какие атрибуты и типы в них.
...
Рейтинг: 0 / 0
Проста БД
    #38923356
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivпока ничего неправильного не вижу.

Очки наденьте ) топискастер в корне не прав.


sceПодкажите правильный подход?
Нет
sceили нужно что то изменить или добавить?
все изменить нужно, но для начала нужно почитать теорию проектирования реляционных БД. Хотя бы основы.
...
Рейтинг: 0 / 0
Проста БД
    #38923368
ScarferNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с Serguei
Но перед нормализацией надо сначала провести анализ самой задачи. На текущий момент ошибки явно на лицо.
...
Рейтинг: 0 / 0
Проста БД
    #38923550
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScarferNVСогласен с Serguei
Но перед нормализацией надо сначала провести анализ самой задачи. На текущий момент ошибки явно на лицо.

Ну так перечислите.

Если EAV не делать, то там всё ОК.

Если вы думаете, что (attr1 | attr2 | attr3) -- это массив атрибутов, и нарушение 1НФ, то возможно вы ошибаетесь,
потому что это могут быть просто названия разных атрибутов (разных по смыслу, с разными типами данных и т.п.)
ТС как бы на это намекнул, перечислив их (размер, вес, цена).
...
Рейтинг: 0 / 0
Проста БД
    #38923582
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sce1. Есть список устройств, у каждого устройства есть свои атрибуты (размер, вес, цена).

Все устройства имеют одинаковый (единый) перечень атрибутов?
Или могут быть атрибуты, которые не заполняются для каких-либо устройств? Или специфичные устройства, имеющие особые атрибуты?
...
Рейтинг: 0 / 0
Проста БД
    #38923590
ScarferNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНу так перечислите.

Если EAV не делать, то там всё ОК.

Если вы думаете, что (attr1 | attr2 | attr3) -- это массив атрибутов, и нарушение 1НФ, то возможно вы ошибаетесь,
потому что это могут быть просто названия разных атрибутов (разных по смыслу, с разными типами данных и т.п.)
ТС как бы на это намекнул, перечислив их (размер, вес, цена).

Связь между пользователем и устройством. У пользователя может быть много устройств.
Соответственно таблицы автора не соответствуют этой связи.
...
Рейтинг: 0 / 0
Проста БД
    #38923703
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScarferNVСоответственно таблицы автора не соответствуют этой связи.
Хм. С чего бы это? Таблица 2 как раз выражает эту связь.
Нигде не сказано, что в базе будут только эти две таблицы.
...
Рейтинг: 0 / 0
Проста БД
    #38923727
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScarferNVMasterZivНу так перечислите.

Если EAV не делать, то там всё ОК.

Если вы думаете, что (attr1 | attr2 | attr3) -- это массив атрибутов, и нарушение 1НФ, то возможно вы ошибаетесь,
потому что это могут быть просто названия разных атрибутов (разных по смыслу, с разными типами данных и т.п.)
ТС как бы на это намекнул, перечислив их (размер, вес, цена).

Связь между пользователем и устройством. У пользователя может быть много устройств.
Соответственно таблицы автора не соответствуют этой связи.

Постановка задачи:
авторЕсть список клиентов который использует одно из устройств .
...
Рейтинг: 0 / 0
Проста БД
    #38923741
452SQL77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sce,

На мой взгляд, таблиц должно быть больше:

1.Таблица атрибутов T_ATTR (attr_id, Code, Name )
2.Таблица устройств T_DEVICES (device id, Code, Name)
3.Таблица хранения атрибутов с привязкой к устройству T_DEVICES_ATTR(device_id,attr_id, attr_val )
4. Таблица пользователей T_USERS( user_id, ....)
5. Таблица устройств по пользователям T_USERS_DEV(user_id, device_id, quantity )
...
Рейтинг: 0 / 0
Проста БД
    #38923748
ScarferNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikle83Хм. С чего бы это? Таблица 2 как раз выражает эту связь.
Нигде не сказано, что в базе будут только эти две таблицы.

Как же Автор сам сказал:

Код: xml
1.
2.
3.
4.
5.
6.
7.
Я пока вижу 2 таблицы:

Таблица 1
device id | attr1 | attr2 | attr3

Таблица 2
user id | device id



Таблица " отображает связь 1:1

Код: xml
1.
2. Есть список клиентов который использует одно из устройств. 

Это как раз и есть вторая таблица, по мнению автора.

Если это так, то такая задача не имеет будущего. А что если бизнес в дальнейшем дополнит задачу?
Логичнее предположить, что клиент захочет использовать еще одно устройство или больше. Что как раз и вероятнее.
Поэтому две таблицы автора с этой задачей не справятся.
...
Рейтинг: 0 / 0
Проста БД
    #38923979
G.u.e.s.t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScarferNV,

а почему 2-я таблица не может представлять собой связь n:m?
...
Рейтинг: 0 / 0
Проста БД
    #38924268
ScarferNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
G.u.e.s.tScarferNV,

а почему 2-я таблица не может представлять собой связь n:m?

Не вижу смысла здесь городить велосипед, когда можно свободно нормализировать до 3НФ, которая в будущем позволит избежать избыточности и целостности данных.
Повторюсь, что задача здесь поставлена в узких рамках.
А если представить, что в будущем бизнес захочет приписать атрибуты к пользователю?

3НФ без всяких велосипедов.
...
Рейтинг: 0 / 0
Проста БД
    #38924375
sce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы было более менее понятно, задача такая:
Есть страница на которую переходит пользователь, приложение определяет атрибуты устройства с которого зашел юзер на страницу и сохраняет их в БД.
Так же сам юзер может получить из БД свои данные по его id.

По сути все ясно, что вроде должно быть 2 таблицы, но после комментов ничего не ясно:)
...
Рейтинг: 0 / 0
Проста БД
    #38924376
sce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще дополню что атрибуты для каждого юзера заполяютя обязательно. Те не будет такой ситуации когда у одного юзера 10 атрибутов а у другого 6.
...
Рейтинг: 0 / 0
Проста БД
    #38924636
ScarferNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sceЧтобы было более менее понятно, задача такая:
Есть страница на которую переходит пользователь, приложение определяет атрибуты устройства с которого зашел юзер на страницу и сохраняет их в БД.
Так же сам юзер может получить из БД свои данные по его id.

По сути все ясно, что вроде должно быть 2 таблицы, но после комментов ничего не ясно:)

Вторую таблицу тогда убирай. А в первую добавь внешний ключ на таблицу юзеров, которая уже имеется.
...
Рейтинг: 0 / 0
Проста БД
    #38924647
ScarferNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя тут может быть и связь М:М.
Какие атрибуты считываются с устройства?
...
Рейтинг: 0 / 0
Проста БД
    #38925609
sce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Атрибуты по типу таких: размер экрана, операционная система, версия флеш плеера и тд
...
Рейтинг: 0 / 0
Проста БД
    #38925865
ScarferNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sceАтрибуты по типу таких: размер экрана, операционная система, версия флеш плеера и тд
Тогда одной таблицы №1 с добавлением поля юзера достаточно.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проста БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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