Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Realizacja relacji 1 do 1
blum1
post 19.07.2011, 09:48:54
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 24.04.2007

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


Witam
Mam dwie tabele które chciał bym by były w relacji 1 do 1 i teraz pytanie jak to zrobić technicznie. mam dwa pomysły.
1.Podejście 1
CREATE TABLE `tabela1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30)
}

CREATE TABLE `tabela2` (
`id` int(11) NOT NULL PRIMARY KEY,
`inne` varchar(30)
}
Przy dodawaniu rekordu do tabeli jeden bedę dodawał do tabeli2 rekord o tym samym id co w tabeli jeden. czyli tabela1.id = tabela2.id

2.Podejście 2
CREATE TABLE `tabela1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30)
}

CREATE TABLE `tabela2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tabela1_id` int(11) NOT NULL ,
`inne` varchar(30)
}
Tu tabela2 będzie połączona poprzez pole 'tabela1_id' i przy dodawaniu rekordu do tabeli jeden bedę dodawał do tabeli2 rekord czyli tabela1.id = tabela2.tabela1_id

Proszę o sugestie które podejście jest właściwsze i wygodniejsze w późniejszym użyciu, ewentualnie o inne pomysły jak wy to z realizowaliście

Pozdrawiam
Go to the top of the page
+Quote Post
YaQzi
post 19.07.2011, 10:07:32
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 31
Dołączył: 12.10.2008
Skąd: WAT

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


Podejście drugie to przecież jeden do wielu. ;> W tabeli 2 da się wtedy przypiąć do kilku rekordów to samo id z tabeli 1. Chyba, że nałożysz Unika na tabela1_id tylko wtedy będziesz miał dwa indywidualne klucze dla każdego wiersza więc po co to. Jak masz powód żeby nie robić tutaj tylko jednej tabeli zamiast dwóch to tylko pierwsze podejście wchodzi w grę. Chociaż to też zależy od przeznaczenia tej relacji... Trochę za mało informacji żeby to jednoznacznie rozwiązać.

Ten post edytował YaQzi 19.07.2011, 10:10:14


--------------------
 Wszystkie wielkości świata nie są tyle warte, co dobra przyjaźń...
Go to the top of the page
+Quote Post
blum1
post 19.07.2011, 10:40:59
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 24.04.2007

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


To będą tabele produktów (z nazwą i 3 innymi polami) oraz tabela 2 ze szczegółowymi informacjami o produkcie (około 40 pól)
A robię to ze względów wydajnościowych ... będę dość mocno wykorzystywał tabele1 a do tabeli 2 będę odwoływał się tylko sporadycznie.
Dodam że tabele będą miały na starcie po około 100 tyś rekordów z tendencja wzrostową i boje się trochę o wydajność

Pozdrawiam
Go to the top of the page
+Quote Post
phpion
post 19.07.2011, 10:43:10
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Rozwiązanie pierwsze. Jedyne co bym zmienił to nazwę pola id w tabeli2 na tabela1_id - wówczas wiadomo, że jest to klucz obcy.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.06.2025 - 07:09