Normalizacja tabeli

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

Chciałbym nauczyć się normalizować tabelę w accessie, w szkolę robimy to na takich przykładowych zadaniach
user image
Nigdy nie miałem do czynienia z bazami danych, mógłby ktoś podpowiedzieć od czego muszę zacząć?
Z tego co widzę, w tym przypadku muszą powstać 3 tabele. Rozumiem, że nie mogę sobie po prostu wstawić tych 3 tabel, tylko jakoś powiązać ? Mam zaprojektować strukturę tabel? Co to oznacza?

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

ja wiem, że to może się dziwne wydawać ale to https://www.google.pl/search?q=Normalizacja+tabeli jest bardzo dobre miejsce aby zacząć

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
1

Ja myślę, że szkoła jest dobrym miejscem, aby zacząć... (i mam tu na myśli naukę baz danych) Skoro "w szkole robimy to...", to czemu tu się pytasz... Sprawdzasz nauczyciela, czy co?
Rozumiem, że to zadanie domowe i nie chce ci się go robić (pewnie dlatego, że tak późna pora była), ale ludziom na forum też się nie chce wykonywać zadań za nieuków. Nawet nie wykazałeś chęci przepisania zadania, tylko fotkę wkleiłeś... Żal i żenada.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1

Czemu 3 tabele, a nie 5?

fourfour
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 627
1
somekind napisał(a):

Czemu 3 tabele, a nie 5?

Cicho... to miało być na szóstkę!

:)

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0
fourfour napisał(a):
somekind napisał(a):

Czemu 3 tabele, a nie 5?

Cicho... to miało być na szóstkę!

:)

Na 6-tke to pewnie byłoby 7 lub... 1.

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0
abrakadaber napisał(a):

ja wiem, że to może się dziwne wydawać ale to https://www.google.pl/search?q=Normalizacja+tabeli jest bardzo dobre miejsce aby zacząć

Przeczytaj jeszcze raz co napisałem.

Marcin.Miga napisał(a):

Ja myślę, że szkoła jest dobrym miejscem, aby zacząć... (i mam tu na myśli naukę baz danych) Skoro "w szkole robimy to...", to czemu tu się pytasz... Sprawdzasz nauczyciela, czy co?

Sprawdzam nauczyciela? Jak to wywnioskowałeś ?
Nie robię tego.

Marcin.Miga napisał(a):

Rozumiem, że to zadanie domowe i nie chce ci się go robić (pewnie dlatego, że tak późna pora była)

Powinieneś pisać na jakimś forum detektywistycznym.

Marcin.Miga napisał(a):

ale ludziom na forum też się nie chce wykonywać zadań za nieuków

Nie mów za wszystkich i nie obrażaj jeżeli nie znasz.

Marcin.Miga napisał(a):

Nawet nie wykazałeś chęci przepisania zadania, tylko fotkę wkleiłeś... Żal i żenada.

Zapomniałem, że żyjemy w średniowieczu, następnym razem przepisze odręcznie.
"Żal i żenada"

somekind napisał(a):

Czemu 3 tabele, a nie 5?

Hmmm, trochę nie rozumiem pytania, tak jest w treści.

fourfour napisał(a):
somekind napisał(a):

Czemu 3 tabele, a nie 5?

Cicho... to miało być na szóstkę!

:)

Rozbawiłeś towarzystwo.

vpiotr napisał(a):
fourfour napisał(a):
somekind napisał(a):

Czemu 3 tabele, a nie 5?

Cicho... to miało być na szóstkę!

:)

Na 6-tke to pewnie byłoby 7 lub... 1.

Kolejny śmieszek.


Teraz dla jasności, nie jest to praca domowa, możecie odpisać mi nawet za miesiąc jeżeli nie wierzycie.
Nie wiem do jakich szkół chodziliście, ale u mnie nie ma prac domowych z zakresu informatyki, a także na 3 godziny baz danych w ciągu dnia, wszyscy siedzą w internecie, a prowadzący nie robi nic. Pewnie nie jeden z was spotkał takiego nauczyciela na swojej drodze.
Dostajemy tylko przykładowe zadania z których później będzie podobne zaliczenie, ale trochę czasu jeszcze jest.
Dlatego chciałbym, żeby ktoś mi pomógł.

Vardamir
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
elo820 napisał(a):
somekind napisał(a):

Czemu 3 tabele, a nie 5?

Hmmm, trochę nie rozumiem pytania, tak jest w treści.

Ponieważ dwie kolejne Producenci i Dokumenty też by się przydały.

Odnośnie tematu. Dlaczego uważasz, że odpowiedź @abrakadaber na twoje pytanie jest zła? Pytałeś od czego zacząć. Należy zacząć od poczytania na temat normalizacji baz danych. W internetach jest masa stron o tej tematyce, od podstaw do zaawansowanych konstrukcji. Tylko trzeba poszukać i poświęcić swój czas na przeczytanie, np.

elo820 napisał(a):

... na 3 godziny baz danych w ciągu dnia, wszyscy siedzą w internecie, a prowadzący nie robi nic.

Właśnie te 3 godziny możesz na to poświęcić i nie potrzebujesz do tego nauczyciela. Oburzasz się, że nikt Ci nie chce pomóc, ale przecież nie będziemy tutaj odkrywać koła na nowo. Jeśli będziesz miał konkretny problem to pytaj, ale najpierw pokaż do czego doszedłeś i wytłumacz co sprawia Ci trudności. Przepisywanie tutaj treści z podstawowych kursów mija się z celem.

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

Zacząłem w google i trafiłem właśnie tu.
Przerysowałem sobie tabele do accessa, czyli 8 kolumn. Co muszę zrobić żeby zostały tylko 3: Pracownicy, Towary i Sprzedaż. Próbowałem coś z kluczami głównymi ale wyskakuje jakiś komunikat o duplikatach którego nie rozumiem + nawet nie wiem czy chodzi o te klucze ;/

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

http://pl.wikipedia.org/wiki/Postać_normalna_(bazy_danych) masz tu ładnie rozpisane krok po kroku, razem z przykładami jak wygląda normalizowanie ;]

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

Zanim zacznę robić zadania, przy przepisaniu tabeli tej początkowej składającej się z 8 kolumn, gdzie ustawić klucz główny ?

fourfour
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 627
E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

Więc ustawiam klucz główny jako ID pracownika, tylko że przy wprowadzaniu danych do 3 wiersza, wyskakuje komunikat że doprowadziłoby to do zduplikowania wartości w indeksie. Rozumiem, że klucz główny jest źle ustawiony.
Problem w tym, że gdzie go nie ustawię to pojawia się ten komunikat, wszędzie się coś powtarza, jak to ominąć ?

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

Dobra, trochę sprecyzuje bo doszedłem dalej. A więc nikt nie powiedział mi, że nie powinienem przerysowywać całej tabelki.
Z tego co mi się wydaje nie trzeba tego robić. Od razu zrobiłem 3 i stworzyłem następujące relacje
user image
W pierwszej tabeli ustawilem klucz glowny jako ID pracownika, w drugim jako Id tow, i teraz pojawia sie problem z 3 tabelką, nie wiem jaki klucz tu ustawić, próbowałem już w każdej która została i za każdym razem wyświetla się komunikat o duplikacie. Może błąd zrobiłem już wcześniej ?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

A no jasne że zrobiłeś błędy bo nie myslisz tylko robisz to "na pałe".

  1. Istnieją 3 rodzaje powiazań:
  • 1:1 - na przykład Użytkownik i jego Adres, przydatne jeśli często wyciągasz z bazy np. samo imie i nazwisko a adres rzadko
  • 1:n - na przykład jeden użytkownik może dokonać wielu zakupów w sklepie (ale każdy konkretny zakup jest związany tylko z jednym użytkownikiem!)
  • n:m - na przykład użytkownik i produkt -> jeden użytkownik może kupić wiele różnych produktów, a jednocześnie każdy produkt może być kupiony przez wielu użytkowników. Takie powiązanie z bazie danych wymaga tabeli łącznikowej która paruje ID z obu tabel.
  1. Nie rozumiem czemu Pracownik jest powiązany z Towarem.
  2. Nie rozumiesz chyba co to są klucze obce...
E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0
  1. To jak połączyć tabelę pracownicy z towarami? Nie trzeba tego robić ?
  2. Wiem tylko tyle co napisane jest w google, czyli mało i teoretycznie.
    Proszę o jeszcze jakąś podpowiedź, przypominam, że pierwszy raz siedzę przy bazach, nie śmiać się, też kiedyś zaczynaliście !
    Podejrzewam, że jest to bardzo banalne a ja za bardzo to komplikuje.
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

To jak połączyć tabelę pracownicy z towarami? Nie trzeba tego robić ? A jakie jest powiązanie między towarem a pracownikiem? Pytam o takie powiązanie w realnym zyciu, bo powiązania w bazie danych właśnie to modelują. W jaki sposób pracownik jest związany z towarem? Chcesz zapisać który pracownik wykładał dany towar czy co? o_O

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

idąc tym tropem, patrząc od strony realnego życia, powiązałbym ID pracownika z pracownikiem, ID tow z towarem, i ID tow z ceną

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1

Z tego co ja rozumiem, to Pracownik sprzedał dany Towar, więc w tabeli Sprzedaż powinny być klucze obce: idPracownika i idTowaru.

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

Brzmi prawidłowo, ale nadal mam komunikat o duplikacie podczas wprowadzania danych, już wiem że to przez klucz podstawowy i nie wiem na który przestawić, a strzelać nie chce

user image

dam1an
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1589
0

Czemu w tabeli Sprzedaż cena to PK?

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

właśnie nie wiem gdzie go ustawić i na screenie jest byle gdzie

O1
  • Rejestracja: dni
  • Ostatnio: dni
0
elo820 napisał(a):

właśnie nie wiem gdzie go ustawić i na screenie jest byle gdzie

Po prostu dodać kolumnę id sprzedaży u stawić ją jako PK.

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

Dodałem, ustawiłem i nadal komunikat o duplikacie.

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
4

Niech będzie - jak "krowie na rowie" bo widzę, ze inaczej się nie da...

  1. klikasz na znienawidzony link, który podałem w pierwszym moim poście a potem na drugi, który wyskoczy (pierwszy to bardziej teoria a drugi to omówienie krok po kroku)

  2. CZYTASZ ZE ZROZUMIENIEM

  3. sprowadzasz do 1NF - rozbijasz złożone pola na kilka - tu pole Pracownik na Imie i Nazwisko
    id pracownika | imie | nazwisko | id towar | nazwa towar | producent | cena brutto | dokument | upust
    ---------------- | ---------------- | ---------------- | ---------------- | ---------------- | ---------------- | ---------------- | ---------------- | ----------------
    P22 | Nawrocki | Tadeusz | S10 | Pendrive 4 GB | Kingston | 450.00 zł | Paragon | 10%
    P11 | Radomek | Ewelina | S33 | Intel Core Duo | Intel | 500.00 zł | Faktura | 0%
    P22 | Nawrocki | Tadeusz | S33 | Intel Core Duo | Intel | 500.00 zł | Paragon | 5%
    P11 | Radomek | Ewelina | S10 | Pendrive 4 GB | Kingston | 450.00 zł | Faktura | 0%
    P33 | Nowak | Anna | S22 | HDD 80 GB | Kingston | 550.00 zł | Faktura | 10%
    i wybierasz pola, które jednoznacznie definiują krotkę, czyli klucz główny. Dla 1NF PK będzie na polach id pracownika, id towar bo mając te pola jesteś w stanie jednoznacznie określić o który rekord chodzi. Do nauki ten przykład jest zły bo w prawdziwym systemie jest nieodpuszczalne aby pracownik mógł sprzedać dany towar tylko raz a tak w tym przykładzie jest, no ale nic :)

  4. teraz 2NF - eliminujesz dane nadmiarowe przez rozbicie na kilka tabel. Tu tworzysz tabele Pracownicy, Towary i Sprzedaz. Poprawne przejście do 2NF jest wtedy gdy powstałe tabele zawierają w sobie przynajmniej cześć PK z 1NF
    PRACOWNICY
    id pracownika | imie | nazwisko
    ---------------- | ---------------- | ----------------
    P11 | Radomek | Ewelina
    P22 | Nawrocki | Tadeusz
    P33 | Nowak | Anna
    PK jest pole id pracownika

TOWARY

Id towar nazwa producent cena
S33 Intel Core Duo Intel 500.00 zł
S10 Pendrive 4 GB Kingston 450.00 zł
S22 HDD 80 GB Kingston 550.00 zł
PK jest pole Id towar

SPRZEDAZ

id pracownika id towar dokument upust
P22 S10 Paragon 10%
P11 S33 Faktura 0%
P22 S33 Paragon 5%
P11 S10 Faktura 0%
P33 S22 Faktura 10%
PK są pola id pracownika i Id towar
  1. 3NF - tak się składa, że jest taka sama jak 2NF

Relacje są takie, że w tabeli SPRZEDAZ masz JEDEN PK na polach id pracownika, id towar oraz DWA 'FK' na polach id pracownika, id towar. Obie są relacjami 1..n

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

zanim przeczytam powyższy post, chciałbym się dowiedzieć co znaczy skrót 1NF/2NF/3NF

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

PK są pola id pracownika i Id towar
a jak ustawić dwa PK w jednej tabeli ? w googlach nie widze

dam1an
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1589
0

Przecież masz wyżej odpowiedź, co ty jeszcze tworzysz?

a jak ustawić dwa PK w jednej tabeli ? w googlach nie widze

Nie da się.

E8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

Pod 3 tabelą napisał "PK są pola id pracownika i Id towar"
To w tej 3 tabeli SPRZEDAZ co mam ustawic jako PK ?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

OMG chłopie, przeczytaj COKOLWIEK z tego co ci podaliśmy a nie tępo trzymaj się tylko skrawków w tym temacie! Można zrobić KLUCZ ZŁOŻONY z kilku atrybutów jednocześnie. Nie chodzi więc o zrobienie kilku PK w jednej tabeli a o zrobienie PK który stanowi wartość połączonych wartości kilku kolumn.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.