blum1
19.07.2011, 09:48:54
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
YaQzi
19.07.2011, 10:07:32
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ć.
blum1
19.07.2011, 10:40:59
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
phpion
19.07.2011, 10:43:10
Rozwiązanie pierwsze. Jedyne co bym zmienił to nazwę pola id w tabeli2 na tabela1_id - wówczas wiadomo, że jest to klucz obcy.
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.