Chciałbym nauczyć się normalizować tabelę w accessie, w szkolę robimy to na takich przykładowych zadaniach

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?
Normalizacja tabeli
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6610
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ąć
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2794
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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
Czemu 3 tabele, a nie 5?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 627
- Rejestracja: dni
- Ostatnio: dni
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
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ł.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
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 ;/
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
http://pl.wikipedia.org/wiki/Postać_normalna_(bazy_danych) masz tu ładnie rozpisane krok po kroku, razem z przykładami jak wygląda normalizowanie ;]
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
Zanim zacznę robić zadania, przy przepisaniu tabeli tej początkowej składającej się z 8 kolumn, gdzie ustawić klucz główny ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 627
http://pl.wikipedia.org/wiki/Klucz_g%C5%82%C3%B3wny
http://msdn.microsoft.com/pl-pl/library/encyklopedia-sql--klucze-glowne--primary-key-i-identity.aspx to może nie tylko access, ale ogólnie może rzucić jakieś światło na ten temat.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
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ąć ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
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

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 ?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
A no jasne że zrobiłeś błędy bo nie myslisz tylko robisz to "na pałe".
- 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.
- Nie rozumiem czemu Pracownik jest powiązany z Towarem.
- Nie rozumiesz chyba co to są klucze obce...
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
- To jak połączyć tabelę pracownicy z towarami? Nie trzeba tego robić ?
- 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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
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ą
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
Z tego co ja rozumiem, to Pracownik sprzedał dany Towar, więc w tabeli Sprzedaż powinny być klucze obce: idPracownika i idTowaru.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
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

- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 1589
Czemu w tabeli Sprzedaż cena to PK?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
właśnie nie wiem gdzie go ustawić i na screenie jest byle gdzie
- Rejestracja: dni
- Ostatnio: dni
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
Dodałem, ustawiłem i nadal komunikat o duplikacie.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6610
Niech będzie - jak "krowie na rowie" bo widzę, ze inaczej się nie da...
-
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)
-
CZYTASZ ZE ZROZUMIENIEM
-
sprowadzasz do
1NF- rozbijasz złożone pola na kilka - tu polePracowniknaImieiNazwisko
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. Dla1NFPK będzie na polachid pracownika,id towarbo 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 :) -
teraz
2NF- eliminujesz dane nadmiarowe przez rozbicie na kilka tabel. Tu tworzysz tabelePracownicy,TowaryiSprzedaz. Poprawne przejście do2NFjest wtedy gdy powstałe tabele zawierają w sobie przynajmniej cześćPKz1NF
PRACOWNICY
id pracownika | imie | nazwisko
---------------- | ---------------- | ----------------
P11 | Radomek | Ewelina
P22 | Nawrocki | Tadeusz
P33 | Nowak | Anna
PKjest poleid 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 |
3NF- tak się składa, że jest taka sama jak2NF
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
zanim przeczytam powyższy post, chciałbym się dowiedzieć co znaczy skrót 1NF/2NF/3NF
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
PK są pola id pracownika i Id towar
a jak ustawić dwa PK w jednej tabeli ? w googlach nie widze
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 1589
Przecież masz wyżej odpowiedź, co ty jeszcze tworzysz?
a jak ustawić dwa PK w jednej tabeli ? w googlach nie widze
Nie da się.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 17
Pod 3 tabelą napisał "PK są pola id pracownika i Id towar"
To w tej 3 tabeli SPRZEDAZ co mam ustawic jako PK ?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
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.