2015-04-24 4 views
2

Я моделирую базу данных, в которой будут храниться данные, относящиеся к продажам в магазине. У меня есть два разных типа пользователей, которые имеют разные свойства.База данных Моделирование таблицы пользователей, имеющей 2 пользователя пользователей

В моем процессе нормализации я создал User1 таблицу и таблицу user2.

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

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

Если есть другое лучшее решение, я был бы признателен. Спасибо.

+1

Почему у вас должны быть две таблицы для этого продукта? почему не просто таблица для продаж? i.e PRODUCT_SALES, то есть идентификатор FK продукта и FK типа пользователя? – mel3kings

+0

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

+0

Можете ли вы опубликовать диаграмму отношений сущности? – mel3kings

ответ

3

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

UserTypes(UserTypeId PK, ...) 

Users(UserId PK, UserTypeId FK, ...) 

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

Properties(PropertyId PK, Name) 

UsersProperties(UserPropertyId PK, UserId FK, PropertyId FK, Value) 
+0

Из вашей модели таблица свойств содержит список различных свойств, но не определяет их значения. Даже если у вас есть свойства (PropertyId PK, Name, Value), каждый пользователь будет иметь строку в таблице свойств для определенного свойства. Хороший дизайн. – Tega

+0

См. Мой обновленный ответ. Добавьте значение в 'UsersProperties' – sqluser

Смежные вопросы