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?
- 1
- 2
- Rejestracja:ponad 10 lat
- Ostatnio:ponad 10 lat
- Postów:17

- Rejestracja:ponad 12 lat
- Ostatnio:7 miesięcy
- 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:prawie 17 lat
- Ostatnio:4 dni
- Postów:2792
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:prawie 11 lat
- Ostatnio:prawie 9 lat
- Postów:627

- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
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:ponad 10 lat
- Ostatnio:ponad 10 lat
- 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:ponad 10 lat
- Ostatnio:prawie 8 lat
- 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:ponad 10 lat
- Ostatnio:ponad 10 lat
- 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:około 21 lat
- Ostatnio:prawie 3 lata
- 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:prawie 11 lat
- Ostatnio:prawie 9 lat
- 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:ponad 10 lat
- Ostatnio:ponad 10 lat
- 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:ponad 10 lat
- Ostatnio:ponad 10 lat
- 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:około 21 lat
- Ostatnio:prawie 3 lata
- 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:ponad 10 lat
- Ostatnio:ponad 10 lat
- 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:około 21 lat
- Ostatnio:prawie 3 lata
- 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:ponad 14 lat
- Ostatnio:dzień
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:ponad 12 lat
- Ostatnio:7 miesięcy
- 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 polePracownik
naImie
iNazwisko
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. Dla1NF
PK będzie na polachid 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 :) -
teraz
2NF
- eliminujesz dane nadmiarowe przez rozbicie na kilka tabel. Tu tworzysz tabelePracownicy
,Towary
iSprzedaz
. Poprawne przejście do2NF
jest wtedy gdy powstałe tabele zawierają w sobie przynajmniej cześćPK
z1NF
PRACOWNICY
id pracownika | imie | nazwisko
---------------- | ---------------- | ----------------
P11 | Radomek | Ewelina
P22 | Nawrocki | Tadeusz
P33 | Nowak | Anna
PK
jest 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:ponad 10 lat
- Ostatnio:ponad 10 lat
- Postów:17
zanim przeczytam powyższy post, chciałbym się dowiedzieć co znaczy skrót 1NF/2NF/3NF



- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- 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.
- 1
- 2
vpiotr