2010-08-05 10 views
8

Czy możecie mi pokazać, jak uzyskać tę ERD w piątej normalnej formie? Zrobiliśmy wczoraj zadanie klasowe, w którym mieliśmy prawdziwego klienta i wyjaśniliśmy nam, że moja grupa potrzebuje tego modelu. Próbuję zrobić krok dalej i zobaczyć, czy uda mi się go doprowadzić do piątej normalnej formy, potrafię to lepiej zrozumieć, ponieważ w przyszłym tygodniu będziemy robić kolejną grupę ERD, która będzie musiała być w 5fie, nie wiem, od czego zacząć, a książka nie przechodzi do mnie. Czy możecie mi pomóc? Erd Model http://img534.imageshack.us/img534/2118/capturekk.jpgPotrzebna pomoc w zakresie normalizacji projektu bazy danych (5nf)

Nowe informacje "Fake potrzeb klienta"

Klient ma 2 działy "Lab 1 Lab 2" tej kolejności przedmiotów medycznych z niego, jak rękawiczki i Pi zwierząt itp .. wydziałów rozrosły się, a on chce mieć na sobie to, co jest w zapasach, co sprzedają sprzedający , który ma najlepszą cenę i jaki jest koszt centrum , z którego pochodzi.

Sposób on wyjaśnił pozycja jest zamawiany jest jednostka idzie do niego i prosi o dostaw potem zapisuje co lab osoba jest od osoby, a co nazwać centrum kosztów do rachunku. ale on również chce śledzić, co zostało kupione przez datę i co jest w magazynie i co należy kupić. On również dał przykład, że niektórzy użytkownicy chcą elementy z konkretnego dostawcy, który może nie mieć dostęp do najlepszych cen i on otrzymuje również kilka katalogów w maili z cenami też, że chce torze.

Przepraszam, jeśli jest pomieszana, ale to wszystko z pamięci.

+0

Czy jest coś, co sprawia, że ​​myślisz, że nie jest to już w 5NF? –

+0

Studiowanie definicji tych form na Wikipedii prowadzi mnie do podejrzeń, że tak jest, chociaż będę z zainteresowaniem śledził dyskusję. –

+0

Proszę wyjaśnić logikę biznesową stojącą za tym modelem: czy jest to system śledzenia zakupów, czyli pogląd klientów na zamówienia, które złożyli u różnych dostawców, a nie na bardziej typowy przypadek dostawczych zamówień dostawców składanych przez klientów. – APC

Odpowiedz

4

Mam zamiar przykleić mi szyję i powiedzieć, że twój obecny schemat naprawdę nie kwalifikuje się do 5NF. Biorąc cytat z wikipedii, to mówi większość tabel 4nF już zgodne 5NF:

Wykorzystanie Jedynie w rzadkich sytuacjach robi 4NF tabeli nie są zgodne z 5NF. Te są sytuacjami, w których złożone ograniczenia w rzeczywistym świecie rządzące poprawnymi kombinacjami wartości atrybutów w tabeli 4NF nie są niejawne w strukturze tej tabeli. Jeśli taki tabela nie jest znormalizowane do 5NF ciężar utrzymania logicznej spójność danych w tabeli muszą być wykonywane częściowo przez zastosowanie odpowiedzialnej za insercji, delecji i aktualizacjach go; i istnieje podwyższone ryzyko , że dane w tabeli będą niezgodne z danymi w postaci . W przeciwieństwie do tego, konstrukcja o wartości 5NF nie wyklucza takich niekonsekwencji.

http://en.wikipedia.org/wiki/Fifth_normal_form

Być może celem nie jest dokonać 5NF bazy danych, ale aby zrozumieć, że to konstrukcja w porównaniu do 5NF i uczynić argument, dlaczego to może być już w 5NF.

Aktualizacja: czytając jakąś formę porozumienia z uwagami, wydaje swój projekt może być już w 5NF, czy to było zgodne z projektem lub przez przypadek z poprzedniej normalizacji pass.

+0

Ale czy można go dalej ulepszać, to to, co naprawdę chcę wiedzieć, prowadziłem grupę, kiedy szalejemy na tym wykresie i to przede wszystkim mój wkład, który komponuje ERD, ale było to głównie przez przypadek i przez odniesienie do niektórych slajdów, które wcześniej recenzja na zajęciach. –

+0

Ok, więc moim głównym pytaniem jest, czy zrobiłeś to inaczej? jeśli tak, co byś zrobił, aby uczynić to solidnym projektem 5nf. –

+0

Wygląda na to wystarczająco solidnie - zagregowałeś powiązane dane (tj. Podmiot z jego atrybutami) w swoich własnych tabelach, podzieliłeś wiele-na-wiele. Myślę, że potrzebujesz bardziej skomplikowanego zestawu wyników, aby zademonstrować 5NF. Patrząc na wpis wiki, pokazany przykład był dość specyficzny. Myślę, że obecny projekt jest dobry - jeśli nie, to wykładowca może wskazać wszelkie braki. –

1

Nota prawna: Nie znając logiki biznesowej, mógłbym być całkowicie nie w porządku z niektórymi z poniższych sugestii.

Ok kilka rzeczy, które widziałem w schemacie bazy danych.

  1. Twoja tabela miejsc powstawania kosztów wygląda zarówno na tabelę wyszukiwania i powiązania. Jeśli masz określoną liczbę miejsc powstawania kosztów, powiedzmy 5 na przykład, ale 1000 użytkowników, ta tabela będzie miała 5000 rekordów, które przechowują nazwę centrum kosztów (przy założeniu, że przypisanie do miejsca powstawania kosztów nie jest unikalne dla każdego użytkownika). Możesz odłączyć powiązanie użytkowników do oddzielnej tabeli, która ma własne PK i FK z costcenterId i userId.
  2. Tabela inwentaryzacji, która, jak zakładam, magazynuje ilość zapasów na rękę dla przedmiotu, powinna potrzebować tylko ilości na rękę, nie wiem, do czego służy opis. Jeśli opis nie jest unikalny dla każdego ekwipunku przedmiotu, możesz podzielić go na własną tablicę przeglądową i umieścić w tabeli zasobów.
  3. Przechowujesz "lineQuantity" w tabeli dostawców. Do czego służy ta kolumna. Brzmi to tak, jakby odnosiło się do określonego zamówienia w jakiś sposób (ilość zakupionego przedmiotu?) Jeśli tak, zechcesz podzielić go na własną tabelę i powiązać z zamówieniem, a nie z dostawcą. nie wiedząc dokładnie, co lineQuantity jest, ale ta sugestia może być całkowicie błędna.
  4. Ostatnia sugestia nie jest pewna, czy ma to znaczenie dla twojej klasy. Definiujesz wszystkie swoje typy danych jako CHAR (10), które możesz chcieć zmienić, aby były rzeczywistymi typami danych, których używałbyś do bazy danych.
Powiązane problemy