![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 1 Dołączył: 4.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich,
na poczatku chciałbym zaznaczyć, że zaczynam przygodę z MYSQL i właśnie dlatego pojawiło się kilka problemów natury teoretycznej. Ale, ale od początku - mam za zadnie postawić BD, której jednym z elementów będzie tabela contacts: (IMG:http://i60.tinypic.com/29vgp47.png) Po kilku tutorialach nauczyłem się jak obsługiwać podstawowe zapytania w MYSQL, gdy moje pojmowanie MYSQL zostało wywrócone przez to co odkryłem googlując "modelowanie BD". I wtedy dopiero zrozummiałem, na czym polega potęga SQL. Wcialając pojęcie "redundancji" w życie poprawiałem tą tabelę, która wyjąda teraz tak: (IMG:http://i62.tinypic.com/5my3jl.png) Pytanie 1. Czy jest to właściwie zbudowany model? Czy tak to właśnie powinno wyglądać? Jakieś pomysły, podpowiedzi bardziej doświadczonych użytkowaników? Pytanie 2. Model stworzyłem w WorkBenchu 6.1 Na papierze wygląda fajnie, tylko jak to teraz obsługiwać? Jak wgrać rekordy do takiej bazy? Wcześniej używałem INSERT INTO (z pliku .csv) i ładował. Co mam zrobić z taką "porozbijaną" tebelą żeby foreign keys działały?Jak się to takiego zagadnienia podchodzi? Format danych jest taki: (IMG:http://i59.tinypic.com/zn54kk.png) i za każdym razem importuję 10K - 100K. Dodam, że nie oczekuję gotowego rozwiązania (choć byłoby miło), ale chociaż naprowadzenia na to jak to zrobić! (IMG:style_emoticons/default/wink.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma sensu robienie rozdzielania tabel jeżeli są relacje 1-1. Możesz wydzielić co najwyżej common Cols czyli takie które są pobierane "zawsze" i takie które co jakiś czas są dociągane.
U ciebie rozdzielenie nie ma sensu. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 1 Dołączył: 4.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za cenne uwagi, oczywiście pola name,surname nie mogą być puste. Tabelę `classification` wydzieliłem chcąc usunąć część "niepotrzebnych" danych z `contacts`. Generalnie chodzi o to że z tabeli `contacts` trzeba usunąć kontakty które znajdują się w existing_leads. Te identyfikuję po name, surname, phone,mobile. Pomyślałem, że przerzucenie "niepotrzebnych" danych do innej tabeli przyśpieszy proces wyszukiwania?
Pytanie czy takie rozdzielenie w ogóle ma sens (docelowo po usunięciu rekordów z contacts na podstawie existing_leads będę potrzebował znowu połączyć wszytsko żeby zrobić z tego ładny widok). Co o tym myślicie? czy warto zostać czy pierwszej koncepcji jednej dużej tabeli? Czyli tak: (IMG:http://i59.tinypic.com/30xfu3b.png) czy raczej poprawić relacje 1:1 i zrobić tak: (IMG:http://i60.tinypic.com/34zlylv.png) A propos importu danych i skryptu to czy pownien on być w PHP i wyglądać tak jak tu (post Pyton_000 z innego forum):
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
To mój kod? Nie może być (IMG:style_emoticons/default/wink.gif) (czyżby z WH?)
Powiem tak... o ile nie robisz "SELECT *" to dane mogą być w jednej tabeli. Co do samego projektu to: Tabela phone połączona relacją 1:n po ID gdzie phone: Kod |---------|-------|------| | user_id | phone | type | |---------|-------|------| I zamiast addres i business_address: Kod |---------|------|---------|--------|-------|-----|------| | user_id | name | address | suburb | state | zip | type | |---------|------|---------|--------|-------|-----|------| Przy czym name może być NULL, a type określa czy biznesowy czy zwykły |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 1 Dołączył: 4.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
czyli mniej więcej powino wyglądać to tak:
(IMG:http://i.imgur.com/fxpX6n1.png) Niestety zazwyczaj potrzebuję wszystkich informacji z BD więc używam SELECT*... czy w tym wypadku rozsądniej będzie trzymać to w jednej tabeli? tak jak ta pierwsza koncepcja: (IMG:http://i.imgur.com/EowkgwP.png) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Jak połączysz tabele JOINem to SELECT * można
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 1 Dołączył: 4.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Sklejanie nie jest czaso i zasobożerne. Ale jeżeli będziesz miał np. >2 typów adresów i >2 telefonów to moja struktura jest bardziej optymalna bo nie duplikujesz kolumn.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 10:30 |