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.
GO TO FULL VERSION