![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
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źń... • |
|
|
![]()
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 |
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.06.2025 - 07:09 |