Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z zaprojektowaniem bazy, klucze obce
Ulysess
post
Post #1





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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"
Go to the top of the page
+Quote Post
Ulysess
post
Post #3





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

Ostrzeżenie: (0%)
-----


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ć ...
Go to the top of the page
+Quote Post
blooregard
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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
Go to the top of the page
+Quote Post
Ulysess
post
Post #5





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/questionmark.gif) jeśli tak to jak (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
petrrr
post
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 9.07.2009

Ostrzeżenie: (0%)
-----


blooregard przecież dobrze napisał (IMG:style_emoticons/default/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ś (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kaminskp
post
Post #7





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 18.03.2008
Skąd: Olsztyn

Ostrzeżenie: (20%)
X----


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.
Go to the top of the page
+Quote Post

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: 24.08.2025 - 00:37