[sql] Come implementare relazioni one-to-one, one-to-many e many-to-many durante la progettazione di tabelle?


Answers

L'esempio è un po 'strano per me. Quindi, uno studente non può avere molti indirizzi? In realtà può. Penso ad un esempio reale, per i tre tipi di relazione, secondo l'articolo che ho scritto, come segue:

1: 1

Una relazione è una a una se e solo se un record della Tabella A è correlato a un massimo di un record in una tabella B.

Per stabilire una relazione uno a uno, la chiave primaria della Tabella B (con Nessun record orfano) deve essere la chiave secondaria della Tabella A (con i record orfani)

Esempio:

Create table Gov(GID number(6) primary key, 
Name varchar2(25), Address VarCHAR2(30), 
Term_begin date,Term_end Date); 


Create table State(SID number(3) primary key,
State_name varchar2(15), Population number(10),
SGID Number(4)  references GOV(GID), 
CONSTRAINT GOV_SDID UNIQUE (SGID));

insert into gov(GID, Name, Address, term_begin) 
values(110, 'Bob', '123 any st', '1-Jan-2009');

insert into state values(111, 'Virginia', 
2000000, 110);

1: M

Una relazione è da uno a Molti se e solo se un record della Tabella A è correlato a uno o più readen in una tabella B. Tuttavia un record nella tabella B non può essere correlato a più un record nella tabella A.

Per stabilire una relazione da uno a molti, la chiave primaria della Tabella A (la tabella uno) deve essere la chiave secondaria della Tabella B (la tabella Molte).

create table vendor1 ( vendor_no    number(4) primary key,
 name varchar2(20),  address varchar2(20),  city        varchar2(15),  st varchar2(2),  zip varchar2(10),  contact  varchar2(16),  phone_no varchar2(12),  status  varchar2(8),
 stamp_date     date);

create table inventory1 ( item   varchar2(6) primary key,
 description  varchar2(30),  quantity_on_hand number(4) not null,
 vendor_no   number(2) references vendor1(vendor_no),
 reorder_qty  number(3) not null );

Una relazione è da molti a molti se e solo se un record della tabella A è correlato a uno o più record in una tabella B e viceversa.

Per stabilire una relazione da molti a molti, crea una terza tabella chiamata "Relazione" che avrà le chiavi primarie di entrambe le tabelle A e B.

Create table Class (ClsID varchar2(10) primary Key, 
    title Varchar2(30),
    Instructor Varchar2(30), 
    Day Varchar2(15), 
    time Varchar2(10));

Create table Student (StudID varchar2(15) primary Key, 
    Name Varchar2(35),
    Major Varchar2(35), 
    Classyr Varchar2(10), 
    Status  Varchar2(10));  

Create table Stud_class (studid Varchar2 (15) not null,
ClsId varchar2 (14) not null,
Foreign key (Studid) references Student(Studid), 
Foreign key (ClsId) references Class(ClsID),
UNIQUE (Studid,ClsID));
Question

Qualcuno può spiegare come implementare relazioni one-to-one, one-to-many e many-to-many durante la progettazione di tabelle con alcuni esempi?






Related