2013-04-09 1 views
1

Я уверен, что на это можно ответить, но точно не знаю где.База данных: Foreign Key Enforcement

Предисловие:

Мы живем в биллинга. Дизайн приложений довольно прост, мы создаем веб-магазин для бизнеса и предоставляем учетные данные владельцам бизнеса.

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

Основные объекты могут быть созданы с использованием веб-интерфейса, тогда как биллинг выполняется в собственных приложениях для устройств.

Таблицы базы данных:

BUSINESS: id, name etc. - Business Info Table 
CATEGORY: id, business_id, name etc. - Product Categories 
PRODUCT: id, category_id, name etc. - Products 

Применение:

Spring РОО веб-приложение. Spring MVC как технология GUI

Проблема:

Как упоминалось ранее владельцы должны использовать свои учетные данные для входа в интернет-магазине. Таким образом, в то время, когда они начали создавать объекты, webapp знает соответствующий идентификатор бизнеса, который прозрачно хранится для всех категорий, продуктов и т. Д.

При создании продуктов пользователь может выбрать категорию, в которой может упасть продукт.

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

Как некоторые из вас могут знать, ROO использует подход к созданию сервиса для каждой операции CRUD. Поэтому, если мы решили не хранить business_id с продуктом, бизнес-правило можно обойти, если кто-то попытается вызвать службу с идентификатором категории, который не относится к соответствующему бизнесу. Или это хорошая идея оставить проект базы данных неповрежденным и сосредоточиться на обеспечении сервисов.

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

Заранее спасибо:) !!!!

ответ

0

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

http://msdn.microsoft.com/en-us/library/aa479086.aspx

Я предпочитаю подход арендатор в-схему.

Вы можете использовать функцию Multi-найма JBoss Hibernate для автоматизации этого:

http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch16.html