2013-04-26 3 views
0

Мне нужно разработать базу данных для системы, где есть Клиентов и Продавцов но оба они связаны с организацией под названием Пользователей, где каждый пользователь либо клиент или поставщик. проблема заключается в том, что Поставщики связаны с другими объектами, которые Клиенты не являются. так как я могу создать такую ​​базу данных?Обобщения в базе данных

+1

К сожалению, этот вопрос не подходит для SO. Пожалуйста, прочитайте http://stackoverflow.com/faq – Barranka

+0

Это называется Party Model –

ответ

0

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

Кроме того, для добавления внешнего ключа, который требуется для пользователя, можно управлять в качестве триггера добавления/редактирования, если это позволяет ваш БД. Таким образом, вы можете убедиться, что идентификатор поставщика, используемый для этих связанных объектов, не является идентификатором пользователя, связанным с клиентами. (...WHERE userid NOT IN (SELECT userid FROM users WHERE customer = TRUE))

* Клиенты и поставщики имеют разные свойства/поля, поэтому не должны находиться в одной таблице.

+0

. Они могут совместно использовать общий набор информации, такой как информация для входа на веб-сайт. – Marvo

+0

, но проблема в том, что иногда мне нужно связать обоих поставщиков и клиентов с одной и той же таблицей. скажем, я хочу присоединиться к поставщикам к таблице под названием (Учетные записи) , и я хочу присоединиться к клиентам к та же таблица (Учетные записи) НО, каждая запись ACCOUNTS Должно быть связано с ОДНОМ пользователем (будь то заказчиком или продавцом)! Как я могу решить этот вопрос? – wadda7j

+0

Я предполагаю, что когда вы присоединяетесь к таблице 'Accounts' либо: a) Поставщики и клиенты НЕ привязаны в одной записи - поэтому поле' entityID' в Accounts может быть Клиентом или Поставщиком - в этом случае используйте 'userID 'и у вас есть поле для' customer = TRUE/FALSE'. ИЛИ b) если Поставщики и Клиенты связаны в одной записи, то очевидные поля 'vendorID' и' customerID' (но я не думаю, что это то, что вы просили, поэтому используйте опцию a.) – aneroid

0

Возможно, у продавцов и клиентов есть отношение к таблице пользователей.

user 
=========== 
userId 
name 

vendor 
=========== 
vendorId 
companyName 
userId 

customer 
=========== 
customerId 
source 
userId 

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

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