2012-04-25 2 views
4

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

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

Мои таблицы выглядеть следующим образом:

Клиенты Таблица:

Id  /Primary key 
FullName 
Address 
Phone 

Элементы Таблица (таблица предлагаемой продукции):

Id  /Primary key 
ItemName 
Price 
Description 

счетов-фактур Таблица (сохраненные счета):

Id  /Primary key 
CustId /Foreign key is Id in Customer table 
ItemId /Foreign key is Id in Item table 
Notes 

ответ

7

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

Customer 
    id 
    name 
    etc. 

Item 
    id 
    name 
    etc. 

Invoice 
    id 
    cust_id 
    date 

InvoiceItem 
    id 
    inv_id 
    item_id 

Это классический способ моделирования many to many relationship с использованием таблицы перехода (т.е. InvoiceItem).

+0

Таким образом, если пользователь имеет несколько элементов счетов-фактур, каждый из которых хранится как отдельная запись в таблице Items Items? И все элементы, принадлежащие счету-фактуре, имеют тот же InvoiceId? –

+0

@ToddBauer Исправить. Для каждого счета-фактуры будет запись 'Invoice' с идентификатором. Для каждого элемента в каждом счете вы создадите 'InvoiceItem', который связывает элемент с факсом. Обычно для 'InvoiceItem' имеется столбец' количество', если в счет-фактуру могут быть добавлены несколько одинаковых элементов. – dasblinkenlight

+0

Отлично! Я также добавлю количество строк. И не по теме, я хотел сказать вам, что вы хорошо говорите и поняли свои объяснения, и я ценю ваше время и силы. Ответ: выбран. Продолжайте бороться с хорошей борьбой. –

1

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

счетов-фактур стол

Id  /Primary key 
CustId /Foreign key is Id in Customer table 
Notes 

Счет-фактура Элементы таблицы

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