2016-10-31 6 views
1

У меня есть эта таблица (день, сотрудник нет, Имя сотрудника, клиента нет, имя клиента, № продукта, описание продукта, Цена за штуку, количество проданных товаров, общий объем продаж)Нормализация/3NF в базе данных

Пример данных:

22nd, e123, Dave, c1264, Sheila, p15462, Hoover, 4.50, 5, -- 
----, ----, -----, c64402, Jovek, p673431, Kettle, 2.25, 10, 45 
----, e4215, Johnny, c785, Keith, p15462, Hoober, 4.50, 2, 9 
23rd, e123, Dave, c64402, Jovek, p673431, Kettle, 2.25, 20, -- 

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

До сих пор я получил:

Product(ProdNo#,ProductDesc,Price) 
Client(ClientNo#, ClientName) 
Employee(EmployeeNo#, EmployeeName) 

Однако я не уверен в том, что делать в отношении отдельных продаж и общего объема продаж на каждый день?

Спасибо за помощь!

+0

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

+0

Вы привели пример начальной «таблицы». Но порядок строк имеет значение, поэтому он не является реляционной таблицей. Поэтому нормализация не имеет смысла. Однако, судя по тому, что вы, вероятно, хотите, чтобы альтернативные таблицы содержались, вы, похоже, не заботитесь о заказе. Таким образом, кажется, что мы можем просто заменить все «---» дни, дни работника No & Employee Name со значениями, указанными выше, и все «---» «Total Sales» со значениями следующего значения для получения таблицы проведение строк, где «в день День сотрудник с номером Employee No и name Employee Name ...». ... – philipxy

+0

.... Затем, чтобы нормализовать 3NF или BCNF, нам нужно знать все * функциональные зависимости * (FD). Что у тебя? Если вы не знаете, что такое FD, вы не знаете, что такое нормализация. Поэтому, пожалуйста, дайте все FD, и если вам нужно выяснить, что такое FD или нормализация, пожалуйста, узнайте. Если вы застряли, пожалуйста, объясните, где вы собрались, и что вы застряли. – philipxy

ответ

0

Это типичный пример использования star- or snowflake schema.

Таблицы Продукт, Заказчик, Сотрудник называются Таблица размеров.

Таблица фактов имеет внешние ключи к таблице размеров и содержит количество, например. бетонная продажа.

Sales(ProdNo#, ClientNo#, EmployeeNo#, Sale) 

Первичный ключ является compound key из ProdNo#, ClientNo#, EmployeeNo#.

Общий объем продаж не будет моделироваться явно, но запрашивается посредством агрегации, например.

SELECT P.ProdNo, SUM(S.sale) 
FROM Products P, Sales S 
WHERE P.Price > 1000 AND S.ProdNo = P.ProdNo 
GROUP BY P.ProdNo 

РСУБД или хранилища данных будет оптимизировать запрос, так что общий объем продаж не действительно должны быть смоделированы явно (не денормализация).

+0

Этот ответ не может требовать или оправдывать, что его предложения находятся в 3NF, что и есть вопрос (неясно). Кроме того, нормализация не добавляет или не отбрасывает столбцы, она заменяет таблицу другими, используя те же столбцы, которые всегда к ней присоединяются. – philipxy

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

  • Нет связанных вопросов^_^