Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apakah referensi melingkar dapat diterima dalam database?

Pertimbangkan kota dan negara bagian. Setiap kota ada di dalam negara bagian. Setiap negara bagian memiliki ibu kota.

CREATE TABLE city (
  city  VARCHAR(32),
  state VARCHAR(32) NOT NULL,
  PRIMARY KEY (city),
  FOREIGN KEY (state) REFERENCES state (state)
);

CREATE TABLE state (
  state VARCHAR(32),
  capital_city VARCHAR(32),
  PRIMARY KEY (state),
  FOREIGN KEY (capital_city) REFERENCES city (city)
);

Masalah pertama - Anda tidak dapat membuat tabel ini seperti yang ditunjukkan, karena kunci asing tidak dapat mereferensikan kolom dalam tabel yang belum (belum) ada. Solusinya adalah membuatnya tanpa kunci asing, lalu tambahkan kunci asing setelahnya.

Masalah kedua - Anda tidak dapat menyisipkan baris ke salah satu tabel, karena setiap sisipan akan memerlukan baris yang sudah ada sebelumnya di tabel lain. Solusinya adalah mengatur salah satu kolom kunci asing menjadi NULL, dan memasukkan data itu dalam dua fase. misalnya

--Create state record
INSERT INTO state (state, capital_city) VALUES ('Florida', NULL);

--Create various city records
INSERT INTO city (city, state) VALUES ('Miami', 'Florida');
INSERT INTO city (city, state) VALUES ('Tallahassee', 'Florida');
INSERT INTO city (city, state) VALUES ('Orlando', 'Florida');

--Set one of the cities as the capital
UPDATE state SET capital_city = 'Tallahassee' WHERE state = 'Florida';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah mungkin untuk menanyakan kolom yang dipisahkan koma untuk nilai tertentu?

  2. Fungsi Datetime Oracle (Daftar Lengkap)

  3. Bisakah Anda PILIH semuanya, tetapi 1 atau 2 bidang, tanpa kram penulis?

  4. Oracle Pl/SQL:Loop melalui node XMLTYPE

  5. ORA-06508:PL/SQL:tidak dapat menemukan unit program yang dipanggil