Pierwsza własna baza danych

Pierwsza własna baza danych
  • Rejestracja: dni
  • Ostatnio: dni
0

Chciałem spytać czy w miarę dobrze myślę jeśli bym chciał napisać bazę danych np.dla salonu samochodowego. Na razie znam tylko podstawy języka.

Zrobiłbym tabele z:

  • danymi sprzedawców (tabela by miała klucz główny)
  • samochodami na sprzedaż (tabela zawierała by klucz główny)
  • sprzedane samochodu (tabela by zawierała klucz obcy tabeli sprzedawców oraz samochodów na sprzedaż)
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Czym się różni tabela by miała klucz główny od tabela zawierała by klucz główny?

Heheczek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 148
0

Przydałaby się również tabela klienci,modele, marki samochodów no i zależy czy w przyszłości chciałbyś otworzyć więcej takich salonów - wtedy przydalaby się tabela salony i tu też zależy czy w 1 salonie można sprzedać tylko 1 samochód - wtedy tworzyłaby się relacja wiele do wielu więc dodatkowa tabela. Też przydałyby się jakieś tabele na faktury zakupów, reklamacje, kraje z jakich samochód pochodzi nie wiem czy twój salon miałby sprzedawać tylko nowe samochody czy również używane - wtedy dochodzą również dodatkowe tabele :).

krzysiek050
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1272
0

Widzę że dopiero zaczynasz, dlatego nie polecam robić zbyt rozbudowanej bazy danych. To co masz teraz na początek starczy, a gdy zechcesz ją dalej rozwinąć, to po prostu dopiszesz to czego będziesz potrzebował.

To co jest ważne to zadbanie o normalizację. https://pl.wikipedia.org/wiki/Normalizacja_bazy_danych . Nie musisz bawić się w ostatnią postać, ale spróbuj chociaż zrobić pierwsze 2,3.

mariano901229
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 597
0

Przykładowa baza z następującymi tabelami:
Sprzedawca (idSprzedawcy, imie, nazwisko,dataUrodzenia, adres) - można zastosować zamiast sztucznego klucza głównego, naturalny np. pesel, nip, idOdciskuPalca pomnożona przez wzrost - wiek etc.
Samochody (idSamochodu, marka, model)
Sprzedaz (idSprzedazy, idSamochodu - klucz obcy, idSprzedawcy - klucz obcy, dataSprzedazy, kwotaSprzedazy)

Cena może być umieszczona w tabeli samochody. Jeżeli jest to stała cena niepodlegająca negocjacjom.

axelbest
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2255
0

@mariano901229 Po co w bazie danych używać polskich nazw? Lepiej od razu nauczyć się stosowania angielskich odpowiednich zamienników. Nie polecałbym też nazywania kolumn typu ID z afiksem od nazwy tabeli

Kopiuj
SELECT idSprzedawcy FROM sprzedawcy --poniekąd brzmi dziwnie
Kopiuj
SELECT id FROM vehicle_vendor --dałem vehicle - bo możliwe że baza rozrośnie się o motocykle
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Nie polecałbym też nazywania kolumn typu ID z afiksem od nazwy tabeli

Dlaczego nie?
Bardzo wygodnie i przejrzyście jest potem robić klucze obce na takie tabele.

axelbest
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2255
0

Sorry - źle się wyraziłem. U mnie najczęściej wygląda to tak
id | id_author | id_vehicle | id_owner...... czyli klucz główny (id najczęściej ) zostawiam bez afiksu, dlaczego? Skoro robimy selecta/joina/obcy klucz w związku z tabelą vehicle.... to po co dublować tą informację?

mariano901229
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 597
0
axelbest napisał(a):

@mariano901229 Po co w bazie danych używać polskich nazw? Lepiej od razu nauczyć się stosowania angielskich odpowiednich zamienników. Nie polecałbym też nazywania kolumn typu ID z afiksem od nazwy tabeli

Kopiuj
SELECT idSprzedawcy FROM sprzedawcy --poniekąd brzmi dziwnie
Kopiuj
SELECT id FROM vehicle_vendor --dałem vehicle - bo możliwe że baza rozrośnie się o motocykle

Człowiek chce się nauczyć tworzyć bazy. Nie mieszajmy mu w głowie niech zrobi tak jak umie. Co do nazw. Widziałem wiele projektów gdzie nazwy angielskie są pomieszane z polskimi. Często stosuje Id z nazwą tabeli dla mnie takie rozwiązanie się sprawdza. Zresztą jest gdzieś napisane jak ma być nazwana kolumna z kluczem głównym. Ważna by była czytelna.

  • Rejestracja: dni
  • Ostatnio: dni
0

Dlaczego pokazuje mi błąd w pierwszej linijce, jeśli dobrze nazwe wpisuje?

Kopiuj
INSERT INTO SzczegoloweDaneCzlonkow
(
IdentyfikatorCzlonka,
Imie,
Nazwisko,
DataUrodzenia,
Ulica,
Miasto,
Wojewodztwo,
KodPocztowy,
Email,
DataPrzystapienia
)
VALUES
(
1,
'Katarzyna',
'Szewczyk',
'1977-01-09',
'ul.Główna',
'Łódź',
'łódzkie'
'12-456',
'kasia@mail.com',
'2004-02-23'
);
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Jaki błąd?

  • Rejestracja: dni
  • Ostatnio: dni
0

Column count doesn't match value count at row 1

mariano901229
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 597
0
Kopiuj
INSERT INTO SzczegoloweDaneCzlonkow
(
IdentyfikatorCzlonka,
Imie,
Nazwisko,
DataUrodzenia,
Ulica,
Miasto,
Wojewodztwo,
KodPocztowy,
Email,
DataPrzystapienia
)
VALUES
(
'1',
'Katarzyna',
'Szewczyk',
'1977-01-09',
'ul.Główna',
'Łódź',
'łódzkie'
'12-456',
'kasia@mail.com',
'2004-02-23'
);
  • Rejestracja: dni
  • Ostatnio: dni
0

nadal to samo.

HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1866
0

Jakiego typu jest pole IdentyfikatorCzlonka ? (zakładam, że nie jest to właściwy typ ;) )

A tak w ogóle co to za baza.
Jeżeli MySQL (zgaduje) to pokaż wynik zapytania:

Kopiuj
SHOW COLUMNS FROM SzczegoloweDaneCzlonkow
  • Rejestracja: dni
  • Ostatnio: dni
0

wpisałem integer bo tak miałem w podręczniku z którego się uczę, może było trzeba dać int a nie integer?

  • Rejestracja: dni
  • Ostatnio: dni
0

Daję w załączniku, teraz IdentyfikatorCzlonka jest na końcu bo usunąłem go i dodałem jeszcze raz z typem int zamiast integer, ale nic to nie pomogło. Czy można jakoś zrobić aby IdentyfikatorCzlonka był znowu pierwszy?

  • Rejestracja: dni
  • Ostatnio: dni
0

wpisałem przed chwilą byle jakie dane to poszło, a ten kod co podałem w pierwszym poście nie chce działać.

HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1866
0
Kopiuj
INSERT INTO SzczegoloweDaneCzlonkow
(
IdentyfikatorCzlonka,
Imie,
Nazwisko,
DataUrodzenia,
Ulica,
Miasto,
Wojewodztwo,
KodPocztowy,
Email,
DataPrzystapienia
)
VALUES
(
'1',
'Katarzyna',
'Szewczyk',
'1977-01-09',
'ul.Główna',
'Łódź',
'łódzkie'       -- BRAK PRZECINKA !!!
'12-456',
'kasia@mail.com',
'2004-02-23'
);
  • Rejestracja: dni
  • Ostatnio: dni
0

dobra dzięki, jakoś łatwo takie rzeczy zauważyć.
Czy da się zrobić teraz tak aby identyfikatorczlonka wrócił na pierwsze miejsce tak aby najpierw wartość tego pola wpisywać?

  • Rejestracja: dni
  • Ostatnio: dni
0

znaczy nie łatwo*

HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1866
0

W sumie to komunikat jasno na to wskazywał, ale tylko spojrzałem, że liczba wierszy się zgadza to kombinowałem dalej, a nie spojrzałem na przecinki ...

A co pytania:
http://stackoverflow.com/questions/6805426/how-to-move-columns-in-a-mysql-table

  • Rejestracja: dni
  • Ostatnio: dni
0

Ktoś pokazał,że tak przesuwa się pole na pierwsze miejsce:

Kopiuj
ALTER TABLE UserOrder 
   CHANGE order_id order_id INT(11) NOT NULL FIRST;

Próbowałem tak i nie działa:

Kopiuj
ALTER TABLE SzczegoloweDaneCzlonkow CHANGE IdentyfikatorCzlonka int NOT NULL FIRST
  • Rejestracja: dni
  • Ostatnio: dni
0

Dobra to zadziałało:

Kopiuj
ALTER TABLE SzczegoloweDaneCzlonkow MODIFY COLUMN IdentyfikatorCzlonka int FIRST
  • Rejestracja: dni
  • Ostatnio: dni
0

A czy rekord da się przesunąć do góry tak jak pole?

HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1866
0

A czemu miało by to służyć ?

  • Rejestracja: dni
  • Ostatnio: dni
0

Bo np. tutaj chciałbym rekord z numerem 5 przesunąć nad 6, da się? W załączniku zdjęcie:

HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1866
0

Wyniki masz posortowany po danych kolumnach i to od ich zawartości zależy kolejność rekordów.

Dodaj ORDER BY do swojego zapytania

MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1107
1
Biały Terrorysta napisał(a):

Bo np. tutaj chciałbym rekord z numerem 5 przesunąć nad 6, da się? W załączniku zdjęcie:
Taka mała rada. W przypadku gdy nie dasz klauzuli order by w zapytaniu sql'owym nie masz gwarancji jak zostaną zwrócone rekordy. Przy bardziej zaawansowanych zapytaniach gdzie masz złączenia kilku tabel wyniki mogą być pomieszane i nie mieć żadnego logicznego ułożenia.

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.