2010-10-28 14 views
11

Quando qualcuno fa riferimento a una relazione in un corso di database, che cosa significa?Che cos'è una relazione nella terminologia del database?

+16

significa che è il momento di andare a wikipedia http://en.wikipedia.org/wiki/Relation_(database) – Andrey

+1

Una relazione può essere rappresentata da una tabella nel database. Una relazione nel contesto della modellazione di un problema includerà i campi e possibilmente l'identificazione di campi che hanno relazioni con altre relazioni, – brumScouse

+1

Sopra il collegamento è rotto, è necessario includere il finale ')', che SO non sta facendo. –

risposta

15

Sorprendentemente, "relazione" nelle basi di dati "relazionali" non fa riferimento alla relazione di chiave esterna di una tabella a un'altra tra. "Una relazione è una struttura di dati che consiste in un'intestazione e in un insieme non ordinato di tuple che condividono lo stesso tipo", secondo Wikipedia allo 'Relation (database)'.

in SQL RDBMS (come MS SQL Server e le relazioni Oracle] tabelle sono permently memorizzate, in cui i nomi delle colonne definite nel dizionario dei dati costituiscono la "voce" e le righe sono i "tuple" della relazione.

Poi da una tabella, una query può restituire un rapporto diverso:

create table t (x number primary key, y number not null); 

Table created. 

SQL> insert into t values (1, 10); 

1 row created. 

SQL> insert into t values (2, 20); 

1 row created. 

SQL> select x from t; 

     X 
---------- 
     1 
     2 

select x from t restituito una relazione con un minor numero di colonne, tuple di un minor numero di elementi, rispetto alla tabella di base aveva E select x, y from t where x = 1 restituirà un rapporto con un minor numero di tuple. rispetto al tavolo base:

SQL> select x, y from t where x = 1; 

     X   Y 
---------- ---------- 
     1   10 

Un esempio utilizzando join interno:

SQL> create table s (x number primary key, words varchar2(100) not null); 

Table created. 

SQL> insert into s values (1, 'Hello World!'); 

1 row created. 

SQL> insert into s values (3, 'Will not show'); 

1 row created. 

SQL> select t.x, t.y, s.words 
    2 from t 
    3 inner join s 
    4  on t.x = s.x; 

     X   Y WORDS 
---------- ---------- --------------- 
     1   10 Hello World! 

Concettualmente, t inner join s on t.x = s.x passa attraverso le seguenti fasi:

  1. Prendere il prodotto cartesiano di s e t, che è quello di prendere ogni riga di s e combinarlo con ciascuna riga di t risultante in una tupla con dimensione di s * dimensione t tuple o righe, ciascuna con tutte le colonne da entrambi s e t tanto come i risultati di:

    SQL> select * from s, t;

     X WORDS     X   Y 
    

     3 Will not show   1   10 
        3 Will not show   2   20 
        1 Hello World!    1   10 
        1 Hello World!    2   20 
    

(O select * from s cross join t nella sintassi SQL-92) Dal prodotto cartesiano contenente quattro tuple/righe con quattro colonne on s.x = t.x taglia il tuple fino a uno, ancora con quattro colonne :

SQL> select * 
    2 from t 
    3 inner join s 
    4  on t.x = s.x; 

     X   Y   X WORDS 
---------- ---------- ---------- --------------- 
     1   10   1 Hello World! 

E select t.x, t.y, s.words rade una colonna fuori dalla relazione.

Nota: che sopra descrive un modello concettuale o logico di ciò che sta accadendo. I database vengono forniti con gli ottimizzatori di query progettati per fornire i risultati come se fossero stati seguiti tutti i passaggi logici, ma è possibile ignorare i passaggi, l'implementazione fisica del lavoro e utilizzare strutture fisiche di supporto, come gli indici, che non fanno parte del modello relazionale.

Le viste sono definizioni di relazioni che non memorizzano la relazione, ma definiscono una relazione basata su altre relazioni, eventualmente con tabelle in basso. (Tranne che per visioni materializzate, che precompongono e memorizzano una relazione basata su altre relazioni.)

+2

Un sacco di informazioni, ma a parte i primi due paragrafi non sono sicuro di cosa abbia a che fare con la risposta alla domanda :) – sqlvogel

+2

Ci stavo provando per dimostrare che, in SQL, una relazione è più di una semplice tabella. Le query restituiscono relazioni. E all'interno di una query, la matematica relazionale sta accadendo, con molti risultati intermedi, che essi stessi sono relazioni. –

+0

Potrebbe esserti d'aiuto se avessi avuto un esempio migliore. Le tue due istruzioni CREATE TABLE non sono variabili di relazione corrette perché non hanno le chiavi (e tutte le colonne consentono i null)! Le relazioni non hanno tuple duplicate. – sqlvogel

2

Ci sono finora quattro risposte qui e sono tutte uguali e tutte sbagliate. Il termine "relazionale" si riferisce al fatto che i record in una tabella modellano una relazione matematica.

4

Posso vedere che altri rispondenti ti stanno dando definizioni rigorose di ciò che può essere veramente chiamato una "relazione" e non discuto la loro correttezza. Nell'uso comune, tuttavia, quando qualcuno fa riferimento a una "relazione" in un corso di database, si riferisce a un insieme di dati tabellare permanentemente memorizzato nel database (una tabella) o derivato da tabelle in base a una descrizione matematica (una vista o un risultato della query).

0

Praticità, una "relazione" nel modello relazionale può essere considerata una "tabella" nei prodotti RDBMS effettivi (Oracle, SQL Server, MySQL, ecc.) E "Tuple" in una relazione può anche essere considerata come "Righe" "o" Record "in una tabella. L'unica differenza tra loro è che Relation è un insieme di tuple e Table è un sacco di record. Come insieme, la relazione non consente di duplicare elementi (tuple) e tutte le tuple in essa contenute non sono ordinate, ma i record nella tabella possono essere ripetuti e sono sempre in una sequenza particolare sia per la memoria fisica che per la visualizzazione leggibile dall'uomo.

E ci sono due termini simili che spesso causano confusione e incomprensioni nell'area del database. Si prega di notare loro: la "relazione" nel modello E/R e la "relazione" nel modello relazionale è assolutamente diversa. Quando si converte un modello E/R in un modello relazionale, entrambe le entità e le relazioni nel primo sono rappresentate (with a little different structure) come relazioni (tabelle) nel secondo. E l'associazione ("riferimento" o "relazione" anche da utilizzare) tra le tabelle, in realtà è nota come chiave esterna, è ancora diversa con la relazione tra entità.

Più precisamente, è possibile che si desideri distinguere una relazione e una variabile di relazione (relvar). Una relazione è una struttura astratta che contiene un insieme di attributi e un relvar è lo stato del set di dati in un particolare momento di questa relazione. Il primo può essere considerato come la definizione della tabella con colonne e il secondo è il set di dati in questa tabella. (Pensate Tipo vs variabile in C o in qualsiasi altro linguaggio di programmazione procedurale e Classe vs Oggetto in OOP.)

seguito sono termini tra la teoria relazione e la pratica database corrispondente:

Relation    <--> Table 
Tuple    <--> Record, Row 
Attribute   <--> Column, Field 
Domain of attribute <--> Datatype of column 
0

Una relazione è una tabella, che è un insieme di dati. Una tabella è il risultato di una query.

Perché una tabella è chiamata relazione? In breve, perché tutti i valori nella tabella possono essere definiti da una relazione nel senso della teoria degli insiemi.

Una tabella contiene un set di dati. Tutti gli elementi di un insieme sono definiti da una relazione. Nella teoria degli insiemi, le relazioni sono spesso indicate con xRy, dove x è correlato a dalla relazione R.Ad esempio, (2) R (-2) dove la relazione R è x è il negativo di . L'insieme di tutti i numeri negativi è definito da questa relazione R, in cui il dominio è tutti numeri positivi e l'intervallo è tutti numeri negativi.

Potremmo anche avere la relazione binaria: ('Boston') R (American Cities) dove la relazione R è definito come x può essere definita da y.

Potremmo anche avere la relazione binaria: ('Mango') R (Fruit) dove la relazione R è definita come x è questo tipo di alimento. E così, x è un valore nel dominio (l'input) di una relazione e è un valore nell'intervallo (l'uscita) di una relazione.

Una tabella di database di tutti i cittadini di New York può essere rappresentata come

Citizen(Social_Security_Number, Name, Home_Address). 

Qui, la relazione nel senso della teoria degli insiemi, è xRy dove la relazione R è definito come x è un cittadino che vive in y, dove definiamo y come New York.

Una query può anche restituire una nuova relazione (ovvero restituisce un insieme di dati definiti da una nuova relazione). Se vogliamo interrogare il database per trovare tutti i cittadini che hanno il cognome, 'Perrone', definiremo il nostro set di risultati basato su un'altra relazione xRy, ovvero x è un cittadino che vive a New York con il cognome, , dove definiamo come "Perrone".

4

In parole semplici, una "relazione" è una tabella, l'intestazione è la definizione della struttura e le righe sono i dati.

0

Una relazione è un insieme di tuple uniche, in cui una tupla è costituita da un valore ID entità che è RELATIVO A (identifica) uno o più attributi. NON è un tavolo, che è un livello completamente diverso (implementazione piuttosto che design).

Non riesco a rendere questa definizione più breve senza lasciare qualcosa, ma è così breve da essere semplicemente un elenco di termini. Se faccio più a lungo, io probabilmente confondere il punto principale che è: "cosa significa la parola relazione significa in questo contesto Ciò che viene legato?"

+0

In realtà, quello che ho detto non è vero. Le tuple non hanno bisogno di avere una chiave (o un modo per localizzarle?) Avendo provato a rispondere a questa domanda in modo che potessi spiegarlo ai miei studenti, sono costretto a concludere che la teoria non ha assolutamente nulla a che fare con i "dati" in il solito senso. Forse la teoria dell'informazione sarebbe stata una base migliore per i sistemi di dati, piuttosto che per la matematica? Le applicazioni informatiche sono notevolmente diverse dalla fisica, la matematica è stata creata per modellizzare e il suo bambino, Engineering. Penso che i dati non siano mai stati concepiti come "veri", deve essere _utile_. – SRowe

Problemi correlati