Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Modelowanie BD, podstawowe pytania dt. modelowania BD, jej użycia i update
Shrapnel
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Shrapnel
post
Post #2





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):

  1. <?php
  2. function import_cvs($cvs, $separator, $tabela) {
  3.  
  4. $handle = fopen("$cvs", "r");
  5. $i = 1;
  6. while (($data = fgets($handle, 4092)) !== FALSE)
  7. {
  8. if ($data[0][0] == '#' || $data[0][0] == '*' || empyt($data[0])) {
  9. continue;
  10. }
  11.  
  12. $sql = 'INSERT INTO `' . $tabela . '` (';
  13. $data = explode($separator, $data);
  14. if ($i == 1) {
  15. $pola = count($data);
  16.  
  17. for ($j=0; $j<$pola; $j++) {
  18.  
  19. $sql .= '`' . $data[$j] . '`';
  20.  
  21. if ($j < $count - 1) {
  22. $sql .= ', ';
  23. }
  24. }
  25. continue;
  26. }
  27.  
  28. $sql .= ') VALUES (';
  29.  
  30. for ($j=0; $j<$pola; $j++) {
  31.  
  32. $sql .= '`' . $data[$j] . '`';
  33.  
  34. if ($j < $count - 1) {
  35. $sql .= ', ';
  36. }
  37. }
  38.  
  39. $sql .= ');';
  40. or die('<b>Wystapil blad nr:</b> ' . mysql_errno() . '<br /><b>Opis bledu:</b> ' . mysql_error());
  41.  
  42. $i++;
  43. }
  44. fclose($handle);
  45. $message = 'Pomyślnie zaimportowano: ' . $i-1 . ' wierszy.';
  46. return $message;
  47. }
  48.  
  49.  
  50. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 16:41