Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zaprojektowaniem bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
Ulysess
dobry wieczór potrzebuje zrobić baze w której jedna z tabel liczyła by 30 pół... na innym forum pytałem się czy nie dało by rady z takiej jednej tabeli rozmieścić danych do paru tabel w odpowiedzi dostałem odpowiedz "klucz obcy" zrobiłem 2 tabele aby sprawdzić aż pewien user napisął mi że gdy w tabeli A mam np id_konta i parę innych pól to w tabeli B nie zostanie utworzony rekord z takim samym id jak w tabeli A. jak to jest ? :| chciałbym tabele z 32 polami podzielić na 3 jak to zrobić i czy w ogóle jest sens.. z góry dziękuje
blooregard
Tabela_A
id_rekordu_A
pole1
pole2
...

Tabela_B
id_rekordu_B
id_rekordu_A
pole1
pole2
....

Tabela C
id_rekordu_C
id_rekordu_A
pole1
pole2
....

Wybranie danych z trzech tabel dla pojedyńczego wpisu (rozbitego na trzy tabele - jedna z mozliwości):
  1. SELECT a.* , b.* , c.* FROM Tabela_A AS a
  2. NATURAL LEFT JOIN Tabela_B AS b
  3. NATURAL LEFT JOIN Tabela_C AS c
  4. WHERE a.id_rekordu_A = "$szukana_wartosc_id"
Ulysess
dzięki że w ogóle odpowiedziałeś ale nie o to mi chodziło (choć napewno się przyda) chodzi mi o to że chciałbym zrobić aby user Nowak miał swoje dane w 3 tabelach tzn w 1 np dane typu login haslo email w innej adres a w 3 bardziej szczegółowe dane. i tutaj pojawia się moje pytanie jak to zrobić ...
blooregard
users
user_id
user_login
user_passwd
...

user_contact_data
ucd_id
user_id
user_email
user_gg
user_skype
user_www
....

user_location_data
uld_id
user_id
user_street
user_street_number
user_city
user_zip
...

user_identification_data
ui_id
user_id
user_pesel
user_nip
user_regon
....

Czyli dokładnie tak, jak napisałem Ci w piewrszym poście, tylko nazwy tabel i pól były przykładowe
Ulysess
dzięki blooregard że próbujesz mi pomoc lecz źle się wyraziłem :/ chodzi o to aby przy rejestracji w równych tabelach były dane 1 usera. jest to możliwe questionmark.gif jeśli tak to jak smile.gif teoretycznie wydaje mi się ze poprostu dodaje nowy rekord do paru tabeli i id tego rekordu jest podporządkowane do 1 usera ale co jeśli np wywali jakiś błąd i do którejś tabeli nei doda questionmark.gif wszystko sie powali bo kolejny user to będzie miał w 3 tabelach np id 300 a w czwartej tabeli id 299. przynajmniej tak mi się wydaje smile.gif
petrrr
blooregard przecież dobrze napisał cool.gif

users
user_id <---- wartość unikatowa dla całej tabeli
user_login
user_passwd
...

user_contact_data
ucd_id <---- wartość unikatowa dla całej tabeli
user_id <---- wartość taka sama jak users.user_id
user_email
user_gg
user_skype
user_www
....

user_location_data
uld_id <---- wartość unikatowa dla całej tabeli
user_id <---- wartość taka sama jak users.user_id
user_street
user_street_number
user_city
user_zip
...

user_identification_data
ui_id <---- wartość unikatowa dla całej tabeli
user_id <---- wartość taka sama jak users.user_id
user_pesel
user_nip
user_regon
....

A więc ucd_id,uld_id,ui_id mogą być ustawiane automatycznie i mogą być inne niż user_id a user_id jest ustawiany przez Ciebie, w zależności od tego czyje dane zapisujesz.
Kolumnę users.user_id łączysz z kolumnami z innych tabel na podstawie np user_contact_data.user_id a nie user_contact_data.ucd_id

No, i to jest to co chciałeś smile.gif
kaminskp
users.user_id ----> user_contact_data.user_id
users.user_id ----> user_location_data.user_id
users.user_id ----> user_identification_data.user_id
To są właśnie moim zdaniem prawidłowo zbudowane relacje pomiędzy tabelami.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.