2011-10-24 34 views

risposta

22

Le tabelle figlio e le tabelle padre sono solo normali tabelle del database, ma sono collegate in un modo descritto da una relazione padre-figlio.

In genere viene utilizzato per specificare dove il valore di una tabella si riferisce al valore in un'altra tabella (in genere una chiave primaria di un'altra tabella).

Ad esempio, immagina un articolo di notizie. Questo potrebbe essere rappresentato da un tavolo chiamato articles e ha campi per id, headline, body, published_date e author. Ma invece di inserire un nome nel campo author, potresti invece inserire il valore ID di un utente in una tabella separata, chiamata forse authors, con informazioni su autori come id, name e email.

Pertanto, se è necessario aggiornare il nome di un autore, è sufficiente farlo nella tabella authors (principale); perché la tabella articles (figlio) contiene solo l'ID del record author corrispondente.

Spero che questo ti aiuti a capire meglio.

+3

Se si hanno più articoli che puntano a un autore, la tabella 'authors' non sarebbe la tabella genitore? – RoToRa

+1

C'è qualche buon libro sul database per principianti, mi piacerebbe sapere, è molto confuso quando si cercano i libri per principianti in amazon. – shining

3

Un tavolo bambino tende ad essere quello in cui si ha una o più chiavi esterne che puntano in qualche altro tavolo (s). Si noti che una tabella figlio può essere essa stessa padre di un'altra tabella.

9

Si noti che è possibile avere relazioni che sembrano parent-child ma non lo sono, ad esempio quando vengono utilizzate le tabelle di ricerca. La distinzione è che in una vera relazione genitore-figlio, i record in genere non sono di loro stessi molto bene - sono record di dettaglio per il genitore e non sono utili senza le informazioni della tabella genitore. Una persona può possedere più auto nel database DMV, ma non vorrebbe record nella tabella CARS senza un record padre nella tabella OWNERS - sarebbero dati quasi inutili.

D'altra parte, se sto usando una tabella di ricerca per estendere un codice a qualcosa di più significativo, o per limitare l'immissione di dati a valori accettabili, allora il record "figlio" può ancora essere utile (può stare da solo) se il la tabella di ricerca è stata cancellata. Potrei comunque avere le informazioni sul sesso come "M" o "F" anche se non ho più la tabella di ricerca per estenderle a "Maschio" o "Femmina".

+1

Questa dovrebbe essere la risposta accettata, poiché è l'unica che spiega la differenza tra le relazioni 'lookup' e' parent-child'. –

0

Questi termini vengono utilizzati nelle relazioni del database.

per esempio u ha due tavoli,

1.Manifast

+-------------+------------------+------+-----+---------+----------------+ 
| Field  | Type    | Null | Key | Default | Extra   | 
+-------------+------------------+------+-----+---------+----------------+ 
| manifast_id | int(11) unsigned | NO | PRI | NULL | auto_increment | 
| description | text    | NO |  | NULL |    | 
| title  | text    | NO |  | NULL |    | 
+-------------+------------------+------+-----+---------+----------------+ 
  1. day_sequence
+-----------------+------------------+------+-----+---------+----------------+ 
| Field   | Type    | Null | Key | Default | Extra   | 
+-----------------+------------------+------+-----+---------+----------------+ 
| day_sequence_id | int(11) unsigned | NO | PRI | NULL | auto_increment | 
| day_number  | int(11)   | NO |  | NULL |    | 
| day_start  | int(11)   | NO |  | NULL |    | 
| manifast_id  | int(11)   | NO |  | NULL |    | 
+-----------------+------------------+------+-----+---------+----------------+ 

se u vuoi collegare questi due tavoli, devi usare t comanda con il seguente formato.

> ALTER TABLE child_table_name ADD FOREIGN KEY (P_ID) REFERENCES 
> parent_table_name (P_ID) 

e così diventa.

> ALTER TABLE day_sequence ADD CONSTRAINT fk_manifast FOREIGN KEY 
> (manifast_Id) REFERENCES manifast(manifast_Id); 

In sintesi, Tabella figlio è una tabella che ha chiave esterna, ed è collegato da tavolo altri. La tabella padre non ha chiavi esterne e si connette ad altre. [Nota: Questo ans è solo per il collegamento di due tavoli]

0

Parent - l'ente sulla "uno" (/ 1) lato di una relazione con un altro tavolo

Child - L'entità sul "più" (/ N/*) lato di una relazione con un'altra tabella

Problemi correlati