Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / [Hibernate] 3 нормальная форма или удобство? / 10 сообщений из 10, страница 1 из 1
30.03.2016, 21:56
    #39204601
meph
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Hibernate] 3 нормальная форма или удобство?
Добрый день,

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

Структура БД довольно тривиальная, думаю тут все понятно без дополнительных объяснений.

Я привык исходить из того, что БД является фундаментом приложения, и ее не изменяют в угоду удобству. Но мне рекомендуют воспользоваться другим подходом: подстраивать БД под юзер стори.

Например, такая юзер стори: сотруднику в магазине нужно найти где находится товар#1. Запросы на скуле писать не комильфо, нужно использовать средства ORM. Предложение заключается в том, чтобы довавить колонку store_id в таблицу product_location, тогда мы сразу получить store_location_id.

Мне эта идея кажется неправильной, так как мы дублируем store_id. Подскажите, удобство все-таки решает, и БД должна опираться на юзер стори в первую очередь или сначала 3 НФ, а потом все остальное?

Интересуют не размышления в теории, а как этот вопрос решается на боевых проектах.
...
Рейтинг: 0 / 0
31.03.2016, 04:23
    #39204653
dimonz80
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Hibernate] 3 нормальная форма или удобство?
mephДобрый день,

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

Структура БД довольно тривиальная, думаю тут все понятно без дополнительных объяснений.

Я привык исходить из того, что БД является фундаментом приложения, и ее не изменяют в угоду удобству. Но мне рекомендуют воспользоваться другим подходом: подстраивать БД под юзер стори.

Например, такая юзер стори: сотруднику в магазине нужно найти где находится товар#1. Запросы на скуле писать не комильфо, нужно использовать средства ORM. Предложение заключается в том, чтобы довавить колонку store_id в таблицу product_location, тогда мы сразу получить store_location_id.

Мне эта идея кажется неправильной, так как мы дублируем store_id. Подскажите, удобство все-таки решает, и БД должна опираться на юзер стори в первую очередь или сначала 3 НФ, а потом все остальное?

Вы бы хоть код классов привели помимо картинки со структурой БД.

Интересуют не размышления в теории, а как этот вопрос решается на боевых проектах.



В боевых проектах нарушается даже 1НФ.

Подходов к проектированию, по большому счету, 2:
1) DB first - это то как вы привыкли: сначала БД, потом все остальное.
2) Model first - это то как вам посоветовали (ORM подход): сначала модель, а как сохранять - вопрос вторичный.

веселье начинается когда нам надо получить обратно все что мы там насохраняли)))

авторМне эта идея кажется неправильной, так как мы дублируем store_id.
Правильно кажется) Вносить избыточность конечно можно и так делается сплошь и рядом, только надо 100 раз подумать и отдавать полный отчет себе в том, зачем это сделано.

авторЗапросы на скуле писать не комильфо, нужно использовать средства ORM.
Native SQL queries - вполне себе средства ORM. HQL в конце концов есть. Не надо прятаться от реляционной структуры данных, тем более если вам она ближе.

На  HQL примерно как-то так:
Код: java
1.
2.
3.
4.
Product ourProduct = ...;
ProductLocation locationOfOutProduct = session.createQuery("select pl.location from ProductLocation pl where pl.product = :ourProduct")
.setParameter("ourProduct", ourProduct)
.getSingleResult();
...
Рейтинг: 0 / 0
31.03.2016, 07:08
    #39204667
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Hibernate] 3 нормальная форма или удобство?
[quot mephЯ привык исходить из того, что БД является фундаментом приложения, и ее не изменяют в угоду удобству. Но мне рекомендуют воспользоваться другим подходом: подстраивать БД под юзер стори.[/quot]

Вот поэтому я всегда говорю "ORM - зло!"
Если мы храним данные в СУРБД, то данные должны хранится по реляционным правилам.
А вот "юзер стори" должны хранится в объектах сервера приложений и потом сохранятся в БД.
В этом ORM не помогают, а только мешают.
Т.о. как только идет конфликт м/у "юзер стори" и СУРБД, то выкидываем ORM и пишем запросы и код, которые делают преобразование из одного в другое.
...
Рейтинг: 0 / 0
31.03.2016, 07:41
    #39204675
dimonz80
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Hibernate] 3 нормальная форма или удобство?
mad_nazgulmephЯ привык исходить из того, что БД является фундаментом приложения, и ее не изменяют в угоду удобству. Но мне рекомендуют воспользоваться другим подходом: подстраивать БД под юзер стори.

Вот поэтому я всегда говорю "ORM - зло!"
Если мы храним данные в СУРБД, то данные должны хранится по реляционным правилам.
А вот "юзер стори" должны хранится в объектах сервера приложений и потом сохранятся в БД.
В этом ORM не помогают, а только мешают.
Т.о. как только идет конфликт м/у "юзер стори" и СУРБД, то выкидываем ORM и пишем запросы и код, которые делают преобразование из одного в другое.

Че так радикально-то?)) Ну да, когда надо посложнее, то все ручками на SQL/HQL и вся магия ORM испаряется. ORM - для CRUD рутины и с этой задачей вполне справляется.
...
Рейтинг: 0 / 0
31.03.2016, 08:24
    #39204695
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Hibernate] 3 нормальная форма или удобство?
meph,
Где схема что тебе рекомендуют?
...
Рейтинг: 0 / 0
31.03.2016, 09:02
    #39204725
Новичок ООП.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Hibernate] 3 нормальная форма или удобство?
dimonz80В боевых проектах нарушается даже 1НФТы ври да не завирайся.
...
Рейтинг: 0 / 0
31.03.2016, 09:11
    #39204737
dimonz80
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Hibernate] 3 нормальная форма или удобство?
Новичок ООП.dimonz80В боевых проектах нарушается даже 1НФТы ври да не завирайся.

Верить тебя никто не заставляет. Не видел такого - ну и хорошо. Нервы целее будут)
...
Рейтинг: 0 / 0
31.03.2016, 18:36
    #39205413
meph
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Hibernate] 3 нормальная форма или удобство?
Petro123,
Сорри, картинки нет, но изменение лишь одно: добавляется поле store_id в таблицу product_location, т.е. обе таблицы store_location и product_location будут ссылаться на stores.


Спасибо всем за ответы. Насколько я понял, если очень хочется нарушить логичную структуру БД, то можно, но нужно сразу запомнить где разложены грабли. Например, что делать если каким-то образом в для одного и того же продукта в store_location и product_location оказались различные store_id.
...
Рейтинг: 0 / 0
31.03.2016, 22:49
    #39205551
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Hibernate] 3 нормальная форма или удобство?
mephСорри, картинки нет
а написать просто в строчку имя таблы и поля религия не позволяет?

Справочник продуктов
=============
Код
Имя
Инв.Номер

СвалкаПродуктов
=============
Id
Код из справочника прод.(FK)
IdМагазина(FK)

Справоник магазинов
==============
Id
Имя
Адрес
...
Рейтинг: 0 / 0
31.03.2016, 22:51
    #39205552
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Hibernate] 3 нормальная форма или удобство?
mephесли очень хочется нарушить логичную структуру БД, то можно
от бизнеса зависит.
Кому то адрес можно в одну строку писать.
Кому то через КЛАДР со своей БД только на адрес.
Т.к. до проектирования БД проектируют Сущности.
Ты их пропустил.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / [Hibernate] 3 нормальная форма или удобство? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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