CodeGym /Kursus Jawa /All lectures for JV purposes /Ketergantungan antarane tabel ing basis data

Ketergantungan antarane tabel ing basis data

All lectures for JV purposes
tingkat , wulangan
kasedhiya

4.1 Pambuka

Kanthi ngowahi tabel database dadi tabel biasa, sampeyan saiki bisa nganalisa hubungane. Jumlah unsur sing sesambungan antarane rong tabel sing gegandhengan diarani kardinalitas. Cardinality mbantu sampeyan ngontrol sepira efisien sampeyan pamisah data dadi tabel.

Secara teoritis, kabeh entitas bisa njaga hubungan siji lan sijine, nanging ing praktik, ana telung jinis hubungan antarane entitas:

  • Siji kanggo siji
  • Siji nganti akeh
  • akeh nganti akeh

4.2 Komunikasi siji-kanggo-siji

Yen mung ana siji conto entitas A kanggo saben conto entitas B, padha diarani duwe hubungan siji-kanggo-siji (asring dilambangake minangka "1:1"). Ing diagram ER, hubungan kasebut dituduhake kanthi garis kanthi garis cilik ing saben pungkasan:

Hubungan 1: 1 umume nuduhake yen, kajaba sampeyan duwe alasan sing apik kanggo njaga kapisah, data loro tabel paling apik digabung dadi siji.

Nanging, ing sawetara kahanan iku cukup kanggo nggunakake tabel karo 1:1 sesambetan. Yen tabel sampeyan duwe lapangan kanthi data opsional, kayata deskripsi, lan ing pirang-pirang kasus kosong, mesthine kanggo mindhah kabeh deskripsi menyang tabel sing kapisah, sing bakal ngidini sampeyan nyisihake kesenjangan sing kerep lan nambah efisiensi database sampeyan. .

Banjur, kanggo nggawe peta data kanthi bener, sampeyan kudu nyakup paling ora siji kolom sing padha ing saben tabel (paling apik milih kunci utama kanggo iki).

4.3 Hubungan siji-kanggo-akeh

Hubungan jinis iki kedadeyan nalika rekaman ing siji tabel digandhengake karo sawetara entitas ing liyane. Contone, pelanggan sing padha bisa nggawe macem-macem pesenan, utawa pengunjung perpustakaan bisa nyilih sawetara buku ing siji kunjungan. Hubungan siji-kanggo-akeh (utawa 1:M kanggo cendhak) digambarake ing diagram nggunakake notasi gagak, kaya sing dituduhake ing conto ing ngisor iki:

Kanggo ngetrapake hubungan 1:M nalika ngrancang database, cukup nambahake kunci utama saka tabel "siji" minangka atribut menyang tabel "akeh". Yen kunci utama ana ing tabel liyane, diarani "kunci asing". Tabel "siji" dianggep minangka meja induk, dene tabel "akeh" dianggep minangka meja anak.

4.4 Hubungan akeh-kanggo-akeh

Nalika sawetara entitas ing siji tabel bisa disambungake menyang sawetara entitas ing liyane, padha dianggep duwe akeh-kanggo-akeh (utawa M: M) sesambetan. Contone, hubungan kasebut ana ing antarane siswa lan kelas, amarga saben siswa bisa mlebu sawetara kelas sing beda-beda, lan, kanthi mangkono, akeh siswa bisa teka ing saben kelas.

Ing diagram ER, jinis hubungan iki ditampilake kaya ing ngisor iki:

Sayange, ora bisa langsung ngleksanakake hubungan kasebut ing basis data. Mulane, kudu dipérang dadi rong hubungan siji-kanggo-akeh.

Kanggo nindakake iki, sampeyan kudu nggawe entitas anyar ing antarane rong tabel. Yen hubungan M:M ditetepake antarane dodolan lan produk, entitas anyar bisa kasebut "produk sing didol" amarga bakal makili isi saben dodolan.

Kanthi "barang sing didol" lan tabel "sales" lan tabel "barang" bakal disambungake kanthi jinis 1:M. Ing macem-macem model, entitas penengah kasebut diarani beda - "meja nyambung", "entitas asosiatif" utawa "tabel simpul".

Saben entri tabel link nyambungake rong entitas sing beda saka tabel jejer (lan bisa uga ngemot informasi tambahan). Contone, tabel link antarane siswa lan kelas bisa katon kaya iki:

4.5 Wajib utawa ora?

Pendekatan liyane kanggo analisis link yaiku kanggo nemtokake endi entitas sing disambungake minangka prasyarat kanggo anane entitas liya. Sisih link opsional ditandhani karo bunder ing gedhe.

Contone, supaya negara duwe wakil dhewe ing PBB, iku kudu ana ing peta donya, nanging statement kanggo nalisir bakal palsu:

Loro entitas bisa saling gumantung (yaiku, siji ora bisa ana tanpa liyane).

Pranala rekursif

Kadhangkala tabel bisa ngrujuk dhewe. Contone, tabel karyawan bisa uga duwe atribut "manajer" sing bakal nuduhake kita menyang karyawan liyane ing meja sing padha. Iki minangka hubungan rekursif.

Sambungan ekstra

Tautan dianggep keluwih yen ditulis luwih saka sepisan. Minangka aturan, salah siji saka wong-wong mau bisa dibusak tanpa kelangan informasi penting. Contone, yen entitas "murid" disambungake menyang entitas "guru" ora mung langsung, nanging uga ora langsung liwat "kelas", iku ndadekake pangertèn kanggo mbusak hubungan antarane entitas "murid" lan "guru". Kaputusan iki dibenerake kanthi kasunyatan manawa bisa menehi siswa menyang guru mung liwat kelas.

4.6 Integritas referensial data

Nalika ngganti kunci utama lan manca, siji kudu mirsani aspek kayata integritas referensial data . Ide utama yaiku njaga rong tabel ing basis data sing nyimpen data sing padha.

Integritas data nggambarake hubungan sing dibangun kanthi bener ing antarane tabel kanthi pranala sing bener. Ing kasus apa integritas data bisa dilanggar:

  • Anomali pambusakan . Kedadeyan nalika baris dibusak saka tabel utama. Ing kasus iki, tombol manca saka tabel gumantung terus kanggo deleng baris dibusak saka tabel master.
  • Anomali insersi . Kedadeyan nalika baris dilebokake menyang tabel gumantung. Ing kasus iki, tombol manca saka tabel gumantung ora cocog karo tombol utami saka sembarang larik saka tabel master.
  • Nganyari anomali. Kanthi anomali kasebut, sawetara larik saka siji tabel bisa ngemot data sing ana ing obyek sing padha. Yen sampeyan ngganti data ing siji baris, padha bisa teka menyang konflik karo data saka baris liyane.

Anomali pambusakan

Kanggo ngatasi anomali pambusakan, kunci asing kudu disetel menyang salah siji saka rong kendala:

Yen larik saka tabel gumantung kudu mbutuhake larik saka tabel master, banjur tombol manca disetel kanggo cascade delete. Yaiku, nalika baris dibusak saka tabel master, baris sing gegandhengan bakal dibusak saka tabel gumantung.

Yen larik saka tabel gumantung ora ana hubungane karo larik saka tabel utama (yaiku, hubungan kasebut opsional), banjur tombol manca disetel menyang NULL nalika baris sing gegandhengan dibusak saka tabel utama. Kolom kunci asing kudu nullable.

Anomali insersi

Kanggo mutusake masalah anomali insert nalika nambah menyang tabel data gumantung, kolom sing makili kunci asing kudu nullable. Lan kanthi mangkono, yen obyek sing ditambahake ora ana hubungane karo tabel utama, banjur kolom kunci manca bakal duwe nilai NULL.

Nganyari anomali

Kanggo ngatasi masalah anomali nganyari, normalisasi ditrapake, sing wis dibahas sadurunge.

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION